Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Nie dodaje i nie edytuje rekordow
Forum PHP.pl > Forum > Przedszkole
adek-
Witam skrypt nie dodaje, nie edytuje i nie kasuje rekordów. Po tym jak dodam do bazy ręcznie dane przez phpmyadmin to mi je wyświetla, ale nie idzie nic z automatu... Jeszcze pewne rzeczy nie są dociągnięte typu upload pliku, ale chciałem już dodawać chociaż dane.
Proszę o pomoc w usunięciu problemu z dodawaniem.
PS drażni mnie trochę to rozbijanie na query i query. i te && $_POST, jest jakiś ładniejszy sposób dodawania rekordów, a zarazem bezpieczny?

Dokładniej chodzi mi o ten początek

  1. if ($_POST['co'] == 'dodaj') {
  2. if ($_POST['kraj'] && $_POST['wartosc'] && $_POST['rok_obrotu'] && $_POST['rok_obrotu2'] && $_POST['rodz_metalu'] && $_POST['srednica'] && $_POST['grubosc'] && $_POST['masa'] && $_POST['zdjecie_awers']) {
  3. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  4. $query .="VALUES ('" . $_POST['kraj'] . "', '" . $_POST['wartosc'] . "', '" . $_POST['rok_obrotu'] . "', '" . $_POST['rok_obrotu2'] . "' ";
  5. $query .=", '" . $_POST['rodz_metalu'] . "', '" . $_POST['srednica'] . "', '" . $_POST['grubosc'] . "', '" . $_POST['masa'] . "', '" . $_POST['zdjecie_awers'] . "' );";
  6. $wynik = mysql_query ($query);
  7. }
  8.  
  9. print '<form METHOD="POST">Nowy rekord:';
  10. print '<input type="hidden" name="co" VALUE="dodaj">';
  11. print '<table><tr><td>Kraj:</td><td><input type="text" name="kraj"></td></tr>';
  12. print '<tr><td>Wartosc:</td><td><input type="text" name="wartosc">zl</td></tr>';
  13. print '<tr><td>Rok obrotu:</td><td><input type="text" maxlength="4" size="4" name="rok_obrotu">-<input type="text" maxlength="4" size="4" name="rok_obrotu2">lata</td></tr>';
  14. print '<tr><td>Rodzaj metalu:</td><td><input type="text" maxlength="3" size="3" name="rodz_metalu">(próba 500-999)</td></tr>';
  15. print '<tr><td>Srednica:</td><td><input type="text" name="srednica">mm (np: 32.00 mm)</td></tr>';
  16. print '<tr><td>Grubosc:</td><td><input type="text" name="grubosc">mm (np: 1.85 mm)</td></tr>';
  17. print '<tr><td>Masa:</td><td><input type="text" name="masa">g (np: 15.55 g)</td></tr>';
  18. print '<tr><td>Zdjecie:</td><td><input type="text" name="zdjecie_awers"></td></tr>';
  19. print '</table><input type="submit" VALUE="dodaj"></form>';


PS czy jest jakaś różnica w dodawaniu jeśli w bazie jest jeszcze jedno pole zdjecie_rewers, a nie jest tutaj uwzględnine? Czy aby dodało muszą być wszystkie pola jakie sa w bazie?


PONIZEJ CALY SKRYPT:
  1. <?
  2. mysql_connect ("localhost", "root", "xxx") or
  3. die ("nie mozna polaczyc sie z mysql");
  4. mysql_select_db ("xxx") or
  5. die ("nie mozna polaczyc sie z mysql");
  6.  
  7. if ($_POST['co'] == 'dodaj') {
  8. if ($_POST['kraj'] && $_POST['wartosc'] && $_POST['rok_obrotu'] && $_POST['rok_obrotu2'] && $_POST['rodz_metalu'] && $_POST['srednica'] && $_POST['grubosc'] && $_POST['masa'] && $_POST['zdjecie_awers']) {
  9. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  10. $query .="VALUES ('" . $_POST['kraj'] . "', '" . $_POST['wartosc'] . "', '" . $_POST['rok_obrotu'] . "', '" . $_POST['rok_obrotu2'] . "' ";
  11. $query .=", '" . $_POST['rodz_metalu'] . "', '" . $_POST['srednica'] . "', '" . $_POST['grubosc'] . "', '" . $_POST['masa'] . "', '" . $_POST['zdjecie_awers'] . "' );";
  12. $wynik = mysql_query ($query);
  13. }
  14. } elseif ($_POST['co'] == 'popraw') {
  15. if ($_POST['kraj'] && $_POST['wartosc'] && $_POST['rok_obrotu'] && $_POST['rok_obrotu2'] && $_POST['rodz_metalu'] && $_POST['srednica'] && $_POST['grubosc'] && $_POST['masa'] && $_POST['zdjecie_awers']) {
  16. $query = "UPDATE monety SET kraj='" .$_POST['kraj']. "', wartosc =";
  17. $query.= "'".$_POST['wartosc']."', rok_obrotu='".$_POST['rok_obrotu']."' WHERE nr='". $_POST['id']."';";
  18. $wynik = mysql_query ($query);
  19. //niedokończone poprawianie bo w zasadzie na razie nie zamierzam poprawiac zanim czegos tam nie wrzuce! :)
  20. }
  21. } elseif ($_GET['co']=='edytuj'){
  22. $query = "SELECT* FROM monety WHERE nr='".$_GET['id']."';";
  23. $wynik= mysql_query ($query);
  24. $rekord = mysql_fetch_assoc ($wynik);
  25. $nr = $rekord['nr']; $kraj=$rekord['kraj']; $wartosc=$rekord['wartosc']; $rok_obrotu=$rekord['rok_obrotu']; $rok_obrotu2=$rekord['rok_obrotu2']; $rodz_metalu=$rekord['rodz_metalu']; $srednica=$rekord['srednica']; $grubosc=$rekord['grubosc']; $masa=$rekord['masa']; $zdjecie_awers=$rekord['zdjecie_awers'];
  26. print '<form METHOD="POST">poprawa rekordu:';
  27. print '<input type="hidden" name="co" VALUE="popraw">';
  28. print '<input type="hidden" name="id" VALUE="'.$nr.'">';
  29. print '<table>';
  30. print '<tr><td>kraj:</td><td><input type="text" name="kraj" VALUE="'.$kraj.'"></td></tr>';
  31. print '<tr><td>wartosc:</td><td><input type="text" name="wartosc" VALUE="'.$wartosc.'"></td></tr>';
  32. print '<tr><td>rok obrotu:</td><td><input type="text" name="rok_obrotu" VALUE="'.$rok_obrotu.'">-<input type="text" name="telefon" VALUE="'.$rok_obrotu2.'"></td></tr>';
  33. print '<tr><td>rodz_metalu:</td><td><input type="text" name="rok_obrotu" VALUE="'.$rodz_metalu.'"></td></tr>';
  34. print '<tr><td>srednica:</td><td><input type="text" name="srednica" VALUE="'.$srednica.'"></td></tr>';
  35. print '<tr><td>grubosc:</td><td><input type="text" name="grubosc" VALUE="'.$grubosc.'"></td></tr>';
  36. print '<tr><td>masa:</td><td><input type="text" name="masa" VALUE="'.$masa.'"></td></tr>';
  37. print '<tr><td>zdjecie_awers:</td><td><input type="text" name="zdjecie_awers" VALUE="'.$zdjecie_awers.'"></td></tr>';
  38. print '</table><input type="submit" VALUE="popraw"></form>';
  39.  
  40. } elseif ($_GET['co']=='skasuj') {
  41. $wynik = mysql_query
  42. ("DELETE FROM monety WHERE nr= '".$_GET['id']."';");
  43. }
  44.  
  45. print '<form METHOD="POST">Nowy rekord:';
  46. print '<input type="hidden" name="co" VALUE="dodaj">';
  47. print '<table><tr><td>Kraj:</td><td><input type="text" name="kraj"></td></tr>';
  48. print '<tr><td>Wartosc:</td><td><input type="text" name="wartosc">zl</td></tr>';
  49. print '<tr><td>Rok obrotu:</td><td><input type="text" maxlength="4" size="4" name="rok_obrotu">-<input type="text" maxlength="4" size="4" name="rok_obrotu2">lata</td></tr>';
  50. print '<tr><td>Rodzaj metalu:</td><td><input type="text" maxlength="3" size="3" name="rodz_metalu">(próba 500-999)</td></tr>';
  51. print '<tr><td>Srednica:</td><td><input type="text" name="srednica">mm (np: 32.00 mm)</td></tr>';
  52. print '<tr><td>Grubosc:</td><td><input type="text" name="grubosc">mm (np: 1.85 mm)</td></tr>';
  53. print '<tr><td>Masa:</td><td><input type="text" name="masa">g (np: 15.55 g)</td></tr>';
  54. print '<tr><td>Zdjecie:</td><td><input type="text" name="zdjecie"></td></tr>';
  55. print '</table><input type="submit" VALUE="dodaj"></form>';
  56.  
  57. $wynik = mysql_query ("SELECT * FROM monety;") or
  58. die ("blad w pytaniu");
  59. print "<table cellpadding=5 border=1>";
  60. print "<tr><td><b>kraj</b></td><td>wartosc</td><td><b>rok obrotu</b></td><td>rok obrotu2</td><td><b>rodz_metalu</b></td>";
  61. print "<td>srednica</td><td><b>grubosc</b></td><td>masa</td><td><b>zdjecie_rewers</b></td></tr>\n";
  62. while ($rekord = mysql_fetch_assoc ($wynik)){
  63. $nr=$rekord['nr'];
  64. $kraj =$rekord['kraj'];
  65. $wartosc= $rekord['wartosc'];
  66. $rok_obrotu= $rekord['rok_obrotu'];
  67. $rok_obrotu2= $rekord['rok_obrotu2'];
  68. $rodz_metalu= $rekord['rodz_metalu'];
  69. $srednica= $rekord['srednica'];
  70. $grubosc= $rekord['grubosc'];
  71. $masa= $rekord['masa'];
  72. $zdjecie_rewers= $rekord['zdjecie_rewers'];
  73. print "<tr><td>$kraj</td><td>$wartosc</td><td>$rok_obrotu</td><td>$rok_obrotu2</td><td>$rodz_metalu</td><td>$srednica</td><td>$grubosc</td><td>$masa</td><td>$zdjecie_rewers</td><td>";
  74. print "<a href=\"baza.php?co=skasuj&id=$nr\">skasuj</a></td><td>\n";
  75. print "<a href=\"baza.php?co=edytuj&id=$nr\">edytuj</a></td></tr>\n";
  76.  
  77. }
  78. print "</table>";
  79.  
  80. ?>
wookieb
Temat: Jak poprawnie zadac pytanie
impro
czy użytkownik ma dostateczne uprawienia do wykonywania takich poleceń
zajad mu najprostsze zapytanie jakie są do edycji.
prawdopodobnie literówka
Jeśli polecenie select działa to być może tkwi błąd w formularzu zobacz co zwraca użyj echo.

  1.  
  2. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  3. //wcześniej z
  4. $kraj = $_POST['kraj'];
  5. $query = "INSERT INTO monety values ($kraj, $wartosc, $rok_obrotu, $rok_obrotu2, $rodz_metalu, $srednica, $grubosc, $masa, $zdjecie_awers)";
  6. //lub chyba
  7. $query = "INSERT INTO monety values ($_POST['kraj'], $_POST['wartosc'])";
  8.  


toaspzoo
w zapytaniach nie możesz używać tablic ($_POST['tablica'])
impro
też mi się tak wydaje poza tym i tak trzeba będzie odfltrować znaki specjalne.
Moja propozycja jest taka napisać najprostszy kod dodający do bazy danych i zobaczyć czy działa pierw nawet niech nie pobiera z formularza i szukać przyczyny.
Później dodać formularz jeśli psuje nam to działanie wina formularza i szukać przyczyny.
adek-
tak literówka była przy dodawaniu zdjęcia, zamiast zdjecie_rewers było zdjecie smile.gif
teraz próbuję zrobić tak jak mówiliście, nie wiem czy dobrze zrozumiałem ale chodzi o to aby skrypt wyglądał tak?

zamiast tak
  1. if ($_POST['co'] == 'dodaj') {
  2. if ($_POST['kraj'] && $_POST['wartosc'] && $_POST['rok_obrotu'] && $_POST['rok_obrotu2'] && $_POST['rodz_metalu'] && $_POST['srednica'] && $_POST['grubosc'] && $_POST['masa'] && $_POST['zdjecie_awers']) {
  3. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  4. $query .="VALUES ('" . $_POST['kraj'] . "', '" . $_POST['wartosc'] . "', '" . $_POST['rok_obrotu'] . "', '" . $_POST['rok_obrotu2'] . "' ";
  5. $query .=", '" . $_POST['rodz_metalu'] . "', '" . $_POST['srednica'] . "', '" . $_POST['grubosc'] . "', '" . $_POST['masa'] . "', '" . $_POST['zdjecie_awers'] . "' );";
  6. $wynik = mysql_query ($query);
  7. }


wyglądał tak:
  1. $kraj=$_POST['kraj'];
  2. $wartosc=$_POST['wartosc'];
  3. $rok_obrotu=$_POST['rok_obrotu'];
  4. $rok_obrotu2=$_POST['rok_obrotu2'];
  5. $srednica=$_POST['srednica'];
  6. $grubosc=$_POST['grubosc'];
  7. $masa=$_POST['masa'];
  8. $zdjecie_awers=$_POST['zdjecie_awers'];
  9.  
  10. if ($_POST['co'] == 'dodaj') {
  11. if ($_POST['kraj'] && $_POST['wartosc'] && $_POST['rok_obrotu'] && $_POST['rok_obrotu2'] && $_POST['rodz_metalu'] && $_POST['srednica'] && $_POST['grubosc'] && $_POST['masa'] && $_POST['zdjecie_awers']) {
  12. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  13. $query .="VALUES ('$kraj','$wartosc','$rok_obrotu','$rok_obrotu2','$srednica','$grubosc','$masa','$zdjecie_awers' );";
  14. $wynik = mysql_query ($query);
  15. }


nie, to powyżej mi nie działa, chyba że, trzeba owe zmienne wkleić w inne miejsce np po $wynik = mysql_query ($query);, czy to nie ma różnicy?
impro
  1. $query = "INSERT INTO monety (kraj, wartosc, rok_obrotu, rok_obrotu2, rodz_metalu, srednica, grubosc, masa, zdjecie_awers)";
  2. $query .="VALUES ('$kraj','$wartosc','$rok_obrotu','$rok_obrotu2','$srednica','$grubosc','$masa','$zdjecie_awers' );";
  3.  
  4. //tak
  5. $kraj = 'Polska';
  6. $query = "INSERT INTO monety VALUES ('".$kraj."')";
  7. /sprawdź czy coś dodaje
  8.  
IceManSpy
Jasne, że może używać tablic w zapytaniach np:
  1. $sql = "select * from tabelka where id={$_POST['id']}"

Tylko jest to bardzo niebezpieczne.
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.