Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Update problem
--kokos--
post
Post #1





Goście







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.
Go to the top of the page
+Quote Post
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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?

Ten post edytował bregovic 5.11.2008, 12:24:51
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

@bregovic - byłeś szybszy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) BTW- głosowałeś na Obamę czy McCain'a ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował blooregard 5.11.2008, 12:26:59
Go to the top of the page
+Quote Post
bregovic
post
Post #4





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


[ot]blooregard: Ja nie być obywatel, ja być tylko gość (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) [/ot]
Go to the top of the page
+Quote Post
--kokos--
post
Post #5





Goście







  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 (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
bregovic
post
Post #6





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
--kokos--
post
Post #7





Goście







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 :/
Go to the top of the page
+Quote Post
bregovic
post
Post #8





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 23:58