ugrás a tartalomhoz

mysqli_fetch_array egyel kevesebb rekordot olvas be

sas001 · 2012. Jún. 27. (Sze), 14.32
Sziasztok!
Itt van-e kód részlet, a HIBA az, hogy a ciklus az első rekord adatait nem jeleníti meg. Ha csak egy rekord van felvéve az adatbázisba, akkor egyet sem, ha több, akkor az első nem jelenik meg.
A kódot átnéztem a manualban, több PHP-s könyvben is, egyezik az enyémmel. Sem WAMPpon, sem éles tárhelyen nem működik.
A mysqli_fetch_array helyett próbáltam mysqli_fetch_assoc -ot és mysqli_fetch_row -t is azokkal sem megy.


$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT * FROM uzlet";
$data = mysqli_query($dbc, $query);

while ($row = mysqli_fetch_array($data))

{
echo '<tr>';
echo '<td>' . $row['uzlet_neve'] .'</td>';
echo '<td>' . $row['kapcs_tarto_neve'].'</td>';
echo '<td>' . $row['email'] .'</td>';
echo '</tr>';
}
A furcsa még az, hogy ha beillesztem ezt a kódot:
$sorok = mysqli_num_rows($data);
echo $sorok;

.. akkor simán kiírja helyesen azt a számot, amennyi rekord van az adatbázisban.
Természetesen táblázatos elrendezés nélkül is ugyan az a jelenség.

Köszönöm a segítséget!
 
1

biztos?

Poetro · 2012. Jún. 27. (Sze), 14.38
Biztosan ennyi a kód? Legközelebb használd a kódszínezőt (lásd a szövegmező alatti súgót bővebb információért).
4

mysql_fatch_array

sas001 · 2012. Jún. 28. (Cs), 14.58
Nem, a kód nem ennyi természetesen, de ez a rész foglalkozik a megjelenítéssel.
Egyébként egy az egyben vettem ki az Agyhullám c könyből: 242. o és 257. o. illetve a PHP5 c. könyv (a vastag piros, Pánem kiadó) 497. o. is ugyan így van a mintaalkalmazás.
9

Itt a teljes kód... hátha így

sas001 · 2012. Jún. 28. (Cs), 15.36
  1.   
Itt a teljes kód... hátha így többet mond...
  1. // Csatlakozás az adatbázishoz  
  2.   $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);  
  3.   
  4. // .............nem regisztráltak.....................  
  5.  $query = "SELECT * FROM felhasznalok WHERE aktiv = 'nem' ORDER BY uzlet";  
  6.         $data = mysqli_query($dbc,$query);  
  7.         $row = mysqli_fetch_array($data);     
  8.     $rekordok = mysqli_num_rows($data);   
  9.     echo $rekordok// ez kiírja a rekordok pontos számát  
  10.                          
  11. if ($row != NULL)   
  12.                          
  13.   { // a nyitó        
  14.                                          
  15. echo '<table>';  
  16.   
  17. echo '<caption class="caption"> A nem aktivált felhasználók listája</caption>';   
  18.  echo '<tr class="table_fejlec">';  
  19.   echo '<th id = "uzlet" > Az Üzlet neve </th>';  
  20.   echo '<th id = "kapcs_tarto"> A kapcsolattartó neve </th>';  
  21.   echo '<th id = "email">E-mail cím </th>';  
  22.   echo '<th id = "tel"> Telefonszám </th>';  
  23.  echo '</tr>';      
  24.   
  25. while ($row = mysqli_fetch_array($data))  
  26.                       
  27.   { //nyitó   while   
  28.   
  29.     echo '<tr>';                           
  30.       echo '<td headers="uzlet_neve">' . $row['uzlet'] .'</td>';  
  31.           echo '<td headers="kapcs_tarto_neve">' . $row['kapcs_tarto'].'</td>';  
  32.       echo '<td headers="email">' . $row['email'] .'</td>';  
  33.       echo '<td headers="tel">' . $row['tel']  .'</td>';  
  34.         echo '</tr>';    
  35.                             
  36.  } // while záró  
  37.   
  38. echo '</table>';  
  39.   
  40.   } // a záró   
  41.    else   
  42.     { // b nyitó  
  43.            echo '<p class="error">Nincsnek új felhasználók az adatbázisban!</p>';  
  44.         } // b záró  
  45.      
  46.     
  47.   
  48. //.............nem regisztráltak................  
10

Ejj..

iddqd · 2012. Jún. 28. (Cs), 15.37
Egy kis kód színezés jót tett volna...
11

7. sor?

T.G · 2012. Jún. 28. (Cs), 15.37
A 7. sorral mit szeretnél csinálni, merthogy ott az első sor adatai.
16

?

sas001 · 2012. Jún. 28. (Cs), 15.55
11. sorban használom fel
17

Re: ?

T.G · 2012. Jún. 28. (Cs), 15.57
Azt látom, de attól még az nem jó! Az első sor ott veszett el. Ha már lekéred a sorok számát, akkor azzal az értékkel ellenőrizd, hogy üres volt-e a lekérés. És a 7. sort töröld!
18

Jövök neked egyel a Csuhay Pityunál... :)

sas001 · 2012. Jún. 29. (P), 08.20
Köszi a segítséget, így már jó!
12

$row =

Poetro · 2012. Jún. 28. (Cs), 15.38
  1. $row = mysqli_fetch_array($data);       
Itt már kiszedted az első sort.
20

Köszi

sas001 · 2012. Jún. 29. (P), 08.22
Köszi
14

A hetedik...

iddqd · 2012. Jún. 28. (Cs), 15.46
A 7ik sorban lesz a gond ott tünteted el az első sort!
15

Jah, már válaszoltatok..

iddqd · 2012. Jún. 28. (Cs), 15.49
Jah, már válaszoltatok.. elbambúltam :D

Ui: és a kód is színes lett már, visszavontam :)
19

Köszi

sas001 · 2012. Jún. 29. (P), 08.21
Köszi, ott volt a hiba!
2

false

szabo.b.gabor · 2012. Jún. 27. (Sze), 14.58
e helyett
  1. while ($row = mysqli_fetch_array($data))  
írd ezt
  1. while (($row = mysqli_fetch_array($data))!==false)  
6

mysql_fatch_array

sas001 · 2012. Jún. 28. (Cs), 15.10
Köszi, kipróbáltam, ugyanúgy viselkedik. Egy rekordot nem olvas be...
3

Nincs esetleg valami azonos

iddqd · 2012. Jún. 28. (Cs), 11.48
Nincs esetleg valami azonos mező/sor/oszlop az eredményben, amit felül írhat?
5

mysql_fatch_array

sas001 · 2012. Jún. 28. (Cs), 15.00
Nem, nincs! Ha csak egyetlen-egy rekordot viszek fel az adatbázisba, akkor egy sem jelenítődik meg, tehát nincs mi felülíródjon. Ha mentem a 2. rekordot, az már megjelenik. Readásul a lekérdezésben lejön pontosan a rekordok száma, csak a kiíratásnál a cikluban jelenik meg egyel kevesebb...
7

Kód? :)

T.G · 2012. Jún. 28. (Cs), 15.17
Kód nélkül nehéz lesz erre bármit mondani.
Pedig azért az sejthető, hogy a kódodban van a hiba, nekem nagyon gyanús, hogy a mysqli_query függvény-t egy sajáttal helyettesíted, ami vissza is adja az értéket. (ami egy sor esetén kifejezetten hasznos) Ám a ciklushoz érve már a második lépésnél tartasz.
8

Csak ennyivel?

eddig bírtam szó nélkül · 2012. Jún. 28. (Cs), 15.24
Mondd, amikor próbálod, akkor csak ennyit futtatsz, vagy a kód többi része is ott van körülötte?
Mert azt, amit ide bemásoltál, kipróbáltam a saját gépemen és normálisan működik.
De előfordulhat, hogy a környező kóddal van valami gáz (pl. másra is használod valamelyik változót)
13

igazad van

sas001 · 2012. Jún. 28. (Cs), 15.41
Fentebb pótoltam a forráskódot,Kösz a segítséget!