login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Explode cookie

Offline sasser - 23/01/2007 23:16 (laatste wijziging 23/01/2007 23:28)
Avatar van sasserPHP interesse Beste Sitemasters,
Ik heb probleem, heb een cookie die er als volgt uitziet:
  1. | 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.
  1. $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
Offline Rens - 23/01/2007 23:19
Avatar van Rens Gouden medaille

Crew algemeen
Door die array heen lopen, en dan weer een explode er over heen.
Offline sasser - 23/01/2007 23:22 (laatste wijziging 23/01/2007 23:22)
Avatar van sasser PHP interesse Dit heb ik daarna:
  1. $totaal_pakket_idees = sizeof($pakket_idees);
  2. for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
  3. $pakketnaam[] = explode(" <> ", $pakket_idees[$b_tmp]);
  4. }

maar
  1. echo($pakketnaam[0]);
  2. echo($pakketnaam[1]);
  3. echo($pakketnaam[2]);
  4. echo($pakketnaam[3]);
  5. echo($pakketnaam[4]);
  6. echo($pakketnaam[5]);
  7. echo($pakketnaam[6]);
  8. echo($pakketnaam[7]);

geven niets weer. 
Offline vinTage - 23/01/2007 23:32 (laatste wijziging 23/01/2007 23:33)
Avatar van vinTage Nieuw lid
Citaat:
$totaal_pakket_idees = sizeof($pakket_idees);


sizeof ?
Dat moet count zijn zeker ?
Offline sasser - 23/01/2007 23:34
Avatar van sasser PHP interesse zelfde toch? Maar dat is het niet hij laat wel alles langs komen geeft alleen array array array array enz weer..
Offline vinTage - 23/01/2007 23:39 (laatste wijziging 23/01/2007 23:42)
Avatar van vinTage Nieuw lid Dat sizeof hetzelfde was wist ik niet 

En zo ?
  1. <?
  2. $pakketnaam = array();
  3. $totaal_pakket_idees = sizeof($pakket_idees);
  4. for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
  5. $pakketnaam[] = explode("<>", $pakket_idees[$b_tmp]);
  6. }


edit, code ge-edit (al weet ik niet of het er beter op werd) 
Offline sasser - 23/01/2007 23:54
Avatar van sasser PHP interesse Nee, maakt geen verschil. 
Offline Ibrahim - 24/01/2007 00:11 (laatste wijziging 24/01/2007 00:12)
Avatar van Ibrahim PHP expert
  1. <?php
  2. $scheiding = array('soort1' => '|', 'soort2' => '/|\\', 'soort3' => '<>');
  3.  
  4. foreach($scheiding as $soort => $scheidingsteken)
  5. {
  6. $info[ $soort ] = explode( $scheidingsteken, $koekje );
  7. }
  8. ?>


dit eens proberen 
Offline Gerard - 24/01/2007 00:22
Avatar van Gerard Ouwe rakker Als je zelf deze oplossing hebt gemaakt is het eens een idee om te kijken naar PHP.net: serialize. Daarbij kan je bijvoorbeeld een object of een array opslaan in de vorm van een string. Met behulp van PHP.net: unserialize kan je dan de array weer terugbrengen in zijn originele vorm.

Natuurlijk zal je dan wel weer een extra controle moeten inbouwen dat men geen input erin gooit die gevaarlijk is, maar dat moet je nu ook al doen dus dat moet geen probleem zijn. 
Offline vinTage - 24/01/2007 00:33
Avatar van vinTage Nieuw lid Mischien zijn die posts hierboven veel nuttiger, maar ik heb ondertussen dit gedaan:
  1. <?php
  2. $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 /|\ ';
  3.  
  4. $pakket_idees = explode(" | ", $cookie);
  5. $totaal_pakket_idees = count($pakket_idees);
  6.  
  7. for($b_tmp=0; $b_tmp<=$totaal_pakket_idees; $b_tmp++){
  8. $pakketnaam[] = explode(" <> ", $pakket_idees[$b_tmp]);
  9.  
  10. $aantalFotos = count($pakketnaam[$b_tmp]);
  11.  
  12. for($i=0; $i<=$aantalFotos; $i++){
  13. $pakketinhoud[] = explode(" <> ", $pakketnaam[$i]);
  14. }
  15. }
  16.  
  17.  
  18. //tonen
  19. for($aap=0; $aap<=$totaal_pakket_idees; $aap++){
  20. echo '<br /><strong>'.$pakketnaam[$aap][0].'</strong><br />';
  21. echo $pakketnaam[$aap][1].'<br />';
  22. }
  23. ?>


Mischien dat je er iets aan hebt (ik ben ook geen array held )
Offline Thomas - 24/01/2007 10:34 (laatste wijziging 24/01/2007 12:42)
Avatar van Thomas 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:
  1. <?php
  2. echo "<pre>".print_r($je_array, 1)."</pre>";
  3. ?>
Offline sasser - 24/01/2007 14:18 (laatste wijziging 24/01/2007 14:18)
Avatar van sasser PHP interesse Heel erg bedankt allemaal dat gedeelte werkt nu perfect.
Nu kom ik bij volgende probleem:
  1. <? for($aap=0; $aap<=$totaal_pakket_idees; $aap++){
  2. $bla[] = explode("_", $pakketnaam[$aap][0]);
  3. $go = $bla[$aap][0];
  4. if($go == 'a'){
  5. $bedrag = $bedrag + $prijs[a];
  6. }
  7. if($go == 'b'){
  8. $bedrag = $bedrag + $prijs[b];
  9. }
  10. if($go == 'c'){
  11. $bedrag = $bedrag + $prijs[c];
  12. }
  13. if($go == 'd'){
  14. $bedrag = $bedrag + $prijs[d];
  15. }
  16. }
  17. $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. 
Offline Kr4nKz1n - 24/01/2007 14:22 (laatste wijziging 24/01/2007 14:30)
Avatar van Kr4nKz1n Onbekend
  1. <?
  2. //Gebruik de volgende regel. Gebruik ook ' (quotes).
  3. $bedrag += $prijs['a'];


Tot zover ik zie zou ik het zo doen:
  1. <?
  2. for($aap = 0; $aap <= $totaal_pakket_idees; $aap++)
  3. {
  4. $bla = explode("_", $pakketnaam[$aap][0]);
  5. if($bla[$aap][0] == 'a')
  6. {
  7. $bedrag += $prijs['a'];
  8. }
  9. if($bla[$aap][0] == 'b')
  10. {
  11. $bedrag += $prijs['b'];
  12. }
  13. if($bla[$aap][0] == 'c')
  14. {
  15. $bedrag += $prijs['c'];
  16. }
  17. if($bla[$aap][0] == 'd')
  18. {
  19. $bedrag += $prijs['d'];
  20. }
  21. }
  22. ?>


Probeer ook even:
  1. <?
  2. for($aap = 0; $aap <= $totaal_pakket_idees; $aap++)
  3. {
  4. $types = array("a", "b", "c", "d");
  5. $bla = explode("_", $pakketnaam[$aap][0]);
  6. if(In_Array($bla[$aap][0],$types))
  7. {
  8. $bedrag += $prijs[$bla[$aap][0]];
  9. }
  10. }
  11. ?>

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.
Offline sasser - 24/01/2007 14:36 (laatste wijziging 24/01/2007 19:32)
Avatar van sasser 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.443s