Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Formularz dodaje pusty rekord do bazy
Forum PHP.pl > Forum > Przedszkole
student55
Jak w temacie, formularz dodaje pusty rekord do bazy po wejściu na stronę na której on jest. Po uzupełnieniu formularza działa jak należy, ale za każdym razem dochodzi ten pusty wpis...


  1. // zapytanie do bazy danych
  2. $wynik = mysql_query("SELECT * FROM actors;", $link)
  3. or die("Blad w zapytaniu!");
  4.  
  5.  
  6.  
  7. $sql = "INSERT INTO actors (ID, Name) VALUES (
  8. '".$_POST["ID"]."',
  9. '".$_POST["Name"]."'
  10. );";
  11.  
  12. if (!mysql_query($sql, $link)) {
  13. die('Error: ' . mysql_error($link));
  14. }
  15. echo "1 record added";
  16.  
  17. mysql_close($link);
  18. ?>
  19.  
  20.  
  21. <form action="insertactor.php3" method="post">
  22. ID: <input type="text" name="ID">
  23. Name of actor: <input type="text" name="Name">
  24. <input type="submit">
  25. </form>
_Borys_
  1. if(!empty($_POST)){
  2. // lub if(!empty($_POST['ID']) && !empty($_POST['Name'])){
  3. // zapis do bazy
  4. }
  5. // formularz
tomxx
A czy action formularza przypadkiem nie jest na tę samą stronę, na której jest formularz?
nospor
@tomxx no przeciez widzisz, ze tak. Formularz i zapisywanie to ten sam skrypt.... rozwiazanie podal juz Borys
student55
Hmm, po tej zmianie nie dodaje już pustego wpisu, ale po uzupełnieniu formularza wyskakuje na stronie error, i rekord się nie dodaje...

Jeszcze jedno. Po wejściu na stronę, od razu pojawia się komunikat '1 record added'. Gdzie go powinienem wcisnąć, żeby się pojawiał dopiero po realnym dodaniu rekordu?
nospor
Cytat
ale po uzupełnieniu formularza wyskakuje na stronie error, i rekord się nie dodaje...
To moze bys napisal jaki error wyskakuje.... ?

Cytat
Po wejściu na stronę, od razu pojawia się komunikat '1 record added'. Gdzie go powinienem wcisnąć, żeby się pojawiał dopiero po realnym dodaniu rekordu?
facepalmxd.gif W tym samym IF, w ktory wsadziles dodawanie rekordu...
student55
Chyba źle się wyraziłem.
Wyskakuje to co jest w 'die'

  1. die('Error: ' . mysql_error($link));


Pokazuje się dalej właściwa strona na której mam wypisane '1 record added Error:' i tyle...

Mam zrobić dwa if'y? Chyba nie skumałem... :/
nospor
NO ale w die masz tez mysql_error i to powinno dac komunikat bledu. No chyba ze masz cos nie tak z $link...
NIe: mysql_error($link)
a: mysql_error()

Cytat
Mam zrobić dwa if'y? Chyba nie skumałem... :/
Jakie dwa IFy? Przeciez napisalem, ze komunikat masz wstawic w ten sam IF, co wstawiles kod dodawania do bazy.... Czy widzisz tu gdzies bym ci kazal robic dwa IFy? Nie, ciagle jest mowa o jednym i tym samym IF
student55
Ok, nie pokazuje mi się już to '1 record added'. Dzięki. Tyle, że nie działa mi dodawanie rekordów przez formularz (wcześniej działało).

Error log podpowiada, że:

Cytat
Undefined index: ID in /home/.../insertactor.php3 on line 35
Undefined index: Name in /home/.../insertactor.php3 on line 36



Mój aktualny kod:
  1. $wynik = mysql_query("SELECT * FROM actors;", $link)
  2. or die("Blad w zapytaniu!");
  3.  
  4.  
  5.  
  6. $sql = "INSERT INTO actors (ID, Name) VALUES (
  7. '".$_POST["ID"]."',
  8. '".$_POST["Name"]."'
  9. );";
  10.  
  11.  
  12.  
  13. if(!empty($_POST)){
  14. die('Error ' . mysql_error());
  15. echo "1 record added";
  16. }
  17.  
  18.  
  19. mysql_close($link);
  20. ?>
  21.  
  22.  
  23. <form action="insertactor.php3" method="post">
  24. ID: <input type="text" name="ID">
  25. Name of actor: <input type="text" name="Name">
  26. <input type="submit">
  27. </form>
kropamk
a może tak ?

  1. $wynik = mysql_query("SELECT * FROM actors", $link) or die("Blad w zapytaniu!");
  2.  
  3. if (!empty($_POST)) {
  4. $sql = mysql_query("INSERT INTO actors (ID, Name) VALUES ('" . $_POST["ID"] . "', '" . $_POST["Name"] . "')");
  5. if (!$sql) {
  6. echo 'nie dodałem do bazy';
  7. } else {
  8. echo 'sukces Panie!';
  9. }
  10. } else {
  11. die('Error ' . mysql_error());
  12. echo "1 record added";
  13. }
  14. mysql_close($link);
  15. ?>
  16.  
  17.  
  18. <form action="insertactor.php3" method="POST">
  19. ID: <input type="text" name="id">
  20. Name of actor: <input type="text" name="name">
  21. <input type="submit" value="wyślij">
  22. </form>
  23.  
student55
Z takim kodem nawet strone nie chce wejść do końca... w miejscu gdzie powinien być formularz wywala 'error'
L0k0
Dobra, to tak:

  1. <?php
  2.  
  3. if (isset($_POST['wyslij_formularz')) { //Po pierwsze sprawdzasz, czy ktoś wcisnął przycisk w formularzu:
  4. $sql = mysql_query("INSERT INTO actors (ID, Name) VALUES ('" . $_POST["ID"] . "', '" . $_POST["Name"] . "')"); // jeśli ktoś wcisnął to dodajesz wpis do bazy
  5. if (!$sql) { // jeśli dane zostały poprawnie zapisane w bazie to ...
  6. echo 'nie dodałem do bazy'; // wyświetl info 'nie...'
  7. } else { //a jeśli się jednak uda...
  8. echo 'sukces Panie!'; // ... to wyświetl ten komunikat
  9. }
  10. }
  11. ?>
  12.  
  13.  
  14. <form action="" method="POST">
  15. ID: <input type="text" name="id">
  16. Name of actor: <input type="text" name="name">
  17. <input type="submit" value="wyślij" name="wyslij_formularz">
  18. </form>
  19.  


Usunąłem action żebyś mógł sobie to przetestować w jednym pliku. Po prostu 'kopiuj-wklej' i powinno działać.
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.