login  Naam:   Wachtwoord: 
Registreer je!
 Forum

waarde in loop werkt niet goed mee

Offline avancleef - 08/10/2009 12:38 (laatste wijziging 08/10/2009 12:39)
Avatar van avancleefNieuw lid Beste,

Ik heb een loop waarin ik plaatjes verklein. Werkt allemaal perfect maar ik heb één probleem.

Ik kan ook een HOOFD FOTO aan geven. DIt houd in dat in de galerie deze weergegeven wordt in plaats van een ander plaatje zeg maar.

Hij geeft de niet hoofd foto plaatjes de waarde 0 (nul), en een foto die wel hoofd foto is de waarde 1 (een).

Helaas werkt dit niet. Het 1e plaatje dat ik upload geeft hij altijd de waarde 1, en niet het plaatje waarbij ik de 'checkbox' aanvink.

Misschien iemand die mij kan vertellen wat er verkeerd is?

Code is hieronder te bekijken:

  1. <?php
  2. // als de gebruiker iets gesubmit heeft
  3. if($_SERVER['REQUEST_METHOD'] == 'POST')
  4. {
  5. // een loop maken voor het aantal plaatjes, deze uploaden, resizen, en in de database toevoegen
  6. for($i = 0; $i < $_SESSION['aantal']; $i++)
  7. {
  8. // een unieke prefix maken
  9. $prefix = @mktime();
  10. // gegevens ophalen van het plaatje
  11. $name = $_FILES['foto']['name'][$i];
  12. $type = $_FILES['foto']['type'][$i];
  13. $tmp_name = $_FILES['foto']['tmp_name'][$i];
  14. $error = $_FILES['foto']['error'][$i];
  15. $size = $_FILES['foto']['size'][$i];
  16. // kijken naar de aangegeven volgorde en -of het een hoofd foto is
  17. $volgorde = $_POST['volgorde'][$i];
  18. $checked = $_POST['checkbox'][$i];
  19.  
  20. // zitten er verboden letters in de naam van het plaatje?
  21. if(preg_match('{[-!@#$%^&*:?]}', $_FILES['foto']['name'][$i]))
  22. {
  23. echo 'Uw plaatje bevat ongeldige tekens, de volgende tekens mogen niet gebruikt worden: -, !, @, #, $, %, ^, &, *';
  24. }
  25.  
  26. // uploaden via FTP server naar de juiste directory
  27. move_uploaded_file($tmp_name, '../images/'.$prefix . $name);
  28.  
  29. //// ALLEMAAL CODE KOMT HIER
  30. //// ALLEMAAL CODE KOMT HIER
  31. //// ALLEMAAL CODE KOMT HIER
  32. }
  33.  
  34. ?>
  35. <form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">
  36. <?php
  37. echo '<table width="400px">
  38. <tr><td>Plaatje</td><td>Volgorde</td><td>Hoofdfoto</td></tr>';
  39. for($i = 0; $i < $_SESSION['aantal']; $i++)
  40. {
  41. echo '<tr><td><input name="foto[]" type="file" id="foto[]" /></td><td><input type="text" name="volgorde[]" value="'.$i.'" size="5" /></td><td><input type="checkbox" name="checkbox[]" value="1" /></td></tr>';
  42. }
  43. echo '</table>';
  44. ?>

3 antwoorden

Gesponsorde links
Offline Rik - 08/10/2009 13:43 (laatste wijziging 08/10/2009 13:44)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Wat er mis gaat is het volgende:
  1. <form>
  2. <input type="checkbox" name="checkbox[]" value="1" />
  3. <input type="checkbox" name="checkbox[]" value="1" />
  4. <input type="checkbox" name="checkbox[]" value="1" />
  5. <input type="checkbox" name="checkbox[]" value="1" />
  6. <input type="submit">
  7. </form>
Geeft bij verzenden altijd:
Citaat:
Array
(
[checkbox] => Array
(
[0] => 1
)

)
Onafhankelijk van welke je klikt. Dat komt omdat je checkbox[] gebruikt. Als je 'checkbox[' . $i . ']', zou doen kun je wel zien welke er zijn aangevinkt. Alleen kunnen er nu twee worden gekozen. Eigenlijk moet je een radio button gebruiken op zo'n manier:
  1. <form>
  2. <input type="radio" name="radio" value="1" />
  3. <input type="radio" name="radio" value="2" />
  4. <input type="radio" name="radio" value="3" />
  5. <input type="radio" name="radio" value="4" />
  6. <input type="submit">
  7. </form>

Dan kun je met $_POST['radio'] == $i bij het verwerken controleren of het huidige plaatje als "hoofd" is geselecteerd.

Edit:
== is hier nodig ipv === omdat je van het formulier geen integers terug krijgt maar strings.
Offline avancleef - 08/10/2009 22:57 (laatste wijziging 09/10/2009 01:48)
Avatar van avancleef Nieuw lid Oke, ben nu even de kluts kwijt haha sorry.
Ik moet toch deze <checkbox> hebben ivm het uiterlijk maar ik ga zeker je radiobutton oplossing opschrijven voor de toekomst!

Maar hoe kan ik dit nu fixen?

  1. <?php
  2. echo '<table width="400px">
  3. <tr><td>Plaatje</td><td>Volgorde</td><td>Hoofdfoto</td></tr>';
  4. for($i = 0; $i < $_SESSION['aantal']; $i++)
  5. {
  6. echo '<tr><td><input name="foto[]" type="file" id="foto[]" /></td><td><input type="text" name="volgorde[]" value="'.$i.'" size="5" /></td><td><input type="checkbox" name="checkbox[]" value="1" /></td></tr>';
  7. }
  8. echo '</table>';
  9. ?>


veranderen in het volgende:

  1. <?php
  2. echo '<table width="400px">
  3. <tr><td>Plaatje</td><td>Volgorde</td><td>Hoofdfoto</td></tr>';
  4. for($i = 0; $i < $_SESSION['aantal']; $i++)
  5. {
  6. echo '<tr><td><input name="foto[]" type="file" id="foto[]" /></td><td><input type="text" name="volgorde[]" value="'.$i.'" size="5" /></td><td><input type="checkbox" name="checkbox['.$i.']" value="1" /></td></tr>';
  7. }
  8. echo '</table>';
  9. ?>


Of bedoelde je dat niet?


EDIT: van alles geprobeerd maar krijg het nit voor elkaar sorry ; ; kan je voorbeeldje maken misschien?
Offline Rik - 09/10/2009 11:48
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Zo te zien heb je het goed gedaan. Als je nu wilt weten of er bij een plaatje een vinkje is gezet gebruik je:
  1. $checked = isset($_POST['checkbox'][$i]);
ipv
  1. $checked = $_POST['checkbox'][$i];
In de for-loop waarin je het formulier verwerkt.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s