Ik heb een wazig probleempje... vast iets N00bish! Ik wil alle records in een tabel tonen. Deze code heb ik van internet maar die laat het eerste record niet zien. Ik snapte echter niet zo goed waarom de eerste wordt overgeslagen. De theorie is dat die gegevens uit $data in een arrray worden gemikt, en het tweede scriptje zet het logisch neer.

$data = mysql_query("SELECT * FROM nieuwsberichten ORDER BY id ASC") or die(mysql_error());
$info = mysql_fetch_array( $data );
while($info = mysql_fetch_array( $data )) 
{ 
Print "<b>id: </b> ".$info['id'];
Print "<BR>";
Print "<b>titel: </b> ".$info['titel'];
Print "<BR>";
Print "<b>bericht: </b> ".$info['bericht'];
Print "<BR>";
Print "<a href=\"#\">verwijderen</a>";
Print "<BR><BR>";
}

Nu heb ik die code aangepast en zitten klooien: nu heb ik iets wat wel werkt. Het ziet er alleen een beetje raar uit, aangezien $data en $info precies hetzelfde worden bepaald, maar zonder Info zie je dus dat eerste record niet. Iemand een idee?

$data = mysql_query("SELECT * FROM nieuwsberichten ORDER BY id ASC") or die(mysql_error());
$info = mysql_query("SELECT * FROM nieuwsberichten ORDER BY id ASC") or die(mysql_error());
while($info = mysql_fetch_assoc($data))
{
Print "<b>id: </b> ".$info['id'];
Print "<BR>";
Print "<b>titel: </b> ".$info['titel'];
Print "<BR>";
Print "<b>bericht: </b> ".$info['bericht'];
Print "<BR>";
Print "<a href=\"#\">verwijderen</a>";
Print "<BR><BR>";
}
Hoi Frans,

het is ten eerste altijd handig om je code tussen [code_] en [/_code] te plaatsen (zonder die _)
maar het probleem is iets dat vaker voorkomt, je kunt het verhelpen door die
$info = mysql_fetch_array( $data ); voor de while te verwijderen

<?php
$data = mysql_query("SELECT * FROM nieuwsberichten ORDER BY id ASC") or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
     //echo is sneller dan Print
     echo "<b>id: </b> ".$info['id'];
     echo "<BR>";
     echo "<b>titel: </b> ".$info['titel'];
     echo "<BR>";
     echo "<b>bericht: </b> ".$info['bericht'];
     echo "<BR>";
     echo "<a href=\"#\">verwijderen</a>";
     echo "<BR><BR>\n";
     // \n zorgt voor een nieuwe regel in je output.
     // Door die gestructureerd toe te passen blijft je code enigzins leesbaar
}
?>
In het eerste script deze regel weghalen.
$info = mysql_fetch_array( $data );

In het tweede script deze weghalen:
$info = mysql_query("SELECT * FROM nieuwsberichten ORDER BY id ASC") or die(mysql_error());
Nah ja... gewoon in 1x goed... 3 maanden geleden schold ik alles nog overhoop wat met serverside scripting te maken had maar ik begin het zowaar door te krijgen! Bedankt!

Ik zou nog best eens willen weten hoe dat het ontbreken van het eerste record nou ontstaat en wat de theorie hierachter is...
Heel simpel.
Met
$info = mysql_fetch_array( $data );
haal je al één record op. Daar doe je niets mee.
En met
while($info = mysql_fetch_array( $data ))
haal je de rest op.

Edit: Zoals je ziet is het namelijk precies dezelfde tekst.
Ahhh dus da's de truc... thanx, ik begin in de flow van PHP te komen! Korte vraag tussendoor: die auto_increment... stel ik heb 6 records en ik wis nummer 3 en 4. Logischerwijs heeft een nieuw record id7, maar stel dat ik na 3 jaar 7687634 records heb, maakt dat dan heel veel uit? Of is het mogelijk dat allemaal op te laten schuiven? Mij is namelijk verteld met me fikken van die kolom af te blijven ha ha!
Het is op zich natuurlijk een kwestie welke integer type je gebruikt voor het auto increment veld, even wat knip en plak werk voor je:

Int:
A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.

Bigint:
A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.


en een id is iets van de tabel zelf blijf daar inderdaad vanaf
OK eens inlezen over die integers dus! Signed of unsigned das in elk geval genoeg speelruimte, thanx!

Reageren