login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array werkt niet (Opgelost)

Offline Ewergreen - 24/08/2010 11:49
Avatar van EwergreenNieuw lid Hoop dat iemand mij eens een werkend voorbeeld kan geven van wat ik al een tijdje probeer te doen. Ik geraak altijd even ver, maar daar stopt het. Ik ben nu opnieuw aan het proberen met een array, maar loop weer op hetzelfde stukje vast. Kortom: HELP!

http://www.plaatscode.be/139883/

  1. <?php
  2. if(!isset($_POST['NumberOfOptions'])){
  3. echo "Vul hieronder het aantal antwoorden in:<br />";
  4. echo "<form action='poll_array.php' method='post'>";
  5. echo "<input type='text' name='NumberOfOptions'>";
  6. echo "<input type='submit' value='Maak poll'>";
  7. echo "</form>";
  8. }else{
  9. if(isset($_POST['NumberOfOptions'])){
  10. $NumberOfOptions = $_POST['NumberOfOptions'];
  11. }
  12. if ($NumberOfOptions <= 1){ //Check for at least 2 answers.
  13. echo "Please choose at least two options.";
  14. }else{
  15. $question;
  16. echo "<div id='ShowOptions'>";
  17. echo "<form action='poll_array.php' method='POST'>";
  18. echo "Vul hieronder de antwoorden in:<br />";
  19. for($count = 1; $count <= $NumberOfOptions; $count++) {//Print desired amount of options
  20. echo "Antwoord optie #".$count.": <input name='$question[$count]' type='text'><br />";
  21. }
  22. echo "<input type='submit' value='Submit option'>";
  23. echo "</form>";
  24. echo "</div>";
  25. }
  26.  
  27. if (!empty($_POST['question1'])){
  28. foreach( $question as $number => $option){
  29. echo "Toon optie ".$number.": ".$option." <br />";
  30. }
  31. }
  32. }
  33. ?>

10 antwoorden

Gesponsorde links
Offline Button - 24/08/2010 12:43 (laatste wijziging 24/08/2010 12:44)
Avatar van Button PHP ver gevorderde Wat moet er eigenlijk in die $question zitten, want je bepaalt nergens de inhoud hiervan én toch eis je hier dat deze een inhoud heeft:
  1. if (!empty($_POST['question1'])){
  2. foreach( $question as $number => $option){
  3. echo "Toon optie ".$number.": ".$option." <br />";
  4. }
  5. }


Je mag best wat meer uitleg geven over wat het probleem is...
Offline Ewergreen - 24/08/2010 13:09 (laatste wijziging 24/08/2010 15:01)
Avatar van Ewergreen Nieuw lid Met lijn 20 geef ik toch meerdere input boxes weer d.m.v. een for loop iets hoger? En deze submit ik dan toch, waardoor ze met die $question[$count] in een array komen? Of vergis ik mij?

  1. echo "Antwoord optie #".$count.": <input name='$question[$count]' type='text'><br />";
  2. echo "<input type='submit' value='Submit option'>";


Het probleem is dat ik een aantal opties wil wegschrijven. Deze wil ik dan in een volgende stap gebruiken om een "poll" te maken. Een formpje met radio buttons en een submit button dus. Naast deze radio buttons zou telkens een optie moeten staan, die ik dacht uit mijn array te halen. Dit werkt dus duidelijk niet... .

Ik keek net ook eens in de gegenereerde html en kwam het volgende tegen:
  1. Antwoord optie #1: <input name='' type='text'><br />Antwoord optie #2: <input name='' type='text'><br />Antwoord optie #3: <input name='' type='text'>

Geen idee waarom hij geen waardes invult bij de input name.


Alvast bedankt!
Offline Button - 24/08/2010 15:04 (laatste wijziging 24/08/2010 15:04)
Avatar van Button PHP ver gevorderde
  1. <?php
  2. if(!isset($_POST['NumberOfOptions'])){
  3. echo "Vul hieronder het aantal antwoorden in:<br />";
  4. echo "<form action='poll_array.php' method='post'>";
  5. echo "<input type='text' name='NumberOfOptions'>";
  6. echo "<input type='submit' value='Maak poll'>";
  7. echo "</form>";
  8. }else{
  9. if(isset($_POST['NumberOfOptions'])){
  10. $NumberOfOptions = $_POST['NumberOfOptions'];
  11. }
  12. if ($NumberOfOptions <= 1){ //Check for at least 2 answers.
  13. echo "Please choose at least two options.";
  14. }else{
  15. $question;
  16. echo "<div id='ShowOptions'>";
  17. echo "<form action='poll_array.php' method='POST'>";
  18. echo "Vul hieronder de antwoorden in:<br />";
  19. for($count = 1; $count <= $NumberOfOptions; $count++) {//Print desired amount of options
  20. echo "Antwoord optie #".$count.": <input name=\" . $count . \" type='text'><br />";
  21. }
  22. echo "<input type='submit' value='Submit option'>";
  23. echo "</form>";
  24. echo "</div>";
  25. }
  26.  
  27. for ($number = 1; $number <= $NumberOfOptions; $number++) {
  28. if (isset($_POST[$number] && !is_empty($_POST[$number])) {
  29. echo "Toon optie ".$number.": ".$_POST[$number]." <br />";
  30. }
  31. }
  32. }
  33. ?>


Zo moet het normaal wel werken (als ik de bedoeling juist begrijp).
Offline Ewergreen - 24/08/2010 15:14 (laatste wijziging 24/08/2010 15:15)
Avatar van Ewergreen Nieuw lid Button, uw code heeft een kleine fout op regel 28. Die heb ik aangepast en ben nu aan het testen. Alvast bedankt, ik laat iets horen!
Offline Button - 24/08/2010 15:24
Avatar van Button PHP ver gevorderde
  1. if (isset($_POST[$number]) && !is_empty($_POST[$number])) {
  2. echo "Toon optie ".$number.": ".$_POST[$number]." <br />";
  3. }


Inderdaad, haakje vergeten, aangepast.
Offline Ewergreen - 24/08/2010 17:01
Avatar van Ewergreen Nieuw lid Button, dat werkt allemaal behoorlijk goed. Enkel het laatste stukje, waarbij je de opties terug gaat weergeven wilt niet werken. Ik heb er ondertussen nog wat aan gesleuteld, de volledige code staat op plaatscode. Hieronder het stukje waar ik denk dat het misloopt.

  1. for ($count = 1; $count <= $NumberOfOptions; $count++) { //Show the options that were just written down! - NOT WORKING YET
  2. if (isset($_POST[question.$count]) && !is_empty($_POST[question.$count])) {
  3. echo "<input type='radio' name='optie$count' value='$count'> $_POST[question$count]<br>";
  4. }
  5. }
Offline Button - 24/08/2010 17:20 (laatste wijziging 24/08/2010 17:25)
Avatar van Button PHP ver gevorderde
  1. <?php
  2. if(!is_numeric($_POST['NumberOfOptions'])){ //If numerical input was given, don't show the form
  3. echo "Vul hieronder het aantal antwoorden in:<br />";
  4. echo "<form action='poll_array.php' method='post'>";
  5. echo "<input type='text' name='NumberOfOptions'>";
  6. echo "<input type='submit' value='Maak poll'>";
  7. echo "</form>";
  8. }else{
  9. if(isset($_POST['NumberOfOptions'])){ //If input was given, this should be written to a variable
  10. $NumberOfOptions = $_POST['NumberOfOptions'];
  11. }
  12. if ($NumberOfOptions <= 1){ //Check for at least 2 answers.
  13. echo 'Kies minstens twee opties.';
  14. }else{
  15. echo '<div id="ShowOptions">';
  16. echo "<form action='poll_array.php' method='POST'>";
  17. echo "Vul hieronder de antwoorden in:<br />";
  18. for($count = 1; $count <= $NumberOfOptions; $count++) {//Print desired amount of input options
  19. echo "Antwoord optie #".$count.": <input name='question$count' type='text'><br />";
  20. }
  21. echo "<input type='submit' value='Submit optie'>"; //Remember the given options
  22. echo "</form>";
  23. echo "</div>";
  24. }
  25. for ($count = 1; $count <= $NumberOfOptions; $count++) { //Show the options that were just written down! - NOT WORKING YET
  26. if (isset($_POST['question'.$count]) && !is_empty($_POST['question'.$count])) {
  27. echo "<input type='radio' name='optie$count' value='$count'>". $_POST['question'.$count]."<br>";
  28. }
  29. }
  30. }
  31. ?>


Je maakt het je eigen alleen maar moeilijk met het (edit:) NIET buiten de haakjes brengen van variabelen wanneer je ze gebruikt in een string. (edit:) Je zou dit WEL moeten doen. Je zou een keer moeten opzoeken hoe je variabelen best in strings gebruikt. 
Bedankt door: Ewergreen
Offline Ewergreen - 24/08/2010 17:36
Avatar van Ewergreen Nieuw lid Thanks again Button! Ik ga zeker het buiten de haakjes brengen eens bekijken. Het laatste wat ik wil doen is het mezelf moeilijk maken  .

Helaas wil hij nog altijd niet de "output" weergeven als ik op "submit optie" klik. Hij brengt me dan gewoon terug naar het eerste scherm waar ik het aantal opties moet kiezen.

  1. <?php
  2. if(!is_numeric($_POST['NumberOfOptions'])){ //If numerical input was given, don't show the form
  3. echo "Vul hieronder het aantal antwoorden in:<br />";
  4. echo "<form action='poll_array2.php' method='post'>";
  5. echo "<input type='text' name='NumberOfOptions'>";
  6. echo "<input type='submit' value='Maak poll'>";
  7. echo "</form>";
  8. }else{
  9. $NumberOfOptions = (int)$_POST['NumberOfOptions'];
  10. if ($NumberOfOptions <= 1){ //Check for at least 2 answers.
  11. echo 'Kies minstens twee opties.';
  12. }else{
  13. echo '<div id="ShowOptions">';
  14. echo "<form action='poll_array2.php' method='post'>";
  15. echo "Vul hieronder de antwoorden in:<br />";
  16. for($count = 1; $count <= $NumberOfOptions; $count++) {//Print desired amount of input options
  17. echo "Antwoord optie #".$count.": <input name='question$count' type='text'><br />";
  18. }
  19. echo "<input type='submit' value='Submit optie'>"; //Remember the given options
  20. echo "</form>";
  21. echo "</div>";
  22. }
  23. for ($count = 1; $count <= $NumberOfOptions; $count++) { //Show the options that were just written down! - NOT WORKING YET
  24. if (isset($_POST['question'.$count]) && !is_empty($_POST['question'.$count])) {
  25. echo "<input type='radio' name='optie$count' value='$count'>". $_POST['question'.$count]."<br>";
  26. }
  27. }
  28. }
  29. ?>

Offline Button - 24/08/2010 17:44
Avatar van Button PHP ver gevorderde Dit komt omdat je bij het "tweede" form geen $_POST['NumberOfOptions'] meegeeft - wat natuurlijk ook de bedoeling is. Maar dat zorgt er wel voor dat wanneer je submit in je tweede form, dat het script gaat checken of $_POST['NumberOfOptions'] numeric is of niet en aangezien $_POST['NumberOfOptions'] niet bestaat (want je hebt dit nergens meegegeven) kan het ook niet numeric zijn, dus zal het terug het eerste form laten zien. Je moet dus een oplossing vinden zodat hij toch de resultaten laat zien ook al zend je geen $_POST['NumberOfOptions'] mee.
Offline Ewergreen - 24/08/2010 21:16 (laatste wijziging 24/08/2010 21:19)
Avatar van Ewergreen Nieuw lid Wel, ik wist dat dát het probleem was. Maar uit een oplossing geraak ik dus niet. Heb geprobeerd iets met sessions te bricoleren, maar dat was geen succes... .
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.27s