Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapętliłem się. Próba stworzenia quizu przez użytkownika
Forum PHP.pl > Forum > Przedszkole
luke18dg
Witam, tak jak w temacie zapętliłem się i nie wiem jak zbrekować tą pętle. Przedstawiony poniżej skrypt miał działać na celu.
Naciśnięcie przycisku
1 pole_wielokrotnego - utworzenia miejsca na pytania, także miejsce na dwie odp. Jeśli, został naciśnięty przycisk dodaj_odp: numer, miał się wyświetlić dodatkowe pole na odp. Następnie wyświetlenia jeśli były poprzednich pytań i odp.
2 pole_jednokrotnego - tak samo dla wielokrotnego tylko zamiast kratek na wielokrotne to na jednokrotne.
3 pole_tekstowe - wyświetlenie pola tekstowego o domyślnych parametrach.
I mój błąd polega, że zwątpiłem bo ciągle wyskakują dziwnego pochodzenia błędy:
Cytat
Notice: Undefined offset: 5 in C:\Programy\SERWERWWW\htdocs\innawersja\dodawaniequizu.php on line 67

A dotyczą co dziwniejsze:
  1. switch($tablica[$i]['typpola'])

Próbowałem żałośnie także usunąć wszystko z $_SESSION['dane'] i przywrócić formularz do formy pierwotnej jaką widujemy na początku, ale także ta próba umarła.
A oto cały kod:
  1. <?php
  2. /*
  3.   W - pole wielokrotnego wyboru
  4.   J - pole jednokrotnego wyboru
  5.   T - pole tekstowe
  6.  */
  7. if(!(empty($_SESSION['dane']))){$tablica=$_SESSION['dane'];}
  8. if(!(empty($tablica)))
  9. {
  10. $keys=array_keys($tablica);
  11. $ostatni=$keys[count($keys)-1];
  12. $ostatni+=1;
  13. }
  14. else {$ostatni=1;}
  15. if(!(empty($_GET['dodac'])))
  16. {
  17. switch($_GET['dodac'])
  18. {
  19. case 'pole_wielokrotnego':
  20. {
  21. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  22. $tablica[$ostatni]['value']='';
  23. $tablica[$ostatni]['typpola']='W';
  24. $tablica[$ostatni]['poprawna']='';
  25. $tablica[$ostatni]['liczbaodp']=0;
  26. $tablica[$ostatni][0]='';
  27. break;
  28. }
  29. case 'pole_jednokrotnego':
  30. {
  31. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  32. $tablica[$ostatni]['value']='';
  33. $tablica[$ostatni]['typpola']='J';
  34. $tablica[$ostatni]['poprawna']='';
  35. $tablica[$ostatni]['liczbaodp']=0;
  36. $tablica[$ostatni][0]='';
  37. break;
  38. }
  39. case 'pole_tekstowe':
  40. {
  41. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  42. $tablica[$ostatni]['typpola']='T';
  43. $tablica[$ostatni]['value']='';
  44. break;
  45. }
  46. /*case 'skasuj':
  47.   {
  48.   unset($_SESSION['dane']);
  49. header('Location: index.php');
  50.   }*/
  51. }
  52. $odpowiedznr=explode(':',$_GET['dodac']);
  53. $keys = array_keys($odpowiedznr);
  54. $ostatniodp = $keys[count($keys)-1];
  55. if($ostatniodp>0) {$tablica[$odpowiedznr[1]]['liczbaodp']+=1;}
  56. }
  57. echo '<html><head><title>Tworus Lukasz</title><meta name="author" content="Tworus Łukasz"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  58. </head><body><form action="dodawaniequizu.php"><table border="1">';
  59. //****************MOZNA SKASOWAC POZNIEJ***********
  60. // echo '<tr><td><input type="submit" value="skasuj"></td></tr>';
  61. //*************************************************
  62. if(!(empty($tablica)))
  63. {
  64. for($i=1; $i<$ostatni+1; $i++)
  65. {
  66. switch($tablica[$i]['typpola'])
  67. {
  68. case 'T':
  69. {
  70. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  71. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  72. echo '></td></tr>';
  73. break;
  74. }
  75. case 'J':
  76. {
  77. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  78. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  79. echo '></td></tr>';
  80. if($tablica[$i]['liczbaodp']==0) {$tablica[$i]['liczbaodp']=1;}
  81. for($j=0; $j<$tablica[$i]['liczbaodp']+1; $j++)
  82. {
  83. echo '<tr><td><input type="radio" name="odpowiedz'.$ostatni.'" value="'.$j.'"> <input type"text" name="odpowiedztekst'.$ostatni.'"';
  84. if(!(empty($tablica[$i][$j]))){echo 'value="'.$tablica[$i][$j].'"';}
  85. echo'></td></tr>';
  86. }
  87. echo '<tr><td><input type="submit" value="dodajodp:'.$i.'" name="dodac"></td></tr>';
  88. break;
  89. }
  90. case 'W':
  91. {
  92. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  93. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  94. echo '></td></tr>';
  95. if($tablica[$i]['liczbaodp']==0) {$tablica[$i]['liczbaodp']=1;}
  96. for($j=0; $j<$tablica[$i]['liczbaodp']+1; $j++)
  97. {
  98. echo '<tr><td><input type="checkbox" name="odpowiedz'.$ostatni.'" value="'.$j.'"> <input type"text" name="odpowiedztekst'.$ostatni.'"';
  99. if(!(empty($tablica[$i][$j]))){echo 'value="'.$tablica[$i][$j].'"';}
  100. echo'></td></tr>';
  101. }
  102. echo '<tr><td><input type="submit" value="dodajodp:'.$i.'" name="dodac"></td></tr>';
  103. break;
  104. }
  105. }
  106. }
  107. $_SESSION['dane']=$tablica;
  108. echo($_SESSION['dane']);
  109. }
  110. echo'<tr><td><input type="submit" value="pole_wielokrotnego" name="dodac"><input type="submit" value="pole_jednokrotnego" name="dodac">
  111. <input type="submit" value="pole_tekstowe" name="dodac"> <br></td>
  112. <tr>
  113. <td><input type="submit" value="wyslij"></td>
  114. </tr>
  115. </table></form></body></html>';
  116. ?>
Tajgeer
Dziwnego pochodzenia? Po prostu zmienna (tablica) $tablica nie zawiera indeksu o numerze 5, stąd masz ten komunikat.

  1. print_r($tablica);
i sprawdź co jest nie tak
luke18dg
No fakt, a ja tyle tego szukałem smile.gif

  1. <?php
  2. /*
  3.   W - pole wielokrotnego wyboru
  4.   J - pole jednokrotnego wyboru
  5.   T - pole tekstowe
  6.  */
  7. if(!(empty($_GET['wysylanie'])))
  8. {
  9. if(($_GET['wysylanie'])=='Wyslij')
  10. {
  11. header('Refresh:0; URL=indexhome.php?url=walidacjadodawaniaquizu');
  12. exit();
  13. }
  14. }
  15. if(!(empty($_SESSION['dane']))){$tablica=$_SESSION['dane'];}
  16. if(!(empty($tablica)))
  17. {
  18. $keys=array_keys($tablica);
  19. $ostatni=$keys[count($keys)-1];
  20. $ostatni+=1;
  21. }
  22. else {$ostatni=1;}
  23. if(!(empty($_GET['dodac'])))
  24. {
  25. switch($_GET['dodac'])
  26. {
  27. case 'pole_wielokrotnego':
  28. {
  29. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  30. $tablica[$ostatni]['value']='';
  31. $tablica[$ostatni]['typpola']='W';
  32. $tablica[$ostatni]['poprawna']='';
  33. $tablica[$ostatni]['liczbaodp']=0;
  34. break;
  35. }
  36. case 'pole_jednokrotnego':
  37. {
  38. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  39. $tablica[$ostatni]['value']='';
  40. $tablica[$ostatni]['typpola']='J';
  41. $tablica[$ostatni]['poprawna']='';
  42. $tablica[$ostatni]['liczbaodp']=0;
  43. break;
  44. }
  45. case 'pole_tekstowe':
  46. {
  47. $tablica[$ostatni]['name']='pytanie'.$ostatni;
  48. $tablica[$ostatni]['typpola']='T';
  49. $tablica[$ostatni]['value']='';
  50. break;
  51. }
  52. $_GET['dodac']="";
  53. }
  54. $odpowiedznr=explode(':',$_GET['dodac']);
  55. $keys = array_keys($odpowiedznr);
  56. $ostatniodp = $keys[count($keys)-1];
  57. if($ostatniodp>0) {$tablica[$odpowiedznr[1]]['liczbaodp']+=1;}
  58. }
  59. echo '<html><head><title>Tworus Lukasz</title><meta name="author" content="Tworus Łukasz"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  60. </head><body><form action="indexhome.php"><table border="1">';
  61. if(!(empty($tablica)))
  62. {
  63. for($i=1; $i<$ostatni; $i++)
  64. {
  65. switch($tablica[$i]['typpola'])
  66. {
  67. case 'T':
  68. {
  69. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  70. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  71. echo '></td></tr>';
  72. break;
  73. }
  74. case 'J':
  75. {
  76. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  77. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  78. echo '></td></tr>';
  79. if($tablica[$i]['liczbaodp']==0) {$tablica[$i]['liczbaodp']=1;}
  80. for($j=0; $j<$tablica[$i]['liczbaodp']+1; $j++)
  81. {
  82. echo '<tr><td><input type="radio" name="odpowiedz'.$i.'<o8765>'.$j.'" value="'.$j.'"> <input type"text" name="odpowiedztekst'.$ostatni.'"';
  83. if(!(empty($tablica[$i][$j]))){echo 'value="'.$tablica[$i][$j].'"';}
  84. echo'></td></tr>';
  85. }
  86. echo '<tr><td><input type="submit" value="dodajodp:'.$i.'" name="dodac"></td></tr>';
  87. break;
  88. }
  89. case 'W':
  90. {
  91. echo '<tr><td>'.$i.' <input type="text" name="'.$tablica[$i]['name'].'"';
  92. if(!(empty($tablica[$i]['value']))) {echo 'value="'.$tablica[$i]['value'].'"';}
  93. echo '></td></tr>';
  94. if($tablica[$i]['liczbaodp']==0) {$tablica[$i]['liczbaodp']=1;}
  95. for($j=0; $j<$tablica[$i]['liczbaodp']+1; $j++)
  96. {
  97. echo '<tr><td><input type="checkbox" name="odpowiedz'.$ostatni.'" value="'.$j.'"> <input type"text" name="odpowiedztekst'.$ostatni.'"';
  98. if(!(empty($tablica[$i][$j]))){echo 'value="'.$tablica[$i][$j].'"';}
  99. echo'></td></tr>';
  100. }
  101. echo '<tr><td><input type="submit" value="dodajodp:'.$i.'" name="dodac"></td></tr>';
  102. break;
  103. }
  104. }
  105. }
  106. print_r($tablica);
  107. $_SESSION['dane']=$tablica;
  108. }
  109. echo'<tr><td><input type="submit" value="pole_wielokrotnego" name="dodac"><input type="submit" value="pole_jednokrotnego" name="dodac">
  110. <input type="submit" value="pole_tekstowe" name="dodac"> <br></td>
  111. <tr>
  112. <td>
  113. <input type="hidden" name="url" value="dodawaniequizu">
  114. <input type="submit" value="Wyslij" name="wysylanie">
  115. </td>
  116. </tr>
  117. </table></form></body></html>';
  118. ?>

A czy ktoś mi może powiedzieć dlaczego w takiej formie nie są przesyłane dane po poscie lub getcie?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.