Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Modyfikacja danych
Forum PHP.pl > Forum > Przedszkole
MarcinFC
Witam
Na jednej ze stron znalazłem kod do modyfikacji danych w bazie. Po odpaleniu pliku poprawnie wyswietla pobrane dane ale po naciśnięciu Modyfikacja nic się nie dzieje. Tzn nie wyświetla formularzy z danym id potrzebnych do modyfikacji tylko pozostaje na 1 stronie.
Prosiłbym o pomoc jak sobie z tym poradzić.

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <table border="1" width="98%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
  6. <tr>
  7. <td width="96%" colspan="7" bgcolor="#C0C0C0">
  8. <p align="center"><b><font size="2">Dane osobowe</font></b></td>
  9. </tr>
  10. <tr>
  11. <td width="4%" align="center" bgcolor="#E0E0E0">
  12. <p align="center"><font size="2">&nbsp;ID</font></td>
  13. <td width="18%" align="center" bgcolor="#E0E0E0">
  14. <p align="center"><font size="2">Imię</font></td>
  15. <td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Nazwisko</font></td>
  16. <td width="6%" align="center" bgcolor="#E0E0E0"><font size="2">Modyfikuj</font></td>
  17. </tr>
  18.  
  19.  
  20. <?php
  21.  
  22. // podłączamy plik connection.php
  23. require "connection.php";
  24. // wywołujemy funkcję connection()
  25. connection();
  26.  
  27. $zapytanie = "SELECT * FROM statystyki ORDER BY id ASC";
  28. $wykonaj = mysql_query ($zapytanie);
  29. while($wiersz=mysql_fetch_array ($wykonaj)) {
  30. echo " <tr>
  31. <td width=\"4%\">".$wiersz['id']."</td>
  32. <td width=\"18%\">".$wiersz['imienazwisko']."</td>
  33. <td width=\"18%\">".$wiersz['pozycja']."</td>
  34. <td width=\"6%\"><b><a href=\"nowy2.php?stan=modyf&idmodyf=".$wiersz['id']."\">
  35. Modyfikacja</a></b></td>
  36. </tr>";
  37. }
  38. if($stan=='modyf') {
  39. $zapytanie = "SELECT * FROM dane where id=$idmodyf";
  40. $wykonaj = mysql_query ($zapytanie);
  41. $tablica = mysql_fetch_array($wykonaj);
  42. echo "<form method=\"get\" action=\"nowy2.php\">
  43. <div align=\"center\">
  44. <center>
  45. <table border=\"1\" width=\"50%\" bordercolorlight=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">
  46. <tr>
  47. <td width=\"50%\"><font size=\"2\" face=\"Verdana\">Imie</font></td>
  48. <td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"imie\" value=\"".$tablica['imienazwisko']."\" size=\"20\"></font></td>
  49. </tr>
  50. <tr>
  51. <td width=\"50%\"><font size=\"2\" face=\"Verdana\">Nazwisko</font></td>
  52. <td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"nazwisko\" value=\"".$tablica['pozycja']."\" size=\"20\"></font></td>
  53. </tr>
  54. <tr>
  55. <td width=\"100%\" colspan=\"2\">
  56. <p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"hidden\" name=\"modyfikuj\" value=\"$idmodyf\"><input type=\"submit\" value=\"Modyfikuj\" name=\"send\"></font></td>
  57. </tr>
  58. </table>
  59. </center>
  60. </div>
  61. </form>";
  62.  
  63. }
  64. else if ($send=='Modyfikuj'){$zapytanie = "UPDATE dane SET imie='$imienazwisko', nazwisko='$pozycja' WHERE id=$modyfikuj";
  65. $wykonaj = mysql_query ($zapytanie);
  66. echo "<br>Dane poprawione<BR><a href=\"nowy2.php\">Obejrzyj poprawiona bazę</a>";}
  67. else {
  68.  
  69. }
  70. ?>
  71. </table>
  72. </body>
  73. </html>



Pozdrawiam
Wicepsik
$_GET
MarcinFC
a gdzie to mam zastosować. Sorki ale jestem początkujacy z bazami.
Wicepsik
To jest php.
MarcinFC
fakt pomyliłem się. Szkoda tylko ze nie mozna podpowiedzieć.
Wicepsik
Pisze w manualu jak zastosować. To są PODSTAWY.
MarcinFC
to po co jest to forum zeby podać mi linka questionmark.gif Jak bym wiedział to już bym to zrobił. Nie wiem jak na tym przypadku to zastosować.
Wicepsik
Dając Ci gotowe rozwiązanie nie nauczysz się dużo....

  1. 'nowy2.php?stan=modyf&idmodyf=1'


Jakbyś tutaj zastosował get ?
MarcinFC
($_GET['stan'] == 'modyf') questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?

jezeli nie to nic juz nie wiem. pół dnia sie mecze i co bym nie zrobił to dalej nie działa i juz mam dosc

narka

no dobra niby zadziałało smile.gif tylko teraz wyswietliło się tez taki błąd

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web67/domains/om.9x.pl/public_html/statystyki/include/nowy2.php on line 41



Wicepsik
Pokaż jak przerobiłeś.
MarcinFC
Szczerze powiedziawszy to nie mam juz sił dalej to robić. Mam tylko jeszcze jedno pytanie. Wczesniej strone miałem na innym serwerze i tam ten kod działał bez problemu a na nowym serwerze juz nie działa. Dlaczego tak sie dzieje questionmark.gif

Pozdrawiam i dzieki ze chcesz pomoc smile.gif. Odpoczne to znow sie tym zajme.

Dobra mam w tej chwili cos takiego

  1. <?php
  2.  
  3. // podłączamy plik connection.php
  4. require "connection.php";
  5. // wywołujemy funkcję connection()
  6. connection();
  7.  
  8. $zapytanie = "SELECT * FROM statystyki ORDER BY id ASC";
  9. $wykonaj = mysql_query ($zapytanie);
  10. while($wiersz=mysql_fetch_array ($wykonaj)) {
  11. echo " <tr>
  12. <td width=\"4%\">".$wiersz['id']."</td>
  13. <td width=\"18%\">".$wiersz['imienazwisko']."</td>
  14. <td width=\"18%\">".$wiersz['pozycja']."</td>
  15. <td align=\"center\" width=\"6%\"><b><a href=\"./nowy.php?stan=modyf&idmodyf=".$wiersz['id']."\">Modyfikacja</a></b></td>
  16. </tr>";
  17. }
  18.  
  19. if($_GET['stan'] == 'modyf') {
  20. $zapytanie = "SELECT * FROM statystyki where id=$idmodyf";
  21. $wykonaj = mysql_query ($zapytanie);
  22. $tablica = mysql_fetch_array($wykonaj);
  23. echo " <form method=\"get\" action=\"nowy2.php\">
  24. <table border=\"1\" width=\"100%\" bordercolorlight=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">
  25. <tr>
  26. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\">Imie i nazwisko</font></td>
  27. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"imienazwisko\" value=\"".$tablica['imienazwisko']."\" size=\"20\"></font></td>
  28. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\">Pozycja</font></td>
  29. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"pozycja\" value=\"".$tablica['pozycja']."\" size=\"20\"></font></td>
  30. </tr>
  31. </table>
  32. </form>";
  33. }
  34. elseif ($send=='Modyfikuj'){$zapytanie = "UPDATE statystyki SET imienazwisko='$imienazwisko', pozycja='$pozycja' WHERE id=$modyfikuj";
  35. $wykonaj = mysql_query ($zapytanie);
  36. echo "<br>Dane poprawione";}
  37. else {
  38.  
  39. }
  40. ?>


teraz otwiera się nowa strona i pokazuje się formularz do edycji tylko że:
wywala taki błąd

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /nowy.php on line 22

chodzi o tą linie $tablica = mysql_fetch_array($wykonaj);

i w formularzu nie pokazują się te dane do eytowania.
Wicepsik
Co zawiera zmienna $idmodyf?
MarcinFC
czyli jednak dalej mam cos z linkiem nie tak sad.gif

jak skasowałem where id=$idmodyf"; z tego wiersza

$zapytanie = "SELECT * FROM statystyki where id=$idmodyf";

to nie wyswietlał się już błąd i pobrał dane tylko ze przy kazdym linku (innej osoby) pobiera te same dane z id 1.

nie wiem czy dobrze wytłumaczyłem sad.gif

a $idmodyf ma przypisywać wyswitlane dene konkretnemu id - tak to rozumiem, moze zle ale już mam taki metlik ze masakra

Rozumiem ze cięzko będzie cos z tym zrobić. questionmark.gif
Fafu
ja tu widze ze skrypt napisany do register globals na on - czyli albo włączyć albo sobie pozamieniaj np $idmodyf na $_GET['idmodyf']
MarcinFC
Dzieki Fafu, wstawiłe id=$_GET[idmodyf] i działa. lece dalej mam nadzieje ze juz bez problemowo

Pozdrawiam

No i kolejny problem sie pojawił. Już mam ze pobieraz i wyswietla odpowiednie dane do edytowania tylko teraz nie wysyła ich do bazy.
czyli błąd jest gdzies tu

  1. <tr>
  2. <td width=\"100%\" colspan=\"10\">
  3. <p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"hidden\" name=\"modyfikuj\" value=\"$idmodyf\"><input type=\"submit\" value=\"modyfikuj\" name=\"send\"></font></td>
  4. </tr>
  5. </table>
  6. </form>";
  7. }
  8. else if ($send=='modyfikuj'){$zapytanie = "UPDATE statystyki SET imienazwisko='$imienazwisko', pozycja='$pozycja' WHERE id=$modyfikuj";
  9. $wykonaj = mysql_query ($zapytanie);
  10. echo "<br>Dane poprawione";}
  11. else {
  12.  
  13. }
Wicepsik
  1. <form method="get">
  2. <input type="text" name="id">
  3. </form>
  4.  
  5. $_GET['id']
bmL
Tutaj z kolei powinieneś odnieść się do tablicy $_POST czyli
  1. else if ($_POST['send']=='modyfikuj)

Ale jeżeli tego nie rozumiesz to mija się z celem takie poprawianie smile.gif
MarcinFC
zmieniłem na else if ($_POST['send']=='modyfikuj')

i pojawia się ze "Dane poprawione" ale nic w bazie sie nie zmienia

no niestety jak widzicie nie umiem php ale bardzo zalezy mi na tym by to uruchomić
bmL
pozamieniaj wszystkie zmienne $xxxx w tym warunku na $_POST['xxxx']
MarcinFC
no niestety pozmieniałem i dalej nie zmienia wpisów w bazie.
Wicepsik
Metoda w formularzu wpisana jako GET a ty każesz mu pisać POST...


@MarcinFC
Pokaż jaki skrypt zdołałeś napisać.
MarcinFC
oto cały kod

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <table border="1" width="100%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
  6. <tr>
  7. <td width="96%" colspan="7" bgcolor="#C0C0C0">
  8. <p align="center"><b><font size="2">Dane osobowe</font></b></td>
  9. </tr>
  10. <tr>
  11. <td width="4%" align="center" bgcolor="#E0E0E0">
  12. <p align="center"><font size="2">&nbsp;ID</font></td>
  13. <td width="18%" align="center" bgcolor="#E0E0E0">
  14. <p align="center"><font size="2">Imię</font></td>
  15. <td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Nazwisko</font></td>
  16. <td width="6%" align="center" bgcolor="#E0E0E0"><font size="2">Modyfikuj</font></td>
  17. </tr>
  18.  
  19.  
  20. <?php
  21.  
  22. // podłączamy plik connection.php
  23. require "connection.php";
  24. // wywołujemy funkcję connection()
  25. connection();
  26.  
  27. $zapytanie = "SELECT * FROM statystyki ORDER BY id ASC";
  28. $wykonaj = mysql_query ($zapytanie);
  29. while($wiersz=mysql_fetch_array ($wykonaj)) {
  30. echo " <tr>
  31. <td width=\"4%\">".$wiersz['id']."</td>
  32. <td width=\"18%\">".$wiersz['imienazwisko']."</td>
  33. <td width=\"18%\">".$wiersz['pozycja']."</td>
  34. <td align=\"center\" width=\"6%\"><b><a href=\"./nowy.php?stan=modyf&idmodyf=".$wiersz['id']."\">Modyfikacja</a></b></td>
  35. </tr>";
  36. }
  37.  
  38. if($_GET['stan'] == 'modyf') {
  39. $zapytanie = "SELECT * FROM statystyki where id=$_GET[idmodyf]";
  40. $wykonaj = mysql_query ($zapytanie);
  41. $tablica = mysql_fetch_array ($wykonaj);
  42. echo " <form method=\"POST\" action=\"nowy.php\">
  43. <table border=\"1\" width=\"100%\" bordercolorlight=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">
  44. <tr>
  45. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\">Imie i nazwisko</font></td>
  46. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"imienazwisko\" value=\"".$tablica['imienazwisko']."\" size=\"20\"></font></td>
  47. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\">Pozycja</font></td>
  48. <td width=\"16%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"pozycja\" value=\"".$tablica['pozycja']."\" size=\"20\"></font></td>
  49. </tr>
  50. <tr>
  51. <td width=\"100%\" colspan=\"10\">
  52. <p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"hidden\" name=\"modyfikuj\" value=\"$idmodyf\"><input type=\"submit\" value=\"modyfikuj\" name=\"send\"></font></td>
  53. </tr>
  54. </table>
  55. </form>";
  56. }
  57. else if ($_POST['send'] == 'modyfikuj') {$zapytanie = "UPDATE statystyki SET imienazwisko='$imienazwisko', pozycja='$pozycja' WHERE id=$modyfikuj";
  58. $wykonaj = mysql_query ($zapytanie);
  59. echo "<br>Dane poprawione";}
  60. else {
  61.  
  62. }
  63. ?>
  64. </table>
  65. </body>
  66. </html>
bmL
Cytat(Wicepsik @ 11.08.2009, 17:07:26 ) *
Metoda w formularzu wpisana jako GET a ty każesz mu pisać POST...


@MarcinFC
Pokaż jaki skrypt zdołałeś napisać.

Faktycznie nie zwróciłem uwagi.

Ale widzę że metoda jest już zmieniona na POST, więc popraw jeszcze:
  1. $zapytanie = "UPDATE statystyki SET imienazwisko='$imienazwisko', pozycja='$pozycja' WHERE id=$modyfikuj";

na
  1. $zapytanie = "UPDATE statystyki SET mienazwisko='$_POST[imienazwisko]', pozycja='$_POST[pozycja]' WHERE id=$_POST[modyfikuj]";
MarcinFC
tak tez już robiłem i dalej nic. Pisze ze dane poprawione ale nie zmienia wpisu w bazie
nospor
Cytat
Pisze ze dane poprawione ale nie zmienia wpisu w bazie
Tak to jest, jak sie wyswietla komunikat bez sprawdzenia co sie tak naprawde wydarzylo

  1. $wykonaj = mysql_query ($zapytanie) or die('zap: '.$zapytanie.'----blad:'.mysql_error());
  2. echo "<br>Dane poprawione";
bmL
  1. <p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"hidden\" name=\"modyfikuj\" value=\"$_GET[idmodyf]\"><input type=\"submit\" value=\"modyfikuj\" name=\"send\"></font></td>
zamień tak jak napisałem.
W sumie to na szybkiego można było dać extract($_GET) i extract($_POST) ale to by nie było zbyt bezpieczne.
MarcinFC
bmL wielkie dzieki. Działa exclamation.gif!
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.