Explode cookie
sasser - 23/01/2007 23:16 (laatste wijziging 23/01/2007 23:28)
PHP interesse
Beste Sitemasters,
Ik heb probleem, heb een cookie die er als volgt uitziet:
| a_1 <> 1-foto20301 /|\ 1-foto10151 /|\ 1-foto10152 /|\ 1-foto10153 /|\ 1-foto10154 /|\ | d_2 <> 2-foto20301 /|\ 2-foto20302 /|\ 2-foto20303 /|\ 2-foto13181 /|\ 2-foto13182 /|\ 2-foto10151 /|\ 2-foto10152 /|\ 2-foto10153 /|\ 2-foto10154 /|\ | b_3 <> 3-foto20301 /|\ 3-foto20302 /|\ 3-foto20303 /|\ | c_1 <> 4-foto20301 /|\ 4-foto20302 /|\ 4-foto13181 /|\ 4-foto10151 /|\ 4-foto10152 /|\ 4-foto10153 /|\ 4-foto10154 /|\ 4-foto10155 /|\ 4-foto10156 /|\ | c_2 <> 5-foto20301 /|\ 5-foto20302 /|\ 5-foto13181 /|\ 5-foto13182 /|\ 5-foto13183 /|\ 5-foto10151 /|\
| a_1 <> 1 - foto20301 /| \ 1 - foto10151 /| \ 1 - foto10152 /| \ 1 - foto10153 /| \ 1 - foto10154 /| \ | d_2 <> 2 - foto20301 /| \ 2 - foto20302 /| \ 2 - foto20303 /| \ 2 - foto13181 /| \ 2 - foto13182 /| \ 2 - foto10151 /| \ 2 - foto10152 /| \ 2 - foto10153 /| \ 2 - foto10154 /| \ | b_3 <> 3 - foto20301 /| \ 3 - foto20302 /| \ 3 - foto20303 /| \ | c_1 <> 4 - foto20301 /| \ 4 - foto20302 /| \ 4 - foto13181 /| \ 4 - foto10151 /| \ 4 - foto10152 /| \ 4 - foto10153 /| \ 4 - foto10154 /| \ 4 - foto10155 /| \ 4 - foto10156 /| \ | c_2 <> 5 - foto20301 /| \ 5 - foto20302 /| \ 5 - foto13181 /| \ 5 - foto13182 /| \ 5 - foto13183 /| \ 5 - foto10151 /| \
Deze cookie word gemaakt, door een pakketten van een aantal fotos. Pakketten hebben een scheidings teken van " | "(zonder quotes) daarna pakket naam los van fotos door " <> " en als laatste fotos los van elkaar door " /|\ ". Weet dat het vaag uitziet maar is nou eenmaal zo , hoe kan ik alles mooi in arrays krijgen pakket namen fotos en pakketten in eigen array heb met explode en for veel geprobeerd maar leid alleen tot pakketten los te krijgen.
$pakket_idees = explode(" | ", $_COOKIE['pakketten_in_id']);
$pakket_idees = explode ( " | " , $_COOKIE [ 'pakketten_in_id' ] ) ;
Dat werkt maar bij de rest dan niet. Kan iemand mij helpen.
Alvast bedankt.
Sasser
13 antwoorden
Gesponsorde links
sasser - 23/01/2007 23:22 (laatste wijziging 23/01/2007 23:22)
PHP interesse
Dit heb ik daarna:
$totaal_pakket_idees = sizeof($pakket_idees);
for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
$pakketnaam[] = explode(" <> ", $pakket_idees[$b_tmp]);
}
$totaal_pakket_idees = sizeof ( $pakket_idees ) ; for ( $b_tmp = 0 ; $b_tmp <= $totaal_pakket_idees ; $b_tmp ++ ) {
$pakketnaam [ ] = explode ( " <> " , $pakket_idees [ $b_tmp ] ) ; }
maar
echo($pakketnaam[0]);
echo($pakketnaam[1]);
echo($pakketnaam[2]);
echo($pakketnaam[3]);
echo($pakketnaam[4]);
echo($pakketnaam[5]);
echo($pakketnaam[6]);
echo($pakketnaam[7]);
geven niets weer.
vinTage - 23/01/2007 23:32 (laatste wijziging 23/01/2007 23:33)
Nieuw lid
Citaat:
$totaal_pakket_idees = sizeof($pakket_idees);
sizeof ?
Dat moet count zijn zeker ?
sasser - 23/01/2007 23:34
PHP interesse
zelfde toch? Maar dat is het niet hij laat wel alles langs komen geeft alleen array array array array enz weer..
vinTage - 23/01/2007 23:39 (laatste wijziging 23/01/2007 23:42)
Nieuw lid
Dat sizeof hetzelfde was wist ik niet
En zo ?
<?
$pakketnaam = array();
$totaal_pakket_idees = sizeof($pakket_idees);
for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
$pakketnaam[] = explode("<>", $pakket_idees[$b_tmp]);
}
<?
$totaal_pakket_idees = sizeof ( $pakket_idees ) ; for ( $b_tmp = 0 ; $b_tmp <= $totaal_pakket_idees ; $b_tmp ++ ) {
$pakketnaam [ ] = explode ( "<>" , $pakket_idees [ $b_tmp ] ) ; }
edit, code ge-edit (al weet ik niet of het er beter op werd)
Ibrahim - 24/01/2007 00:11 (laatste wijziging 24/01/2007 00:12)
PHP expert
<?php
$scheiding = array('soort1' => '|', 'soort2' => '/|\\', 'soort3' => '<>');
foreach($scheiding as $soort => $scheidingsteken)
{
$info[ $soort ] = explode( $scheidingsteken, $koekje );
}
?>
<?php
$scheiding = array ( 'soort1' => '|' , 'soort2' => '/|\\' , 'soort3' => '<>' ) ;
foreach ( $scheiding as $soort => $scheidingsteken )
{
$info [ $soort ] = explode ( $scheidingsteken , $koekje ) ; }
?>
dit eens proberen
vinTage - 24/01/2007 00:33
Nieuw lid
Mischien zijn die posts hierboven veel nuttiger, maar ik heb ondertussen dit gedaan:
<?php
$cookie = '| a_1 <> 1-foto20301 /|\ 1-foto10151 /|\ 1-foto10152 /|\ 1-foto10153 /|\ 1-foto10154 /|\ | d_2 <> 2-foto20301 /|\ 2-foto20302 /|\ 2-foto20303 /|\ 2-foto13181 /|\ 2-foto13182 /|\ 2-foto10151 /|\ 2-foto10152 /|\ 2-foto10153 /|\ 2-foto10154 /|\ | b_3 <> 3-foto20301 /|\ 3-foto20302 /|\ 3-foto20303 /|\ | c_1 <> 4-foto20301 /|\ 4-foto20302 /|\ 4-foto13181 /|\ 4-foto10151 /|\ 4-foto10152 /|\ 4-foto10153 /|\ 4-foto10154 /|\ 4-foto10155 /|\ 4-foto10156 /|\ | c_2 <> 5-foto20301 /|\ 5-foto20302 /|\ 5-foto13181 /|\ 5-foto13182 /|\ 5-foto13183 /|\ 5-foto10151 /|\ ';
$pakket_idees = explode(" | ", $cookie);
$totaal_pakket_idees = count($pakket_idees);
for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
$pakketnaam[] = explode(" <> ", $pakket_idees[$b_tmp]);
$aantalFotos = count($pakketnaam[$b_tmp]);
for($i=0; $i<=$aantalFotos; $i++){
$pakketinhoud[] = explode(" <> ", $pakketnaam[$i]);
}
}
//tonen
for($aap=0; $aap<=$totaal_pakket_idees; $aap++){
echo '<br /><strong>'.$pakketnaam[$aap][0].'</strong><br />';
echo $pakketnaam[$aap][1].'<br />';
}
?>
<?php
$cookie = '| a_1 <> 1-foto20301 /|\ 1-foto10151 /|\ 1-foto10152 /|\ 1-foto10153 /|\ 1-foto10154 /|\ | d_2 <> 2-foto20301 /|\ 2-foto20302 /|\ 2-foto20303 /|\ 2-foto13181 /|\ 2-foto13182 /|\ 2-foto10151 /|\ 2-foto10152 /|\ 2-foto10153 /|\ 2-foto10154 /|\ | b_3 <> 3-foto20301 /|\ 3-foto20302 /|\ 3-foto20303 /|\ | c_1 <> 4-foto20301 /|\ 4-foto20302 /|\ 4-foto13181 /|\ 4-foto10151 /|\ 4-foto10152 /|\ 4-foto10153 /|\ 4-foto10154 /|\ 4-foto10155 /|\ 4-foto10156 /|\ | c_2 <> 5-foto20301 /|\ 5-foto20302 /|\ 5-foto13181 /|\ 5-foto13182 /|\ 5-foto13183 /|\ 5-foto10151 /|\ ' ;
$pakket_idees = explode ( " | " , $cookie ) ; $totaal_pakket_idees = count ( $pakket_idees ) ;
for ( $b_tmp = 0 ; $b_tmp <= $totaal_pakket_idees ; $b_tmp ++ ) {
$pakketnaam [ ] = explode ( " <> " , $pakket_idees [ $b_tmp ] ) ;
$aantalFotos = count ( $pakketnaam [ $b_tmp ] ) ;
for ( $i = 0 ; $i <= $aantalFotos ; $i ++ ) {
$pakketinhoud [ ] = explode ( " <> " , $pakketnaam [ $i ] ) ; }
}
//tonen
for ( $aap = 0 ; $aap <= $totaal_pakket_idees ; $aap ++ ) {
echo '<br /><strong>' . $pakketnaam [ $aap ] [ 0 ] . '</strong><br />' ; echo $pakketnaam [ $aap ] [ 1 ] . '<br />' ; }
?>
Mischien dat je er iets aan hebt (ik ben ook geen array held )
Thomas - 24/01/2007 10:34 (laatste wijziging 24/01/2007 12:42)
Moderator
^ What Proximus said ^
Als je die cookies zelf bakt zou ik maar eens gaan nadenken over een nette datastructuur.
Edit: Citaat:
zelfde toch? Maar dat is het niet hij laat wel alles langs komen geeft alleen array array array array enz weer..
Dat klopt, want op elke index staat weer een array.
Als je (geneste) arrays in "human readable form" wilt afdrukken:
<?php
echo "<pre>".print_r($je_array, 1)."</pre>";
?>
sasser - 24/01/2007 14:18 (laatste wijziging 24/01/2007 14:18)
PHP interesse
Heel erg bedankt allemaal dat gedeelte werkt nu perfect.
Nu kom ik bij volgende probleem:
<? for($aap=0; $aap<=$totaal_pakket_idees; $aap++){
$bla[] = explode("_", $pakketnaam[$aap][0]);
$go = $bla[$aap][0];
if($go == 'a'){
$bedrag = $bedrag + $prijs[a];
}
if($go == 'b'){
$bedrag = $bedrag + $prijs[b];
}
if($go == 'c'){
$bedrag = $bedrag + $prijs[c];
}
if($go == 'd'){
$bedrag = $bedrag + $prijs[d];
}
}
$prijs_totaal[pakketten] = $bedrag; ?>
<? for ( $aap = 0 ; $aap <= $totaal_pakket_idees ; $aap ++ ) {
$bla [ ] = explode ( "_" , $pakketnaam [ $aap ] [ 0 ] ) ; $go = $bla [ $aap ] [ 0 ] ;
if ( $go == 'a' ) {
$bedrag = $bedrag + $prijs [ a] ;
}
if ( $go == 'b' ) {
$bedrag = $bedrag + $prijs [ b] ;
}
if ( $go == 'c' ) {
$bedrag = $bedrag + $prijs [ c] ;
}
if ( $go == 'd' ) {
$bedrag = $bedrag + $prijs [ d] ;
}
}
$prijs_totaal [ pakketten] = $bedrag ; ?>
nu geeft $prijs_totaal[pakketten] een optel som van alle pakketten weer maar - het eerste bedrag wat maar dat moet niet moet alle pakketten gewoon optellen.
Kr4nKz1n - 24/01/2007 14:22 (laatste wijziging 24/01/2007 14:30)
Onbekend
<?
//Gebruik de volgende regel. Gebruik ook ' (quotes).
$bedrag += $prijs['a'];
<?
//Gebruik de volgende regel. Gebruik ook ' (quotes).
$bedrag += $prijs [ 'a' ] ;
Tot zover ik zie zou ik het zo doen:
<?
for($aap = 0; $aap <= $totaal_pakket_idees; $aap++)
{
$bla = explode("_", $pakketnaam[$aap][0]);
if($bla[$aap][0] == 'a')
{
$bedrag += $prijs['a'];
}
if($bla[$aap][0] == 'b')
{
$bedrag += $prijs['b'];
}
if($bla[$aap][0] == 'c')
{
$bedrag += $prijs['c'];
}
if($bla[$aap][0] == 'd')
{
$bedrag += $prijs['d'];
}
}
?>
<?
for ( $aap = 0 ; $aap <= $totaal_pakket_idees ; $aap ++ )
{
$bla = explode ( "_" , $pakketnaam [ $aap ] [ 0 ] ) ; if ( $bla [ $aap ] [ 0 ] == 'a' )
{
$bedrag += $prijs [ 'a' ] ;
}
if ( $bla [ $aap ] [ 0 ] == 'b' )
{
$bedrag += $prijs [ 'b' ] ;
}
if ( $bla [ $aap ] [ 0 ] == 'c' )
{
$bedrag += $prijs [ 'c' ] ;
}
if ( $bla [ $aap ] [ 0 ] == 'd' )
{
$bedrag += $prijs [ 'd' ] ;
}
}
?>
Probeer ook even:
<?
for($aap = 0; $aap <= $totaal_pakket_idees; $aap++)
{
$types = array("a", "b", "c", "d");
$bla = explode("_", $pakketnaam[$aap][0]);
if(In_Array($bla[$aap][0],$types))
{
$bedrag += $prijs[$bla[$aap][0]];
}
}
?>
<?
for ( $aap = 0 ; $aap <= $totaal_pakket_idees ; $aap ++ )
{
$types = array ( "a" , "b" , "c" , "d" ) ; $bla = explode ( "_" , $pakketnaam [ $aap ] [ 0 ] ) ; {
$bedrag += $prijs [ $bla [ $aap ] [ 0 ] ] ;
}
}
?>
Kan zijn dat het een error geeft ivm die [ ], al eens eerder gehad.
-Edit-
Graag even uitleg over $bla[$aap][0] , maar je dat zo doet.
Kan zijn dat ik weer lig te slapen, maar ik snap dat op dit moment even niet.
sasser - 24/01/2007 14:36 (laatste wijziging 24/01/2007 19:32)
PHP interesse
$bla[$aap][0] geeft a, b, c of d weer ik kan nu ff niet kijken of het werkt maar, het is echt de eerste die niet werkt dat is vage ervan rest doet het gewoon.
edit:
Het werkt dus niet.:(
Gesponsorde links
Dit onderwerp is gesloten .