Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wstawianie danych do bazy
Forum PHP.pl > Forum > Gotowe rozwiązania
huka
Witam,
mam problem podczas wstawiania danych do tabeli. Chodzi o to że podczas dodawania jakichkolwiek danych do tabeli najpierw wstawia mi jeden pusty rekord a dopiero po wypełnieniu formularza te dane które chcę.
Nie wiem dlaczego tak sie dzieje ale wydaje mi sie że to wstawia te dane już podczas samego wygenerowania skryptu.

Skrypt wygląda tak
  1. <html>
  2. <form name=\"dodaj_odpowiedz\" method=\"post\">
  3. <center><table border=\"0\" width=\"533\" ></center>
  4. <tr>
  5.  <td align=\"left\" width=\"97\">
  6.  <b>Podaj treść odpowiedzi</b></td>
  7.  <td align=\"left\" width=\"422\"><textarea rows=\"3\" name=\"Odpowiedz\" cols=\"50\"></textarea><br><b></b></td>
  8. </tr>
  9. <tr><td align=\"left\" width=\"97\"><b>Czy odpowiedź jest poprawna:</b></td>
  10. <td align=\"left\"><select size=\"1\" name=\"Dobra_odp\">
  11. <option value=\"1\">TAK</option>
  12. <option value=\"0\">NIE</option>
  13. </select></td>
  14. </tr>
  15. </table> 
  16. <center><table border=\"0\" width=\"533\"><tr>
  17. <b>Pytanie</b></td>
  18.  
  19. <?
  20. $db_name = &#092;"praca\";
  21. $con = mysql_connect(&#092;"localhost\") or die(\"Blad otwarcia bazy\");
  22. $db = mysql_select_db($db_name, $con) or die(&#092;"Otwarcie tabeli\");
  23. $sql = &#092;"SELECT ID_pytania, Tresc_pytania FROM Pytania ORDER BY Tresc_pytania\";
  24. $sql2 = &#092;"insert into Odpowiedzi values('null','$ID_pyt','\".$_POST['Odpowiedz'].\"','$Wynik','\".$_POST['Dobra_odp'].\"')\";
  25. $result = mysql_query($sql, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  26. $result2 = mysql_query($sql2, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  27. echo &#092;"<select name=ID_pytania>\"; 
  28. while($row = mysql_fetch_array($result)) { 
  29. echo &#092;"<option value=\".$row['ID_pytania'].\">\".$row['Tresc_pytania'].\"n\"; 
  30. } 
  31. ?>
  32.  
  33. </form><p>
  34. <tr><td><center>
  35. <form action=dodaj_odpowiedz.php><input type=\"submit\" value=\"Dodaj\">
  36. <input type=\"reset\" value=\"Wyczyść\"></form>
  37. </tr></td></table>
  38. <center><form action=index.html><input type=submit value=\"Powrót do menu\">
  39. </form></center></form>
  40. </html>


Jak wiecie co należy zmienić ażeby nie wstawiało mi pustego wiersza to napiszcie.
beskid
Jestem początkujący, ale wydaje mi się że zawsze będzie Ci wstawiało pusty wiersz, skoro Twój skrypt jest przetwarzany zawsze w całości. Musisz dać odpowiedni warunek, aby wstawiało ci dane tylko, gdy odpowiednie zmienne są ustawione, na przykład tak:

  1. <?
  2. $db_name = &#092;"praca\";
  3. $con = mysql_connect(&#092;"localhost\") or die(\"Blad otwarcia bazy\");
  4. $db = mysql_select_db($db_name, $con) or die(&#092;"Otwarcie tabeli\");
  5. $sql = &#092;"SELECT ID_pytania, Tresc_pytania FROM Pytania ORDER BY Tresc_pytania\";
  6.  
  7. if( isset($_POST['Odpowiedz']) and isset($_POST['Dobra_odp'])) {
  8. $sql2 = &#092;"insert into Odpowiedzi values('null','$ID_pyt','\".$_POST['Odpowiedz'].\"','$Wynik','\".$_POST['Dobra_odp'].\"')\";
  9. $result = mysql_query($sql, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  10. }
  11.  
  12. $result2 = mysql_query($sql2, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  13. echo &#092;"<select name=ID_pytania>\"; 
  14. while($row = mysql_fetch_array($result)) { 
  15. echo &#092;"<option value=\".$row['ID_pytania'].\">\".$row['Tresc_pytania'].\"n\"; 
  16. } 
  17. ?>


Jeśli się mylę, to niech ktoś mnie poprawi...
Revan
kolega przedemna ma racje ;] ja to robie bez sprawdzania czy pola formularzowe sa puste... tylko formularzem wysylam od razu np do dodaj_odpowiedz.php?akcja=dodajdobazy ... np.

  1. <html>
  2. <form name=\"dodaj_odpowiedz\"  method=\"post\" action=\"dodaj_odpowiedz?akcja=dodajdobazy\">
  3. <center><table border=\"0\" width=\"533\" ></center>
  4. <tr>
  5.    <td align=\"left\" width=\"97\">
  6.    <b>Podaj treść odpowiedzi</b></td>
  7.    <td align=\"left\" width=\"422\"><textarea rows=\"3\" name=\"Odpowiedz\" cols=\"50\"></textarea><br><b></b></td>
  8. </tr>
  9. <tr><td align=\"left\" width=\"97\"><b>Czy odpowiedź jest poprawna:</b></td>
  10. <td align=\"left\"><select size=\"1\" name=\"Dobra_odp\">
  11. <option value=\"1\">TAK</option>
  12. <option value=\"0\">NIE</option>
  13. </select></td>
  14. </tr>
  15. </table> 
  16. <center><table border=\"0\" width=\"533\"><tr>
  17. <b>Pytanie</b></td>
  18. <?
  19. $db_name = &#092;"praca\";
  20. $con = mysql_connect(&#092;"localhost\") or die(\"Blad otwarcia bazy\");
  21. $db = mysql_select_db($db_name, $con) or die(&#092;"Otwarcie tabeli\");
  22. $sql = &#092;"SELECT ID_pytania, Tresc_pytania FROM Pytania ORDER BY Tresc_pytania\";
  23. $result = mysql_query($sql, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  24. echo &#092;"<select name=ID_pytania>\"; 
  25. while($row = mysql_fetch_array($result)) { 
  26. echo &#092;"<option value=\".$row['ID_pytania'].\">\".$row['Tresc_pytania'].\"n\"; 
  27. }
  28. ?>
  29. <p>
  30. <tr><td><center>
  31. <input type=\"submit\" value=\"Dodaj\">
  32. <input type=\"reset\" value=\"Wyczyść\"></form>
  33. </tr></td></table>
  34. <center><form action=index.html><input type=submit value=\"Powrót do menu\">
  35. </form></center></form>
  36. </html>
  37. <?
  38. if($akcja == &#092;"dodajdobazy\");
  39. {
  40. $sql2 = &#092;"insert into Odpowiedzi values('null','$ID_pyt','\".$_POST['Odpowiedz'].\"','$Wynik','\".$_POST['Dobra_odp'].\"')\";
  41. $result2 = mysql_query($sql2, $con) or die(&#092;"Polaczenie z baza nie udalo sie\");
  42. }
  43. ?>

po za tym .. strasznie pokreciles z html-em... nie wiem jak ci sie to wyslalo bo skoro otwierasz <form> dajesz w nim selecta i bez submita go konczysz... a potem znowu otwierzasz kolejny <form> i dajesz wtedy submita... dziwne :| ...
i ja bym jeszcze dal jakies zabezpieczenia bo jakis zartownis moze ci dac odp zamiast 1 czy 0, 666... ;]
huka
Zmieniłem tak jak pisaliście ale pojawił sie problem bo teraz wogle nic nie wstawia do bazy i nie mam możliwości wyboru z listy pytań wcześniej zapisanych w tabeli.

Może wiecie dlaczego tak się dzieje?

A i Revan według twojej sugestii musze napisać jeszcze jakiś skrypt bo podczas wysyłania danych z formularza powinien odpalić się skrypt dodajdobazy?
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-2024 Invision Power Services, Inc.