Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dlaczego mysql_fetch_array() nie działa?, Problem z wydostaniem rekorów z bazy
tzi
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 12.10.2003
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Mam taki kod w php

  1. <?php
  2.  
  3.  if(!mysql_connect($adres_serwera_bazy_danych, $uzytkownik_bazy_danych, $haslo_do_bazy_danych)) echo mysql_error();
  4.  else if(!mysql_select_db($nazwa_bazy)) echo mysql_error();
  5.  
  6.  $pytanie_sql=mysql_query('SELECT * FROM `zadania`');
  7.  
  8.  //zapytanie do bazy o uzytkownikow
  9.  $ile_wierszy = mysql_numrows($pytanie_sql);
  10.  for($nr_wiersza=1;$nr_wiersza<=$ile_wierszy;$nr_wiersza++)
  11. {
  12. $wynik = mysql_fetch_array($pytanie_sql);
  13. $id = $wynik['id'];
  14.  
  15. echo"<b>|$nr_wiersza|</b><br>id:$id<br>";
  16. }
  17.  
  18. ?>


a on do mnie mówi:

Cytat
|1|
id:4
|2|
id:
|3|
id:


dodam że w bazie naprawe są 3 rekordy i powinno być:

Cytat
|1|
id:4
|2|
id:6
|3|
id:7
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Po wynikach z bazy przechodzi sie inaczej niż Ty to robisz.

  1. <?php
  2.  
  3. if( ! mysql_connect( $strHost, $strUser, $strPass ) ) 
  4. {
  5. }
  6. else 
  7. {
  8. if( ! mysql_select_db( $strDb ) )
  9. {
  10. }
  11.  
  12. $strQueryResult = mysql_query( 'SELECT * FROM zadania' );
  13.  
  14. $intLicznik = 1;
  15. while( $arrRow = mysql_fetch_array( $strQueryResult ) ) 
  16. {
  17. echo '<b>|' . $intLicznik . '|</b><br />id:' . $arrRow[ 'id' ] . '<br />';
  18. $intLicznik++;
  19. }
  20.  
  21. ?>
Go to the top of the page
+Quote Post
tzi
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 12.10.2003
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Poprawiłem zgodnie z zaleceniami:
  1. <?php
  2.  
  3. $pytanie_sql=mysql_query('SELECT * FROM zadania');
  4.  
  5. $nr_wiersza = 1;
  6.  
  7. $ile_wierszy = mysql_numrows($pytanie_sql);
  8. echo "ilosc wierszy:$ile_wierszy<br>";
  9.  
  10. while($wynik = mysql_fetch_array($pytanie_sql))
  11. {
  12. $nr_zadania = $wynik['id'];
  13. $nr_wiersza++;
  14. echo"<b>|$nr_wiersza|</b><br>id zadania:$nr_zadania<br>";
  15. }
  16.  
  17. ?>


i otrzymałem następujący wynik:
Cytat
ilosc wierszy:3
|2|
id zadania:4


Jak we wcześniejszym przypadku tego też zupełnie nie rozumiem. Sprawdzałem zawartość bazy i wielkość zwracana przez funkcje mysql_numrows() jest prawidłowa. id kolejnych rekordów to 4,6,7.

Prosze, pomóżcie bo nie wiem co mam robić.

PRZEPRASZAM WSZYSTKICH za ten wątek.
To był mój błąd.

Ten post edytował tzi 13.08.2005, 14:13:00
Go to the top of the page
+Quote Post
Sylvian
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 4.08.2005

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


BTW jeśli już chcesz zliczać liczbę rekordów to radziłbym nie przyjmować wartości początkowej jako 1.
Jeśli zapytanie nie zwróci Ci żadnego rekordu to zmienna $nr_wiersza wciąż będzie wskazywać wartość 1. Dlatego poczatkowa wartośc powinna wynosić 0 (tylko inkrementacja powinna odbywać się wtedy jako pierwsza wewnątrz WHILE'a).

W tym przypadku nie robi to zbyt wielkiej różnicy ale w innym pewnie już tak.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 11:45