Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] insert
-wabanek-
post
Post #1





Goście







Witam
może ktoś rzucic na to okiem, nie mogę nic już wymyślec

  1. <?php
  2. // odbieramy dane z formularza
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $wynik = $_POST['wynik'];
  6.  
  7. if($imie and $nazwisko and $wynik) {
  8. $con = mysql_connect("localhost","root","");
  9. if (!$con)
  10. {
  11. die('Could not connect: ' . mysql_error());
  12. }
  13.  
  14. $ins = @mysql_query("INSERT INTO wynik_konkursu SET imie='$imie', nazwisko='$nazwisko', wynik= '$wynik'");
  15.  
  16. if($ins) echo "Rekord został dodany poprawnie";
  17. else echo "Błąd nie udało się dodać nowego rekordu";
  18.  
  19. }
  20. ?>


wywala błędy
Notice: Undefined index: imie in C:\xampp\htdocs\insert.php on line 3

Notice: Undefined index: nazwisko in C:\xampp\htdocs\insert.php on line 4

Notice: Undefined index: wynik in C:\xampp\htdocs\insert.php on line 5
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


ale coś nie działa...?

btw. notice != error
Go to the top of the page
+Quote Post
szym011
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.06.2010

Ostrzeżenie: (0%)
-----


Nie istnieją twoje zmienne globalne. Zrób tak:
  1. $imie = isset($_POST['imie']);
  2. $nazwisko = isset($_POST['nazwisko']);
  3. $wynik = isset($_POST['wynik']);
Go to the top of the page
+Quote Post
-wabanek-
post
Post #4





Goście







Cytat(szym011 @ 27.11.2011, 22:02:27 ) *
Nie istnieją twoje zmienne globalne. Zrób tak:
  1. $imie = isset($_POST['imie']);
  2. $nazwisko = isset($_POST['nazwisko']);
  3. $wynik = isset($_POST['wynik']);

Nie działa, nic nie pokazuje, nie ma błędu ale też nie dodaje wyniku do bazy
Go to the top of the page
+Quote Post
Niktoś
post
Post #5





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie znam się na tyle na php ,ale czy ten warunek ,można nazwać warunkiem??
if($imie and $nazwisko and $wynik)

Poza tym popatrz najpierw jak wygląda instrukcja sql -insert,raczej nie ma w niej set ,za to set jest w update.
Go to the top of the page
+Quote Post
Dominis
post
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 19
Dołączył: 13.02.2010

Ostrzeżenie: (0%)
-----


INSERT wyglada tak:
  1. INSERT INTO table_name (column1, column2, column3,...)
  2. VALUES (value1, value2, value3,...)


Notice, Ci daje znaki że zmienne:
  1. $imie = $_POST['imie'];
  2. $nazwisko = $_POST['nazwisko'];
  3. $wynik = $_POST['wynik'];


$_POST nie istnieja(nie sa wczesniej zadeklarowane).

Następnie z tego co widze, twoj skrypt łączy sie z mysql, ale nie wybiera żadnej bazy.

Popraw to wszystko i powinno działac.
Go to the top of the page
+Quote Post
szym011
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.06.2010

Ostrzeżenie: (0%)
-----


No tak. Nie spojrzałem na zapytanie.
Poprawnie powinno być tak:
  1. $ins = @mysql_query("INSERT INTO `wynik_konkursu` (`imie`, `nazwisko`, `wynik`) VALUES ('$imie', '$nazwisko', '$wynik')");

Radzę przy pisaniu takich rzeczy nie używać znaku małpy przed funkcją, oraz użyć or die(mysql_error()) co pozwoli trafnie sprecyzować błąd w zapytaniu.

A wysyłasz coś do tego skryptu za pomocą metody POST?
Nie pokazuje (a wcześniej pokazywało błędy), ponieważ nie zostały nadesłane formularzem takie dane.

Ten post edytował szym011 27.11.2011, 23:13:20
Go to the top of the page
+Quote Post
Sephirus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ok i dodatkowo

  1. $imie = $_POST['imie'];
  2. $nazwisko = $_POST['nazwisko'];
  3. $wynik = $_POST['wynik'];
  4.  
  5. (...)
  6.  
  7. $ins = @mysql_query("INSERT INTO wynik_konkursu SET imie='$imie', nazwisko='$nazwisko', wynik= '$wynik'");
  8.  


Upewnij się, że zmienne wrzucane do zapytania są bezpieczne...
Go to the top of the page
+Quote Post
-wabanek-
post
Post #9





Goście







Dalej nie działa (IMG:style_emoticons/default/sciana.gif)

  1. <?php
  2. $imie = isset($_POST['imie']);
  3. $nazwisko = isset($_POST['nazwisko']);
  4. $wynik = isset($_POST['wynik']);
  5. if($imie and $nazwisko and $wynik) {
  6. $adres_ip_serwera_mysql_z_baza_danych = 'localhost';
  7. $nazwa_bazy_danych = 'zawody';
  8. $login_bazy_danych = 'root';
  9. $haslo_bazy_danych = '';
  10. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,$login_bazy_danych,$haslo_bazy_danych) ) {
  11. echo 'Nie moge polaczyc sie z baza danych';
  12. exit (0);
  13. }
  14.  
  15. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  16. echo 'Blad otwarcia bazy danych';
  17. exit (0);
  18. }
  19.  
  20. $ins = @mysql_query("INSERT INTO `wynik_konkursu` (`imie`, `nazwisko`, `wynik`) VALUES ('$imie', '$nazwisko', '$wynik')");
  21.  
  22. if($ins) echo "Rekord zostal dodany poprawnie";
  23. else echo "Blad nie udalo sie dodac nowego rekordu";
  24.  
  25. }
  26. ?>
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  1. $imie = isset($_POST['imie']);
  2. $nazwisko = isset($_POST['nazwisko']);
  3. $wynik = isset($_POST['wynik']);


To zawsze zwróci albo true albo false. Do zmiennej przekazujesz tylko wynik isset(), a nie wartości POST.

Życzę powodzenia, jeżeli wszędzie będziesz korzystał z tak długich nazw zmiennych (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Prym
post
Post #11





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

Ostrzeżenie: (0%)
-----


Cytat(wabanek @ 28.11.2011, 19:09:18 ) *
Dalej nie działa (IMG:style_emoticons/default/sciana.gif)

  1. <?php
  2. $imie = isset($_POST['imie']);
  3. $nazwisko = isset($_POST['nazwisko']);
  4. $wynik = isset($_POST['wynik']);
  5. if($imie and $nazwisko and $wynik) {
  6. $adres_ip_serwera_mysql_z_baza_danych = 'localhost';
  7. $nazwa_bazy_danych = 'zawody';
  8. $login_bazy_danych = 'root';
  9. $haslo_bazy_danych = '';
  10. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,$login_bazy_danych,$haslo_bazy_danych) ) {
  11. echo 'Nie moge polaczyc sie z baza danych';
  12. exit (0);
  13. }
  14.  
  15. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  16. echo 'Blad otwarcia bazy danych';
  17. exit (0);
  18. }
  19.  
  20. $ins = @mysql_query("INSERT INTO `wynik_konkursu` (`imie`, `nazwisko`, `wynik`) VALUES ('$imie', '$nazwisko', '$wynik')");
  21.  
  22. if($ins) echo "Rekord zostal dodany poprawnie";
  23. else echo "Blad nie udalo sie dodac nowego rekordu";
  24.  
  25. }
  26. ?>


Ale co ci zwraca za błąd? nie dodaje do bazy? (np. pustych rekordów) czy co bo tak to wygląda raczej poprawnie zmieniłbym warunek na
Kod
if(  isset($imie) && isset($nazwisko) && isset($wynik))

Go to the top of the page
+Quote Post
-wabanek-
post
Post #12





Goście







Cytat(Prym @ 28.11.2011, 19:55:23 ) *
Ale co ci zwraca za błąd? nie dodaje do bazy? (np. pustych rekordów) czy co bo tak to wygląda raczej poprawnie zmieniłbym warunek na
Kod
if(  isset($imie) && isset($nazwisko) && isset($wynik))


dodaje rekord, ale w wyświetla tylko wartośc 1 albo nic a w wyniku 0! o co tu chodzi?(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Prym
post
Post #13





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

Ostrzeżenie: (0%)
-----


Cytat(wabanek @ 28.11.2011, 20:36:29 ) *
dodaje rekord, ale w wyświetla tylko wartośc 1 albo nic a w wyniku 0! o co tu chodzi?(IMG:style_emoticons/default/questionmark.gif)


Boże no tak przepraszam że napisałem że kod wygląda ok - nie wygląda. jak przekazujesz dane z POST do zmiennych to przez ten ISSET dodajesz nie wartości ale czy dane istnieja (isset sprawdza czy isntnieje post więc zwraca wynik warunku a nie wartość czyli MUSISZ zrobić w takim wypadku coś takiego:
  1. $imie = (isset($_POST['imie'])) ? $_POST['imie'] : false;
  2. $nazwisko = (isset($_POST['nazwisko'])) ? $_POST['nazwisko'] : false;
  3. $wynik = (isset($_POST['wynik'])) ? $_POST['wynik'] : false;


i musi działać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Niktoś
post
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


A po co takie kombinacje ,nie lepiej sprawdzić czy formularz został wysłany i potem robić zwykłe $_POST['imie'];
  1. <?php
  2. if ($_POST){
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $wynik = i$_POST['wynik'];
  6. if($imie and $nazwisko and $wynik) {
  7. $adres_ip_serwera_mysql_z_baza_danych = 'localhost';
  8. $nazwa_bazy_danych = 'zawody';
  9. $login_bazy_danych = 'root';
  10. $haslo_bazy_danych = '';
  11. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,$login_bazy_danych,$haslo_bazy_danych) ) {
  12. echo 'Nie moge polaczyc sie z baza danych';
  13. exit (0);
  14. }
  15.  
  16. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  17. echo 'Blad otwarcia bazy danych';
  18. exit (0);
  19. }
  20.  
  21. $ins = @mysql_query("INSERT INTO `wynik_konkursu` (`imie`, `nazwisko`, `wynik`) VALUES ('$imie', '$nazwisko', '$wynik')");
  22.  
  23. if($ins) echo "Rekord zostal dodany poprawnie";
  24. else echo "Blad nie udalo sie dodac nowego rekordu";
  25.  
  26. }
  27. }
  28. ?>

niż sprawdzać istnienie każdej zmiennej?
Go to the top of the page
+Quote Post
-wabanek-
post
Post #15





Goście







Cytat(Prym @ 28.11.2011, 21:51:02 ) *
Boże no tak przepraszam że napisałem że kod wygląda ok - nie wygląda. jak przekazujesz dane z POST do zmiennych to przez ten ISSET dodajesz nie wartości ale czy dane istnieja (isset sprawdza czy isntnieje post więc zwraca wynik warunku a nie wartość czyli MUSISZ zrobić w takim wypadku coś takiego:
  1. $imie = (isset($_POST['imie'])) ? $_POST['imie'] : false;
  2. $nazwisko = (isset($_POST['nazwisko'])) ? $_POST['nazwisko'] : false;
  3. $wynik = (isset($_POST['wynik'])) ? $_POST['wynik'] : false;


i musi działać (IMG:style_emoticons/default/smile.gif)


imie nazwisko działa (IMG:style_emoticons/default/smile.gif) , wynik wpisuje wartośc "0" (IMG:style_emoticons/default/sad.gif) , jest blisko
Go to the top of the page
+Quote Post
Prym
post
Post #16





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

Ostrzeżenie: (0%)
-----


Cytat(wabanek @ 28.11.2011, 22:37:41 ) *
imie nazwisko działa (IMG:style_emoticons/default/smile.gif) , wynik wpisuje wartośc "0" (IMG:style_emoticons/default/sad.gif) , jest blisko


hm to wygląda że post nie przekazuje danych (czyli może w formularzu nie do końca masz nazwę wartosc? (może jakiś program dał ci ść w nazwę zmiennej - mój pająk czasem mi takie psikusy robi (IMG:style_emoticons/default/smile.gif) )
A ogólnie to ja mam zawsze dodaną taką funkcję do kodu:

  1. function testArray($co) {echo '<pre>';print_r($co);echo '</pre>';}


i sobie testuje co jest przekazywane w tablicach (równiez posty i gety) łącznie z nazwą indexu:

  1. testArray($_POST);


powyższy kod wyświetli ci co jest przekazywane. i Ponownie Jak nie masz danych w wartosc to znaczy błąd w budowie formularza (błędne name="")
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 07:50