Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Update problem
Forum PHP.pl > Forum > Przedszkole
-kokos-
Witam

Przy wprowadzeniu zmiany w formularzu wyskakuje błąd którego nie mogę rozwiązać. Proszę o pomoc.

  1. <body>
  2. <?
  3. mysql_connect("localhost", "root", "krasnal")or die("Nie mozna nawiazac polaczenia z baza");
  4. mysql_select_db("test")or die("Wystapil blad podczas wybierania bazy danych");
  5.  
  6. $id = $_GET['id'];
  7. $question=mysql_query("SELECT * FROM members WHERE id=$id");
  8. $result=mysql_fetch_array($question);
  9.  
  10.  
  11. ?>
  12.  
  13. <form action="admin_editm.php" method="post">
  14. Edit  Clan Member <br /><br />
  15. Rase:<br />
  16. <input type="text" name="rase" value="<? echo $result['rase']; ?>"/><br />
  17. Class:<br />
  18. <input type="text" name="class" value="<? echo $result['class']; ?>"/><br />
  19. Nick:<br />
  20. <input type="text" name="nick" value="<? echo $result['nick']; ?>"/><br />
  21. Status:<br />
  22. <input type="text" name="status" value="<? echo $result['status']; ?>"/><br />
  23. E-mail:<br />
  24. <input type="text" name="email" value="<? echo $result['email']; ?>"/><br /><br />
  25. <input type="submit" name="but" value="Edit" />
  26. <br /><br />
  27. </form>
  28. <?
  29.  
  30. $rase=$_POST['rase'];
  31. $class=$_POST['class'];
  32. $nick=$_POST['nick'];
  33. $status=$_POST['status'];
  34. $email=$_POST['email'];
  35. $przycisk=$_POST["but"];
  36.  
  37.  
  38. if (!empty($przycisk)) {
  39. @mysql_query("UPDATE into members (`rase`, `class`, `nick`, `status`, `email`)
  40. values('".$rase."', '".$class."', '".$nick."', '".$status."', '".$email."') WHERE id=$id");
  41. echo "Member has been update.";
  42. } else if (!empty($przycisk)) {
  43. echo "Bug. Try again.";
  44. }
  45.  
  46. ?>
  47.  
  48. <br />
  49. <a href=admin_menm.php>Back to managing members</a>
  50. </body>


Błąd to :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\testy\admin_editm.php on line 20

linia 20

  1. <?php
  2. $result=mysql_fetch_array($question);
  3. ?>


Po czym w pól typu text znikają wszystkie dane.

Proszę o pomoc.
bregovic
Twoje mysql_query ewidentnie nie może wykonać polecenia jesteś pewien że masz rekord o id=$id? Spróbuj zastąpić twoją linię 19 tym:
  1. <?php
  2. $question=mysql_query("SELECT * FROM members WHERE id=$id") or die(mysql_error());
  3. ?>


I skąd ty w ogóle bierzesz to $id?
blooregard
A $id z GET-a jest prawidłowe ?

Wyświetl sobie zapytanie
Kod
echo $question;

i sprawdź, czy jest prawidłowe. Błąd, który ci się pojawia, oznacza, że funkcja mysql_fetch_array() jako parametru nie otrzymała wyniku wykonania zapytania z linijki wcześniejszej - czyli zapytanie jest błędne i się nie wykonuje lub tez zwraca 0 (brak rekordów).

A w formularzu znikaja Ci wartości, bo strona po przeładowaniu i braku $result z zapytania nie ma czego tam wstawić smile.gif

@bregovic - byłeś szybszy smile.gif BTW- głosowałeś na Obamę czy McCain'a ? smile.gif
bregovic
[ot]blooregard: Ja nie być obywatel, ja być tylko gość winksmiley.jpg[/ot]
-kokos-
  1. <?php
  2. Resource id #3
  3. ?>


z tego zapytania zwracane jest "Resource id #3 ".

id przekazuje z poprzedniej strony za pomocą a href " <a href='admin_editm.php?id=".$result['id']."'>Edit</a>";

Id działa na pewno dobrze gdyż po wejściu wyświetlane są wybrane dane w polach typu text, dwa na podobnej zasadzie mam zrobione usuwanie, które działa prawidłowo..

Błąd nie następuje od razu po wejściu na stronę, tylko próbie zmiany wybranego pola, które jest prawidłowo pobierane.

albo ja źle rozumuje dry.gif
bregovic
Tzn ten formularz w środku kodu śle dane do tego samego pliku? No to musisz wysłać postem id, w ukrytym polu, lub zapisać je w sesji. Zmienne z adresu nie są automatycznie przesyłane dalej winksmiley.jpg
-kokos-
Nie do końca zrozumiałem stwierdzenie "Tzn ten formularz w środku kodu śle dane do tego samego pliku?" ale próbując zrobiłem sesje.

  1. <?php
  2. $id = $_GET['id'];
  3. $_SESSION['id']=$id;
  4. ?>


i do zapytania przy edycji dodałem

  1. <?php
  2. @mysql_query("UPDATE into members (`rase`, `class`, `nick`, `status`, `email`)
  3. values('".$rase."', '".$class."', '".$nick."', '".$status."', '".$email."') WHERE id='".$_SESSION['id']."'");
  4. ?>


ale cały czas jest ten sam problem :/
bregovic
Czy plik którego kawałek nam pokazałeś w pierwszym poście nazywa się admin_editm.php? Jeśli tak, to gdy wysyłasz formularz, id nie zostanie przesłane. Twoje $id = $_GET['id'] nie zadziała, bo nie ma $_GET. Musisz przesłać $id dodając np:
  1. <input type="hidden" name="id" value="<?php echo $id ?>" />

Do twojego formularza. I zamień twoje $id = $_GET['id']; (linia #7 w powyżyszym) na:
  1. <?php
  2. $id = $_REQUEST['id'];
  3. ?>
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.