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
Itt a teljes kód... hátha így többet mond...

// Csatlakozás az adatbázishoz
  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// .............nem regisztráltak.....................
 $query = "SELECT * FROM felhasznalok WHERE aktiv = 'nem' ORDER BY uzlet";
        $data = mysqli_query($dbc,$query);
      	$row = mysqli_fetch_array($data);	
	$rekordok = mysqli_num_rows($data);	
	echo $rekordok; // ez kiírja a rekordok pontos számát
					   
if ($row != NULL) 
					   
  { // a nyitó      
                					   
echo '<table>';

echo '<caption class="caption"> A nem aktivált felhasználók listája</caption>'; 
 echo '<tr class="table_fejlec">';
  echo '<th id = "uzlet" > Az Üzlet neve </th>';
  echo '<th id = "kapcs_tarto"> A kapcsolattartó neve </th>';
  echo '<th id = "email">E-mail cím </th>';
  echo '<th id = "tel"> Telefonszám </th>';
 echo '</tr>';	

while ($row = mysqli_fetch_array($data))
					
  { //nyitó   while 

	echo '<tr>';						   
	  echo '<td headers="uzlet_neve">' . $row['uzlet'] .'</td>';
     	  echo '<td headers="kapcs_tarto_neve">' . $row['kapcs_tarto'].'</td>';
	  echo '<td headers="email">' . $row['email'] .'</td>';
	  echo '<td headers="tel">' . $row['tel']  .'</td>';
        echo '</tr>';  
						  
 } // while záró

echo '</table>';

  } // a záró 
   else 
	{ // b nyitó
           echo '<p class="error">Nincsnek új felhasználók az adatbázisban!</p>';
        } // b záró
   
  

//.............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
$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
while ($row = mysqli_fetch_array($data))
írd ezt
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!