Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z dodaniem rekordu do bazy
Forum PHP.pl > Forum > Przedszkole
Adam_
Witam,

Mam problem z dodaniem rekordu do bazy danych, ten problem był już tu wyjaśniany wiele razy, ale mimo zastosowania różnych porad, wciąż wyskakuje mi błąd - nie wiem w czym jest problem sad.gif.

Oto mój plik:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <link rel="stylesheet" href="css/style.css" type="text/css" />
  6. <title>Dodaj typ do bazy</title>
  7. </head>
  8. <body>
  9. <h1>Dodaj typ do bazy</h1>
  10. <table>
  11. <form method="post" action="add.php">
  12. <tr>
  13. <td>Data</td><td><input type="text" name="data" size="5" value="<? echo date("d-m");?>" /></td>
  14. </tr>
  15. <tr>
  16. <td>Zdarzenie</td><td><input type="text" name="zdarzenie" size="25" /></td>
  17. </tr>
  18. <tr>
  19. <td>Typ</td><td><input type="text" name="typ" size="5" /></td>
  20. </tr>
  21. <tr>
  22. <td>Kurs</td><td><input type="text" name="kurs" size="5" /> <span class="description">(ważne aby użyć kropki, a nie przecinka)</span></td>
  23. </tr>
  24. <tr>
  25. <td>Stawka</td><td><select name="stawka" size="1">
  26. <option>1</option>
  27. <option>2</option>
  28. <option>3</option>
  29. <option>4</option>
  30. <option>5</option>
  31. <option>6</option>
  32. <option>7</option>
  33. <option>8</option>
  34. <option>9</option>
  35. <option>10</option>
  36. </select></td>
  37. </tr>
  38. <tr>
  39. <td>Bukmacher</td><td><input type="text" name="buk" size="10" /></td>
  40. </tr>
  41. <tr>
  42. <td><input type="submit" name="submit" id="submit" value="Dodaj typ" /></td>
  43. </tr>
  44. </form>
  45. </table>
  46. <?php
  47.  
  48. $data_dodania = date("Y/m/d");
  49. $data = $_POST['data'];
  50. $zdarzenie = $_POST['zdarzenie'];
  51. $typ = $_POST['typ'];
  52. $kurs = $_POST['kurs'];
  53. $stawka = $_POST['stawka'];
  54. $buk = $_POST['buk'];
  55.  
  56. if ($data and $zdarzenie and $typ and $kurs and $stawka and $buk) {
  57.  
  58. $connection = @mysql_connect('localhost', 'user', 'haslo')
  59. or die ('Brak połączenia z serwerem MySQL.');
  60. $db = mysql_select_db('baza', $connection)
  61. or die ('Wystąpił błąd. Nie mogę połączyć się z bazą danych.');
  62.  
  63. $ins = mysql_query("INSERT into typy SET data_dodania='$data_dodania', data='$data', zdarzenie='$zdarzenie', typ='$typ', kurs='$kurs', stawka='$stawka', buk='$buk', bilans_typu='NULL',wynik_typu='NULL'");
  64.  
  65. if($ins) {
  66. echo 'Typ został dodany do bazy.';
  67. } else {
  68. echo 'Wystąpił błąd. Typ nie został dodany do bazy.';
  69. }
  70.  
  71. mysql_close($connection);
  72.  
  73. }
  74.  
  75. ?>
  76. </body>
  77. </html>


Tabela skonstruowana jest tak: http://img706.imageshack.us/img706/2466/bazan.jpg - czyli pola "data dodania, data, zdarzenie, typ, kurs, stawka i buk" uzupełniane są poprzez formularz, a pola "rezultat_typu i wynik_typu" zostają puste (będą zaktualizowane później).

Nie wiem w czym jest problem - robiłem zapytanie z INSERT into typy values ('tutaj wartości') i tak jak podałem wyżej z SET i konkretnymi polami, ale ciągle jest błąd.
patryczakowy
nie masz w tabeli pola "bilans_typu" po za tym przydał by się w tabeli jakiś klucz "id" niepowtarzalny jednoznacznie identyfikujący dany wiersz w tabeli
Adam_
Cytat(patryczakowy @ 11.07.2010, 10:57:52 ) *
nie masz w tabeli pola "bilans_typu" po za tym przydał by się w tabeli jakiś klucz "id" niepowtarzalny jednoznacznie identyfikujący dany wiersz w tabeli



Tak wiem - pomyliłem się, zamiast bilans_typu jest rezultat_typu, a primary key ma pole "data_dodania".
krzysztof_kf
Dla czego dajesz zmienna $connection do wyboru bazy danych ?


tzw powyżej użytkownikowi chodzi o dodatkowe pole

czyli :

Pole o nazwie id

Typ danych :

Typ: BIGINT
Atrybut: UNSIGNED
Index: PRIMARY
A_I: Włączone
Adam_
Cytat(krzysztof_kf @ 11.07.2010, 11:01:12 ) *
Dla czego dajesz zmienna $connection do wyboru bazy danych ?


Właśnie to usunąłem, ale nadal niestety jest błąd.

Edit:

Jeszcze co do tego postu użytkownika patryczakowy - może faktycznie to jest wina tego, że nie ma pola z unikatową wartością - właśnie id, chyba muszę zrobić nową tabelę.
krzysztof_kf
Jaki błąd co ci wyskakuję ?
patryczakowy
daj sobie po mysql_query

i będziesz widział gdzie masz błąd.
Adam_
Cytat(patryczakowy @ 11.07.2010, 11:07:49 ) *
daj sobie po mysql_query

i będziesz widział gdzie masz błąd.


Ok już wiem co to za błąd - tak jak napisałeś na początku - trzeba zrobić pole z niepowtarzalnym id i tam dać primary key. Wielkie dzięki za pomoc.

Wczoraj raz zadziałało, a później ciągle wyskakiwał błąd, bo była ta sama data_dodania, dzisiaj spróbowałem jeszcze raz i od razu zadziałało (w końcu inny dzień biggrin.gif), ale przy dodaniu następnego zapytania wyskakiwał błąd - teraz już wszystko jasne, jeszcze raz dzięki. smile.gif
gigzorr
Cytat(patryczakowy @ 11.07.2010, 11:07:49 ) *
daj sobie po mysql_query

i będziesz widział gdzie masz błąd.


i nie tłum błędów przy połączeniu to będziesz wiedział co jest źle (@) .

i daj przed if ($ins)
  1. $ins = mysql_query($ins);
krzysztof_kf
I tak na marginesie podatne na SQL injection

dodaj sobie po if


  1. else {
  2.  
  3. $data_dodania = mysql_real_escape_string($data_dodania);



i tak dla wszystkich zmiennych .
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.