Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Błąd mysql_num_rows
Forum PHP.pl > Forum > Przedszkole
milw0rm
Cześć mam problem z definiowaniem funkcji mysql_num_rows()

Posiadam taki skrypt:
  1. <?php
  2. $id=$_GET['id'];
  3. $username="terrory_root";
  4. $password="xXxxXx";
  5. $database="terrory_wirtualny";
  6. mysql_connect(localhost,$username,$password);
  7.  
  8. $query=" SELECT * FROM user WHERE id='$id'";
  9. $result=mysql_query($query);
  10. $num=mysql_num_rows($result);
  11. $i=0;
  12. while ($i < $num) {
  13. $login=mysql_result($result,$i,"login");
  14. $password=mysql_result($result,$i,"password");
  15. $imie=mysql_result($result,$i,"imie");
  16. $nazwisko=mysql_result($result,$i,"nazwisko");
  17. $adres=mysql_result($result,$i,"adres");
  18. $gg=mysql_result($result,$i,"gg");
  19. $portfel=mysql_result($result,$i,"portfel");
  20. echo $i.'<br/>';
  21. echo $query;
  22. }
  23. ?>
  24. <form action="update.php" method="post">
  25. <input type="hidden" name="id" value="<? echo $id; ?>">
  26. Pierwsze imię: <input type="text" name="login" value="<? echo $login; ?>"><br>
  27. Ostatnie imię: <input type="text" name="password" value="<? echo $password; ?>"><br>
  28. Telefon stacjonarny: <input type="text" name="imie" value="<? echo $imie; ?>"><br>
  29. Telefon komórkowy: <input type="text" name="nazwisko" value="<? echo $nazwisko; ?>"><br>
  30. Fax: <input type="text" name="adres" value="<? echo $adres; ?>"><br>
  31. Adres E-mail: <input type="text" name="gg" value="<? echo $gg; ?>"><br>
  32. Adres WWW: <input type="text" name="portfel" value="<? echo $portfel; ?>"><br>
  33. <input type="Submit" value="Aktualizuj">
  34. </form>
  35. <?php
  36. ++$i;
  37. ?>


i przy wyświetlaniu formularza ukazuję mi się on ale mysql zwraca taki błąd
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php on line 10
pedro84
Ehh... Nawet Ci się poszukać nie chciało: http://forum.php.pl/Wyszukiwarka.html?cx=p...;sa=Szukaj#1097
bastard13
Nie wybierasz bazy:
  1. mysql_select_db($database) ;
milw0rm
Już jest wszystko git tylko dalej mi nie wyświetla danych z tabeli, wspomnę że oczekuję danych jakiegoś użytkownika a później chcę je aktualizować jak widać formularz przenosi do update.php skrypt jest z kursy wortal.php.pl i niby powinien działać a czemu nie działa tego nie wiem dokładnie z tego miejsca http://wortal.php.pl/phppl/wortal/artykuly...usuwanie_danych

Plik login.php

  1. <?php
  2.  
  3. require('conn.php');
  4.  
  5. if (isset($_POST['konto']) and isset($_POST['password']))
  6.  
  7.  
  8. {
  9.  
  10. $konto=mysql_real_escape_string(trim($_POST['konto']));
  11.  
  12. $password=mysql_real_escape_string(trim($_POST['password']));
  13.  
  14. if ($konto!="" and $password!="")
  15.  
  16. {
  17.  
  18. $password = sha1(md5($password));
  19.  
  20. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  21.  
  22. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  23.  
  24. $ile=mysql_num_rows($temp);
  25.  
  26. $temp=mysql_fetch_array($temp);
  27.  
  28. $id=$temp['id'];
  29.  
  30.  
  31.  
  32. if ($ile==1)
  33.  
  34. {
  35.  
  36. $_SESSION['user_id']=$id;
  37.  
  38. $_SESSION['login']=$konto;
  39.  
  40. echo'Zostales zalogowany. Zostaniesz przekierowanny do strony glownej....';
  41.  
  42. }
  43. else
  44.  
  45.  
  46. echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  47.  
  48. }
  49.  
  50. }
  51.  
  52. else{
  53.  
  54. ?>
  55.  
  56. <html>
  57.  
  58. <body>
  59.  
  60. <form action="login.php" method="post">
  61.  
  62. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  63.  
  64. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  65.  
  66. <input type="submit" value="Zaloguj" />
  67.  
  68. </form>
  69.  
  70. </body>
  71.  
  72. </html>
  73.  
  74. <?php
  75.  
  76. }?>

powinienem przekazać jakieś sesje do pliku czy co ?
bastard13
A gdzie ty tutaj jakieś dane z tabeli wyświetlasz?
milw0rm
po sprawdzeniu błędów za pomocą
  1. ini_set('display_errors','1');

dostaje zwrot od mysql

Notice: Undefined index: id in /home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php on line 4

Notice: Use of undefined constant localhost - assumed 'localhost' in /home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php on line 8

jak by nie mógł pobrać id a co do twojego pytania gdzie te dane wyświetlam nie mam pojęcia ale pokaże ci co piszą w poradniku.

  1. $id=$_GET['id'];
  2. $username="nazwa użytkownika";
  3. $password="hasło";
  4. $database="nazwa bazy danych";
  5. mysql_connect(localhost,$username,$password);
  6.  
  7. $query=" SELECT * FROM contacts WHERE id='$id'";
  8. $result=mysql_query($query);
  9. $num=mysql_numrows($result);
  10.  
  11. $i=0;
  12. while ($i < $num) {
  13. $first=mysql_result($result,$i,"first");
  14. $last=mysql_result($result,$i,"last");
  15. $phone=mysql_result($result,$i,"phone");
  16. $mobile=mysql_result($result,$i,"mobile");
  17. $fax=mysql_result($result,$i,"fax");
  18. $email=mysql_result($result,$i,"email");
  19. $web=mysql_result($result,$i,"web");
  20.  
  21. Dalsza część kodu
  22.  
  23. ++$i;
  24. }

Gdzie dalsza część kodu jest kodem dla strony aktualizacyjnej. Zawiera tylko formatowanie HTML dla wyniku:
  1. <form action="updated.php" method="post">
  2. <input type="hidden" name="ud_id" value="<? echo $id; ?>">
  3. Pierwsze imię: <input type="text" name="ud_first" value="<? echo $first; ?>"><br>
  4. Ostatnie imię: <input type="text" name="ud_last" value="<? echo $last; ?>"><br>
  5. Telefon stacjonarny: <input type="text" name="ud_phone" value="<? echo $phone; ?>"><br>
  6. Telefon komórkowy: <input type="text" name="ud_mobile" value="<? echo $mobile; ?>"><br>
  7. Fax: <input type="text" name="ud_fax" value="<? echo $fax; ?>"><br>
  8. Adres E-mail: <input type="text" name="ud_email" value="<? echo $email; ?>"><br>
  9. Adres WWW: <input type="text" name="ud_web" value="<? echo $web; ?>"><br>
  10. <input type="Submit" value="Aktualizuj">
  11. </form>

Jak widać ten kod zwróci standardowy formularz , lecz zamiast pustych pól jak to miało miejsce przy wprowadzaniu danych, ten będzie zawierał aktualne informacje i pozwalał na ich edycję i zatwierdzenie wprowadzonych zmian
bastard13
Pierwsze tyczy się tego, że nie masz zdefiniowanej zmiennej $_GET['id'].
Drugie wyskakuje, ponieważ localhost powinno być w cudzysłowiu.
milw0rm
Dobra, localhost po prawiłem teraz mógł byś mi pod powiedzieć jak z definiować to id ? za pomocą sesji z login czy jak ?

dokładnie moim oczom ukazuję się taki formularz na stronie już.

Notice: Undefined index: id in /home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php on line 4
i błąd w tych kolumnach
Pierwsze imię:
  1. <br /> <b>Notice</b>: Undefined variable: login in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>30</b><br />

Ostatnie imię:
  1. pacio123 // o dziwo tą widać nie mam pojęcia czemu i powinno wyświetlać w ogóle inną nazwę

Telefon stacjonarny:
  1. <br /> <b>Notice</b>: Undefined variable: imie in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>32</b><br />

Telefon komórkowy:
  1. <br /> <b>Notice</b>: Undefined variable: nazwisko in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>33</b><br />

Fax:
  1. <br /> <b>Notice</b>: Undefined variable: adres in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>34</b><br />

Adres E-mail:
  1. <br /> <b>Notice</b>: Undefined variable: gg in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>35</b><br />

Adres WWW:
  1. <br /> <b>Notice</b>: Undefined variable: portfel in <b>/home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php</b> on line <b>36</b><br />
Lars_18
Skoro to zmienna z $_GET, to dopisz poprostu do URLa ?id=wartość_jaka_potrzebujesz.
milw0rm
Cytat(Lars_18 @ 20.06.2010, 01:18:19 ) *
Skoro to zmienna z $_GET, to dopisz poprostu do URLa ?id=wartość_jaka_potrzebujesz.

nie jestem pewny czy to za działa jak np będę miał 10 użytkowników których nie znam to raczej nie wyjdzie.
Lars_18
W takim razie po co ci zmienna ID? W skrypcie logowania ID powinno być pobierane automatycznie z bazy po podaniu prawidłowych danych.
bastard13
http://php.net/manual/en/reserved.variables.php
Dokładniej to powinieneś się zainteresować pozycjami $_GET i $_POST, ponieważ one służą do przesyłania danych pobranych od użytkownika.
Sprawa wygląda tak, że najpierw musisz wyświetlić jakiś mini-formularz, gdzie dowiesz się kim jest użytkownik np. pole, w którym poda ci swoje id.
On wysyła ci ten formularz, a ty pobierasz dane, które przesłał i dzięki temu masz zmienną, której potrzebujesz.
milw0rm
Cytat(Lars_18 @ 20.06.2010, 01:23:37 ) *
W takim razie po co ci zmienna ID? W skrypcie logowania ID powinno być pobierane automatycznie z bazy po podaniu prawidłowych danych.

jest pobierane automatycznie tylko że jak wyświetlić dane tego użytkownika w tych polach formularza (załączę ci skrypty poniżej) aby potem użytkownik sam za pomocą formularza mógł sobie zmienić hasło imie i takie bajery..

edytujdane.php
  1. <?php
  2. ini_set('display_errors','1');
  3. $id=$_GET['id'];
  4. $username="terrory_root";
  5. $password="xXxxXx";
  6. $database="terrory_wirtualny";
  7. mysql_connect('localhost',$username,$password);
  8. mysql_select_db($database);
  9.  
  10. $query=" SELECT * FROM user WHERE id='$id'";
  11. $result=mysql_query($query);
  12. $num=mysql_num_rows($result);
  13. $i=0;
  14. while ($i < $num) {
  15. $login=mysql_result($result,$i,"login");
  16. $password=mysql_result($result,$i,"password");
  17. $imie=mysql_result($result,$i,"imie");
  18. $nazwisko=mysql_result($result,$i,"nazwisko");
  19. $adres=mysql_result($result,$i,"adres");
  20. $gg=mysql_result($result,$i,"gg");
  21. $portfel=mysql_result($result,$i,"portfel");
  22. echo $i.'<br/>';
  23. echo $query;
  24. }
  25. ?>
  26. <form action="update.php" method="post">
  27. <input type="hidden" name="id" value="<? echo $id; ?>">
  28. Pierwsze imię: <input type="text" name="login" value="<? echo $login; ?>"><br>
  29. Ostatnie imię: <input type="text" name="password" value="<? echo $password; ?>"><br>
  30. Telefon stacjonarny: <input type="text" name="imie" value="<? echo $imie; ?>"><br>
  31. Telefon komórkowy: <input type="text" name="nazwisko" value="<? echo $nazwisko; ?>"><br>
  32. Fax: <input type="text" name="adres" value="<? echo $adres; ?>"><br>
  33. Adres E-mail: <input type="text" name="gg" value="<? echo $gg; ?>"><br>
  34. Adres WWW: <input type="text" name="portfel" value="<? echo $portfel; ?>"><br>
  35. <input type="Submit" value="Aktualizuj">
  36. </form>
  37. <?php
  38. ++$i;
  39. ?>


update.php definiowany z tego formularza
  1. <?
  2. $id=$_POST['id'];
  3. $login=$_POST['login'];
  4. $password=$_POST['password'];
  5. $imie=$_POST['imie'];
  6. $nazwisko=$_POST['nazwisko'];
  7. $adres=$_POST['adres'];
  8. $gg=$_POST['gg'];
  9. $portfel=$_POST['portfel'];
  10.  
  11. require 'config.php';
  12.  
  13. $query="UPDATE user SET login='$login', password='$password', imie='$imie', nazwisko='$nazwisko', adres='$adres', gg='$gg', portfel='$portfel' WHERE id='$id'";
  14. mysql_query($query);
  15. echo "Rekord zaktualizowany";
  16. ?>
bastard13
co ci wyświetlają te echa?:
  1. echo $i.'<br/>';
  2. echo $query;

Spróbuj wywalić mysql_close(), bo to chyba zwalnia zasoby, a przy tym rezultat zapytania. Tak naprawdę tej funkcji nie musisz używać, ponieważ przy takim połączeniu, gdzie nie jest ono identyfikowane, połączenie zostanie zamknięte na końcu skryptu. Jeżeli jednak to nie pomoże to
zamień sobie:
  1. $query=" SELECT * FROM user WHERE id='$id'";
  2. $result=mysql_query($query);
  3. $num=mysql_num_rows($result);
  4. $i=0;
  5. while ($i < $num) {
  6. $login=mysql_result($result,$i,"login");
  7. $password=mysql_result($result,$i,"password");
  8. $imie=mysql_result($result,$i,"imie");
  9. $nazwisko=mysql_result($result,$i,"nazwisko");
  10. $adres=mysql_result($result,$i,"adres");
  11. $gg=mysql_result($result,$i,"gg");
  12. $portfel=mysql_result($result,$i,"portfel");
  13. echo $i.'<br/>';
  14. echo $query

na to:
  1. $query=" SELECT * FROM user WHERE id='$id'";
  2. $result=mysql_query($query);
  3. $if(mysql_num_rows($result)==1)
  4. $result=mysql_fetch_array($result, MYSQL_ASSOC);
  5. else
  6. $result=array();

a tam gdzie wyświetlasz formularz między znaczniki <?php ?> zamiast tego, co masz wrzuć
  1. <?php echo (isset($result['nazwa_zmiennej']) ? $result['nazwa_zmiennej'] : ''); ?>
milw0rm
hehe nie za bardzo rozumiem co mam po zmieniać prawie nic nie zostaje nie mam wtedy żadnego formularzy itd itp a po za tym wywalało mi błąd cos w składni z mysql_fetch_array
dokładnie taki błąd Parse error: syntax error, unexpected T_VARIABLE in /home/terrory/public_html/Skrypty/Wirtualny/zmiendanetest.php on line 14
a skrypt wygląda tak
  1. <?php
  2. ini_set('display_errors','1');
  3. $id=$_GET['id'];
  4. $username="terrory_root";
  5. $password="xXxxXx";
  6. $database="terrory_wirtualny";
  7. mysql_connect('localhost',$username,$password);
  8. mysql_select_db($database);
  9.  
  10. $query=" SELECT * FROM user WHERE id='$id'";
  11. $result=mysql_query($query);
  12. $if(mysql_num_rows($result)==1)
  13. $result=mysql_fetch_array($result, MYSQL_ASSOC);
  14. else
  15. $result=array();
  16. }
  17. ?>
  18. <?php echo (isset($result['nazwa_zmiennej']) ? $result['nazwa_zmiennej'] : ''); ?>
bastard13
Przeoczenie:) przed if'em nie powinno być $:)
A tą linię:
  1. <?php echo (isset($result['nazwa_zmiennej']) ? $result['nazwa_zmiennej'] : ''); ?>

wrzuć do swojego formularza i nazwa_zmiennej podmień na id, login itp. (nazwy twoich kolumn w tabeli) np.
  1. <input type="hidden" name="id" value="<? echo $id; ?>">

na:
  1. <input type="hidden" name="id" value="<?php echo (isset($result['id']) ? $result['id'] : ''); ?>">

i tak zrób z każdą zmienną. Powodzenia.
milw0rm
słuchaj bo zrobiłem tak:
  1. <?php
  2. ini_set('display_errors','1');
  3. $id=$_GET['id'];
  4. $username="terrory_root";
  5. $password="xXxxXx";
  6. $database="terrory_wirtualny";
  7. mysql_connect('localhost',$username,$password);
  8. mysql_select_db($database);
  9.  
  10. $query=" SELECT * FROM user WHERE id='$id'";
  11. $result=mysql_query($query);
  12. if(mysql_num_rows($result)==1)
  13. $result=mysql_fetch_array($result, MYSQL_ASSOC);
  14. else
  15. $result=array();
  16. ?>
  17. <form action="update.php" method="post">
  18. <input type="hidden" name="id" value="<?php echo (isset($result['id']) ? $result['id'] : ''); ?>">
  19. Pierwsze imię: <input type="text" name="login" value="<?php echo (isset($result['login']) ? $result['login'] : ''); ?>"><br>
  20. Ostatnie imię: <input type="text" name="password" value="<?php echo (isset($result['password']) ? $result['password'] : ''); ?>"><br>
  21. Telefon stacjonarny: <input type="text" name="imie" value="<?php echo (isset($result['imie']) ? $result['imie'] : ''); ?>"><br>
  22. Telefon komórkowy: <input type="text" name="nazwisko" value="<?php echo (isset($result['nazwisko']) ? $result['nazwisko'] : ''); ?>"><br>
  23. Fax: <input type="text" name="adres" value="<?php echo (isset($result['adres']) ? $result['adres'] : ''); ?>"><br>
  24. Adres E-mail: <input type="text" name="gg" value="<?php echo (isset($result['gg']) ? $result['gg'] : ''); ?>"><br>
  25. Adres WWW: <input type="text" name="portfel" value="<?php echo (isset($result['portfel']) ? $result['portfel'] : ''); ?>"><br>
  26. <input type="Submit" value="Aktualizuj">
  27. </form>
  28. <?php
  29. ++$i;
  30. ?>


te pierwsze dwie linie to do sprawdzania błędów i dalej nie wyświetla mi tych danych w tabeli i wyskakuję błąd mysl
  1. Notice: Undefined index: id in /home/terrory/public_html/Skrypty/Wirtualny/profil/zmiendane.php on line 4

Ukazuję mi się formularz i na końcu
  1. Notice: Undefined variable: i in /home/terrory/public_html/Skrypty/Wirtualny/profil/zmiendane.php on line 30

^^to jest te ++$i to wywaliłem.
bastard13
ad 2) To już ci nie potrzebne więc usuń i problem zniknie.
  1. <?php
  2. ++$i;
  3. ?>

ad 1) Błąd ci się pokazuje, ponieważ nie przekazujesz getem id, dlatego skrypt wywala, że jest nie zdefiniowana. Poczytaj sobie o tablicy $_GET, a wszystko stanie się jasne. Twój adres powinien wyglądać tak:
/nazwa_pliku_php.php?id=wartosc_id
i wtedy $_GET['id']=wartosc_id.
milw0rm
Poczytałem o $_GET tam nie za bardzo rozumiem z manual php coś ale wyczytałem w innych błędach że powinno to wyglądać chyba tak ale dalej to mi nic nie pokazuje:
  1. <form action="update.php?id=' . $_GET['id'] . ' method="post">
  2. <input type="hidden" name="id" value="<?php echo (isset($result['id']) ? $result['id'] : ''); ?>">
  3. Pierwsze imię: <input type="text" name="login" value="<?php echo (isset($result['login']) ? $result['login'] : ''); ?>"><br>
  4. Ostatnie imię: <input type="text" name="password" value="<?php echo (isset($result['password']) ? $result['password'] : ''); ?>"><br>
  5. Telefon stacjonarny: <input type="text" name="imie" value="<?php echo (isset($result['imie']) ? $result['imie'] : ''); ?>"><br>
  6. Telefon komórkowy: <input type="text" name="nazwisko" value="<?php echo (isset($result['nazwisko']) ? $result['nazwisko'] : ''); ?>"><br>
  7. Fax: <input type="text" name="adres" value="<?php echo (isset($result['adres']) ? $result['adres'] : ''); ?>"><br>
  8. Adres E-mail: <input type="text" name="gg" value="<?php echo (isset($result['gg']) ? $result['gg'] : ''); ?>"><br>
  9. Adres WWW: <input type="text" name="portfel" value="<?php echo (isset($result['portfel']) ? $result['portfel'] : ''); ?>"><br>
  10. <input type="Submit" value="Aktualizuj">
  11. </form>
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.