Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/sql] Posty
Forum PHP.pl > Forum > Przedszkole
szmerak
Mam taki kod nie wiem co w nim robie źle chce poprostu dodać do bazy danych rekord

  1. <?
  2. include_once('conect.php');
  3. $ip = "$_SERVER[REMOTE_ADDR]";
  4. ?>
  5. <form action="dodaj.php" method=POST>
  6. Nazwa: <input type=text name="name" size=10><br>
  7. Tekst: <textarea type=text name="tekst" cols=30 rows=5></textarea>
  8. <input type=hidden name="ip" value="<? echo $ip; ?>"><br>
  9.  
  10. <input type=submit value=Dodaj>
  11. </form>
  12.  
  13. <?
  14. $name = $_POST['name'];
  15. $tekst = $_POST['tekst'];
  16. $ip = $_POST['ip'];
  17.  
  18. if($name and $tekst and $ip) {
  19. // łączymy się z bazą danych
  20. $connection = @mysql_connect($host, $user, $pass)
  21. or die('Brak połączenia z serwerem MySQL');
  22. $db = @mysql_select_db($baza, $connection)
  23. or die('Nie mogę połączyć się z bazą danych');
  24.  
  25.  
  26. $dodaj = @mysql_query("INSERT INTO sh_shoutbox SET name='$name', tekst='$tekst', 
  27.  
  28. ip='$ip'");
  29.  
  30. if($dodaj) echo "Post został dodany!";
  31. else echo "Nie udało się dodać postu";
  32.  
  33. mysql_close($connection); 
  34. }
  35.  
  36. ?>
Fallout
No ok, ale pojawia Ci się jakiś komunikat z Die()questionmark.gif
Usuń @ sprzed mysql_query i zobacz czy zapytanie jest poprawne,
no i przy mysql query uzywaj mysql_query("zapytanie",$connection);
mozesz takze sprawdzić czy warunek if($name and $tekst and $ip) jest spełniony.

Trochę więcej debugowania przed postowaniem smile.gif
szmerak
Tak po pierwsze warunek if jest spełniony po drugie die z połoączeniem mi nie wywala. wywala mi Nie udało się dodać postu znaczy else a po 3 usunołem te @ i to nic nie dało!
Fallout
Hmm..

$dodaj przechowuje wynik zapytania. Jeśli to zapytanie wykonało się poprawnie to nie ma możliwości aby wywalało "Nie udało się dodać postu", więc wywal wszystkie @ i dodaj Die po mysql_query tak jak wcześniej używasz lub po prostu mysql_error().
Fixus
a zrób taki manewr

daj
Kod
echo $dodaj;


następnie skopiuj to co wywaliło ci i wrzuć se to przez phpMyAdmin...jesli jest jakiś błąd to ci go zwróci albo prościej przez skrypt proponuje skorzystać z mysql_errno() i mysql_error w celu zlokalizowania błędu smile.gif
szmerak
  1. <?
  2. include_once('conect.php');
  3. $ip = "$_SERVER[REMOTE_ADDR]";
  4. ?>
  5. <form action="dodaj.php" method=POST>
  6. Nazwa: <input type=text name="name" size=10><br>
  7. Tekst: <textarea type=text name="tekst" cols=30 rows=5></textarea>
  8. <input type=hidden name="ip" value="<? echo $ip; ?>"><br>
  9.  
  10. <input type=submit value=Dodaj>
  11. </form>
  12.  
  13. <?
  14. $name = $_POST['name'];
  15. $tekst = $_POST['tekst'];
  16. $ip = $_POST['ip'];
  17.  
  18. if($name and $tekst and $ip) {
  19. // łączymy się z bazą danych
  20. $connection = @mysql_connect($host, $user, $pass)
  21. or die('Brak połączenia z serwerem MySQL');
  22. $db = mysql_select_db($baza, $connection)
  23. or die('Nie mogę połączyć się z bazą danych');
  24.  
  25.  
  26. $dodaj = mysql_query("INSERT INTO sh_shoutbox SET name='$name', tekst='$tekst', ip='$ip', $connection")
  27. or die('Nie moge dodać postu');
  28.  
  29. if($dodaj) echo "Post został dodany!";
  30. else echo "Nie udało się dodać postu";
  31.  
  32. mysql_close($connection); 
  33. }
  34. echo $dodaj;
  35. ?>

teraz mam tak ale to nic nie daje! wywala mi Nie moge dodać postu
Kicok
1. Żeby wyświetliło ci czytelniejszy błąd stosuj funkcję mysql_error:
  1. <?php
  2. $dodaj = mysql_query('SELECT (...) ') or die('Nie moge dodać postu <br>' . mysql_error());
  3. ?>


2. Identyfikator połączenia podaje się nako drugi parametr funkcji mysql_query, a nie wstawia się go do treści zapytania.
szmerak
  1. <?
  2. require('config.php');
  3.  
  4. // nawiazujemy polaczenie
  5.  
  6. $connection = @mysql_connect($host, $user, $pass)
  7.  
  8. // w przypadku niepowodznie wyświetlamy komunikat
  9.  
  10. or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  11.  
  12. // nawiązujemy połączenie z bazą danych
  13.  
  14. $db = @mysql_select_db($baza, $connection)
  15.  
  16. // w przypadku niepowodzenia wyświetlamy komunikat
  17.  
  18. or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  19.  
  20. if($db) echo "Udało sie połączyć";
  21. else echo "Nie udało się połączyć";
  22.  
  23.  
  24. ?>

Chciałem zobaczyć czy mam błąd z bazą danych ale wywala mi że "Udało się połączyć" dodałem linijke if()

Cytat(Kicok @ 4.05.2007, 18:38:29 ) *
1. Żeby wyświetliło ci czytelniejszy błąd stosuj funkcję mysql_error:
  1. <?php
  2. $dodaj = mysql_query('SELECT (...) ') or die('Nie moge dodać postu <br>' . mysql_error());
  3. ?>


2. Identyfikator połączenia podaje się nako drugi parametr funkcji mysql_query, a nie wstawia się go do treści zapytania.


wywala mi taki błąd

Nie moge dodać rekordu do bazy
Błšd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #4' at line 1
nospor
nie:
  1. <?php
  2. $dodaj = mysql_query("INSERT INTO sh_shoutbox SET name='$name', tekst='$tekst', ip='$ip', $connection")
  3. ?>

a:
  1. <?php
  2. $dodaj = mysql_query("INSERT INTO sh_shoutbox SET name='$name', tekst='$tekst', ip='$ip'",$connection)
  3. ?>

Widzisz delikatna roznice?
szmerak
Nie moge dodać rekordu do bazy
Błšd: Unknown column 'name' in 'field list'

a bez tego $connection na końcu też nie działa i z tym także nie działa ;/

  1. <?
  2. include_once('conect.php');
  3. $ip = "$_SERVER[REMOTE_ADDR]";
  4. ?>
  5. <form action="dodaj.php?page=1" method=POST>
  6. Nazwa: <input type=text name="name" size=10><br>
  7. Tekst: <textarea type=text name="tekst" cols=30 rows=5></textarea>
  8. <input type=hidden name="ip" value="<? echo $ip; ?>"><br>
  9.  
  10. <input type=submit value=Dodaj>
  11. </form>
  12. <?
  13. switch 
  14. ($_GET['page']) 
  15. { 
  16. case 1: 
  17. $name = $_POST['name'];
  18. $tekst = $_POST['tekst'];
  19. $ip = $_POST['ip'];
  20.  
  21. if($name and $tekst and $ip) {
  22. // łączymy się z bazą danych
  23. $connection = @mysql_connect($host, $user, $pass)
  24. or die('Brak połączenia z serwerem MySQL');
  25. $db = mysql_select_db($baza, $connection)
  26. or die('Nie mogę połączyć się z bazą danych');
  27.  
  28.  
  29.  
  30. $dodaj = mysql_query("INSERT INTO sh_shoutbox SET name='$name', tekst='$tekst', 
  31.  
  32. ip='$ip'",$connection)
  33.  
  34. or die('Nie moge dodać rekordu do bazy<br />Błąd: '.mysql_error());
  35.  
  36. if($dodaj) echo "Post został dodany!";
  37. else echo "Nie udało się dodać postu";
  38.  
  39. mysql_close($connection); 
  40. }
  41. break;
  42. }
  43.  
  44. ?>

Tak zrobiłem ale także nie działa exclamation.gif!!!!!

A w tabeli mam takie kolumny

id
nazwa
ip
tekst
nospor
Cytat
Unknown column 'name' in 'field list'
Co znaczy: nieznana kolumna name

Cytat
A w tabeli mam takie kolumny

id
nazwa
ip
tekst

Wlacz chlopie myslenie...

ps: jesli nadal nie wiesz to przyjrzyj sie slowom, ktore pogrubilem
szmerak
Post został dodany!
Dziękuje panie administratorze..
Zaśmiecam forum przez moje głupoty!

Można zamknąć!
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.