login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Meerdere options opslaan?

Offline Chupskie - 18/07/2006 11:32 (laatste wijziging 18/07/2006 11:44)
Avatar van ChupskieMySQL beginner Klanten kun op de site die ik nu aan t bouwen ben, extra artikels selecteren. Via een dropdown wordt het aantal geselecteerd, en dan wordt automatisch door deze code de pagina gerefresht, en het aantal opgeslagen in de link:

code:
  1. <SCRIPT language=JavaScript>
  2. function reload(form){
  3. var val=form.aantalextra.options[form.aantalextra.options.selectedIndex].value;
  4. self.location='index.php?hcat=<?php echo $hhcat; ?>&subcat=<?php echo $sscat; ?>&cnfId=<?php echo $ccnfId; ?>&extra=' + val ;
  5. }
  6. </script>

link: index.php?hcat=1&subcat=1&cnfId=123&extra=13245-2

Als ze daarna nog een extra artikel bestellen, gaat het mis, dan vervangt hij de bovenstaande link, door het artikelnr en het aantal wat nu geselecteerd is?

Is het niet mogelijk, dat dit dan zo wordt:
index.php?hcat=1&subcat=1&cnfId=123&extra=13245-2&extra=13453-7

Dat hij per extra product er op de een of andere manier die zo ook opslaat in de link?

Alvast hartelijke bedankt..!

10 antwoorden

Gesponsorde links
Offline ikkedikke - 18/07/2006 12:02 (laatste wijziging 18/07/2006 12:02)
Avatar van ikkedikke PHP expert je kan het script een array terug laten geven.
  1. <?
  2. $sExtra = '';
  3. foreach($_GET['extra'] as $extraItem)
  4. {
  5. $sExtra .= '&extra[]='.urlencode($extraItem);
  6. }
  7. ?>
  8. <SCRIPT language=JavaScript>
  9. function reload(form)
  10. {
  11. var val=form.aantalextra.options[form.aantalextra.options.selectedIndex].value;
  12. self.location='index.php?hcat=<?php echo $hhcat; ?>&subcat=<?php echo $sscat; ?>&cnfId=<?php echo $ccnfId.$sExtra?>&extra[]=' + val ;
  13. }
  14. </script>
Offline Chupskie - 18/07/2006 12:11 (laatste wijziging 18/07/2006 12:44)
Avatar van Chupskie MySQL beginner Ik krijg nou wel een aantal meldingen, van de foreach en van de array, dat hij ze niet goed opslaat, maar hij zet ze wel al in de link:

&extra[]=12927-2&extra[]=12844-2&extra[]=12844-3

Dus ik ben al een heel eind, kga ff verder prutsen, ik laat zo wel horen, of het is gelukt! Alvast bedankt tot zover!

edit: de fouten zijn weg, maar het ophalen, gaat nog niet 100% 

  1. <?php
  2. // Staat het product al in de link
  3. $found = false;
  4. $i = 0;
  5.  
  6. while(!$found)
  7. {
  8. if($_GET['extra'][$i]){
  9. $found = true;
  10. }else{
  11. $i++;
  12. }
  13. }
  14. ?>


Hoe kan ik nu controleren, wat er in die array zit, een 0 of een 1 of een 2.. enz..?
Offline Maarten - 18/07/2006 13:04
Avatar van Maarten Erelid Doe eens gewoon print_r($_GET['extra']), want ik betwijfel dat dat wel kan..?
Offline Chupskie - 18/07/2006 13:19
Avatar van Chupskie MySQL beginner ik heb nu dit, maar dit werkt ook niet:

  1. <?php
  2. for ($i = 0; $i < count($_GET['extra']); $i++)
  3. $_GET['extra'][$i];
  4. ?>


De print_r van $_GET['extra'] is dit:
Array ( [0] => 13245-2 [1] => 12700-2 [2] => 12927-2 )

En wat ik wil bereiken is dit:
  1. <?php
  2. if($_GET['extra'][$i]=="".$arrinf3['caArtNr']."-1"){
  3.  
  4. }elseif($_GET['extra'][$i]=="".$arrinf3['caArtNr']."-2"){
  5.  
  6. }else{
  7. //hier de standaard lijst
  8. }
  9. ?>


De $i moet dus als er meer product zijn verhoogt worden? Maar hoe moet ik dat nu doen?
Offline Maarten - 18/07/2006 13:25
Avatar van Maarten Erelid Hmmz, kijk, ik leer weeral iets bij Ik dacht dat je geen array's kon samenstellen via de URL.

En ik snap niet goed wat je wilt bereiken 
Offline Chupskie - 18/07/2006 13:42 (laatste wijziging 18/07/2006 13:48)
Avatar van Chupskie MySQL beginner Okeey, dat kan ik begrijpen, dat je het niet helemaal snapt:p

De wat duidelijkere uitleg:

Ten eerste, het gaat over deze site, waar ik nu mee bezig ben:
http://systemsh...;cnfId=123

Dan is het meteen wat duidelijker, het gaat dus om die extra opties, in de dropdowns.. Op het moment dat een van deze geselecteerd wordt, wordt het artikelnr + het aantal opgeslagen in de URL.

&extra[]=13245-2 // 1 product (artikelnr: 13245 + aantal: 2)
&extra[]=13245-2&extra[]=13584-4 //2 producten
enzovoorts..

Nou laat ik die dropdowns automatisch vullen, vanuit het database, en daarvoor heb ik deze code gecreeerd:
http://www.plaatscode.be/1370/

Ik hoop dat het nu wat duidelijker is..

edit nog wat vergeten:
Wat ik dus uiteindelijk wil bereiken, is dat als je een aantal selecteerd, vanuit zo'n dropdown, dat de pagina, dan refresht, en dat dan het geselecteerd blijft staan in de dropdown!

Khad dit al werkend gemaakt, met 1 product, alleen als je dan een ander extra artikel ook selecteerde, dan vervangde hij, het andere artikel, terwijl hij deze ook had moeten onthouden!
Offline Maarten - 18/07/2006 13:49 (laatste wijziging 18/07/2006 13:51)
Avatar van Maarten Erelid Je kan dus bij die dropdown iets zetten à la:
  1. <option value="1 stuks"<?=(isset($_GET['extra']['13245-1']) ? ' selected="selected"' : '')?>>1 stuks</option>
  2. <option value="2 stuks"<?=(isset($_GET['extra']['13245-2']) ? ' selected="selected"' : '')?>>2 stuks</option>
  3. <option value="3 stuks"<?=(isset($_GET['extra']['13245-3']) ? ' selected="selected"' : '')?>>3 stuks</option>


Of je maakt gebruik van JavaScript, en je zet onder die dropdowns dan:
document.getElementById('id_tag_van_die_dropdown').value = 'x stuks';
Offline Simon - 18/07/2006 13:50 (laatste wijziging 18/07/2006 14:13)
Avatar van Simon PHP expert
  1. <?php
  2. //hier moet dan voor elke nieuwe dropdown/artikel, die $i verhoogt worden!
  3. for($i=0;$i<(count($_GET['extra'])+1);$i++) {
  4. echo '<option value='.$arrinf3['caArtNr'].'-1" '. ($_GET['extra'][$i]==$arrinf3['caArtNr']."-1") ? "selected=\"selected\"" : "" .'>1 - &euro; '.$numprijstot1;
  5. echo '<option value='.$arrinf3['caArtNr'].'-2" '. ($_GET['extra'][$i]==$arrinf3['caArtNr']."-2") ? "selected=\"selected\"" : "" .'>2 - &euro; '.$numprijstot2;
  6. echo '<option value='.$arrinf3['caArtNr'].'-3" '. ($_GET['extra'][$i]==$arrinf3['caArtNr']."-3") ? "selected=\"selected\"" : "" .'>3 - &euro; '.$numprijstot3;
  7. }
  8. ?>

probeer het zo eens (niet getest, er kunnen errors zijn)
edit: er was nog een foutje, verbeterd

edit2: ik zie de dropdowns hoor

edit3: probeer nog eens met de code hierboven
Offline Chupskie - 18/07/2006 13:55 (laatste wijziging 18/07/2006 15:43)
Avatar van Chupskie MySQL beginner Mijn code uitgelegd:
if($_GET['extra'][$i]=="".$arrinf3['caArtNr']."-1"){
betekent:
if(20485-1==20485-1"){

Nu moet ik dus alleen kijken, of 20485-1 dus voorkomt in de URL en dus in die array, dus haal ik hem op, uit de url, met het bijhorende array nr: $_GET['extra'][$i]

Alleen nu moet er dus alleen nog ff een loopje worden gezet op dat array nr. want nu krijg ik die niet uitgelezen.
Dus hij moet dat het array nr, hierin zetten [$i] en daarna kun je dus vergelijken, of het artikelnr wat in dat arraynr zit, overeenkomt met bijvoorbeeld 20485-1 en dat is wat mijn code doet.

edit2:
  1. <?php
  2. foreach ($myArray as $i => $dit) {
  3. echo "\$myArray[$i] => $dit.<br />\n";
  4. }
  5. ?>

krijg ik dit:
$myArray[0] => 13245-2.
$myArray[1] => 12844-1.
$myArray[2] => 13245-3.

Dus dat werkt eindelijk goed, nu nog de vergelijking!
  1. <?php
  2. if($myArray[$i]=="".$arrinf3['caArtNr']."-1"){
  3. }elseif($myArray[$i]=="".$arrinf3['caArtNr']."-2"){
  4. //enz
  5. ?>


Nou kijkt hij dus bij elke if, of de vergelijking klopt, dit werkt ook helemaal goed.
Alleen hij doet er iedere keer maar weer 1.
Als je een andere selecteerd, laat hij bij de andere if, de selected niet staan, dus hij pakt iedere keer de laatste actie uit de foreach, en niet alle acties??

Moet ik dan de code ook in een foreach of in eeh while zetten dan ofzow?
edit3: en hier de link: http://systemsh...;cnfId=123
Offline xSc - 19/07/2006 08:20
Avatar van xSc Onbekend Variabelen en cijfers buiten quotes! Liefst echoën met single quotes.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.283s