[MySQL] Hoe goed een database uitlezen met PHP?

Pagina: 1
Acties:
  • 445 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52
Ik ben nu op het moment, dat ik echt moet zeggen: "Ik kom er niet meer uit :'( ".

Het schrijven naar een database gaat perfect. Maar als ik een database wil uitlezen, gaat het ALTIJD hopeloos verkeerd :(

Ik heb al vele artikelen gelezen op o.a. w3schools, phpfreakz, scriptnet.

Maar ik blijft iedere keer hangen op het uitlezen van een database.

Op w3schools wordt een mooie uitleg gegevens hoe je met select, etc. alles mooi uit een database kunt krijgen. Maarja nu moet het met php gebeuren...

Wat mijn bedoeling is.

De gevens uit een database met SELECT * etc. Uit een database halen en dan in een ARRAY zetten.

Maar nu krijg ik het dus NIET voor elkaar om alle gegevens (meestal lukt me maar 1 cel van een rij) netjes in bijvoorbeeld een tabel te krijgen :/

Wie weet er een goed artikel voor mij waarmee ik kan leren hoe ik netjes en makkelijk data vanuit de database op me scherm krijg.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

Laat eens een voorbeeld zien van hoe je het tot nu toe doet en wat daar allemaal verkeerd bij gaat. In principe is het uitlezen van een resultset helemaal niet lastig mbv de mysql_fetch_* functies.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 11-06 06:39
post eens wat code zou ik zeggen...

te laat....

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 25-06 21:03
met de php functie mysql_fetch_array kun je gegevens uit de db in een array zetten.
uitleg + voorbeeldje uit de manual:
http://www.php.net/manual/en/function.mysql-fetch-array.php

Acties:
  • 0 Henk 'm!

Anoniem: 41216

Probeer eerst eens mysql_result().
En probeer later naar mysql_fetch_array() uit te wijken.

PHP:
1
2
3
4
5
6
$result = mysql_query("SELECT * FROM tabel");
echo "<table width=500 cellspacing=0 cellpadding=0>\r\n";
for($i=0;$i < mysql_numrows($result);$i++){
  echo "<tr><td>". mysql_result($result,$i,'kolom')."</td></tr>\r\n";
}
echo "</table>\r\n";

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52
Hier mijn hopelose stukje code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
/* Connect to db */
include("wws.php");
mysql_connect($hostname, $user, $dbpassword) or die("Sorry, could not find MySQL database...");
mysql_select_db('agenda');


$sql = mysql_query("SELECT * FROM data") or die(mysql_error());
$row = mysql_fetch_row($sql);
$rowcount = mysql_num_fields($sql);

print($row[4]);

?>


Ik had hem eerst met een while lus. Ging wel aardig, maar werkte niet goed :+

let even niet op me knullige print array :)

Bedankt voor jullie mooie reacties. Ik ga morgen proberen of ik iets goed WERKENDS kan maken ;)

Acties:
  • 0 Henk 'm!

Anoniem: 55738

Als je
PHP:
1
2
3
while ($row=mysql_fetch_row($result)) {
..
}

doet, moet het prima lukken.. wat ging er daarmee dan mis?

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52
Anoniem: 55738 schreef op 03 november 2002 @ 23:25:
Als je
PHP:
1
2
3
while ($row=mysql_fetch_row($result)) {
..
}

doet, moet het prima lukken.. wat ging er daarmee dan mis?
Effe kijken of ik het mislukte stukje code nog kan vinden. (btw ook nog wakker ;) )

Dit was een stukje code om alle sitenames met hun url op te halen, maar zoals je kan zien geen lus, werkt dus niet... (deze code kreeg ik van de mensen van PHPFreakz).

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
/* Connect to db */
include("wws.php");
mysql_connect($hostname, $user, $dbpassword) or die("Sorry, could not find MySQL database...");
mysql_select_db('tweakers');
$achternaam = "aalderink";

$sql = mysql_query("SELECT * FROM sites WHERE achternaam = '$achternaam'") or die(mysql_error());
while ($obj = mysql_fetch_object($sql)) {
$sitename = "$obj->sitename";
$siteurl = "$obj->siteurl";
}
print($sitename);
print($siteurl);

?>

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 27-06 07:04

Bosmonster

*zucht*

DinoRacer schreef op 03 november 2002 @ 23:23:
Hier mijn hopelose stukje code:


Ik had hem eerst met een while lus. Ging wel aardig, maar werkte niet goed :+

let even niet op me knullige print array :)

Bedankt voor jullie mooie reacties. Ik ga morgen proberen of ik iets goed WERKENDS kan maken ;)


Jouw $rowcount is niet de row_count, maar column_count. Voor iedere keer dat je een mysql_fetch_row doet krijg je 1 row terug. Dit moet je dus in een loopje doen.

PHP:
1
2
3
4
$myArray = array();
while ($row = mysql_fetch_assoc($result)) {
     $myArray[] = $row;
}


Hiermee kopieer je de inhoud van je resultset in een loop naar $myArray. Deze kun je kun je vervolgens oproepen met bijvoorbeeld:

$myArray[5]['mijnkolom']

Regel 6 (beginnen bij 0) en dan de waarde van kolom 'mijnkolom'.
$sitename = "$obj->sitename";
Alsjeblieft haal die quotes weg :|

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 27-06 07:04

Bosmonster

*zucht*

DinoRacer schreef op 03 november 2002 @ 23:26:
[...]

Dit was een stukje code om alle sitenames met hun url op te halen, maar zoals je kan zien geen lus, werkt dus niet... (deze code kreeg ik van de mensen van PHPFreakz).

PHP:
1
2
3
4
5
6
7
or die(mysql_error());
while ($obj = mysql_fetch_object($sql)) {
$sitename = "$obj->sitename";
$siteurl = "$obj->siteurl";
}
print($sitename);
print($siteurl);


Dit is prima code en al je records worden ook opgehaald in een while-lus.. maar je ziet toch dat je iedere keer je variabele $sitenaam en $siteurl overschrijft?? En utieindelijk print je alleen de laatste.. :)

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52
Komt van pas ;)

Jee op deze tijd van de dag vliegen de reply's je om de oren :)

De PHP'ers zijn echt nachtmensen ;) (check het PHPFreakz IRC kanaal, die zijn er om 04:00 nog :) )

Acties:
  • 0 Henk 'm!

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 25-06 15:52
Bosmonster schreef op 03 november 2002 @ 23:38:

[...]


Dit is prima code en al je records worden ook opgehaald in een while-lus.. maar je ziet toch dat je iedere keer je variabele $sitenaam en $siteurl overschrijft?? En utieindelijk print je alleen de laatste.. :)
Ja dat ophalen uit een database zit er duidelijk nog niet goed in ;) Schrijven gaat me tot nog toe beter af :)

Acties:
  • 0 Henk 'm!

  • judgem
  • Registratie: December 2001
  • Laatst online: 28-04-2014

judgem

Lord of Metal

DinoRacer schreef op 03 november 2002 @ 23:41:
[...]


Ja dat ophalen uit een database zit er duidelijk nog niet goed in ;) Schrijven gaat me tot nog toe beter af :)
LOL... das bij mij vaak precies omgekeerd.. Maar goed met een beetje hulp komen we er wel... :)

- Ik bespreek ook harde waren en dan wel op www.lordsofmetal.nl - en ik draai en programmeer ze in DYNAMO


Acties:
  • 0 Henk 'm!

Anoniem: 1943

Meestal haal ik de data op middels een functie de een array met de records returned.

ophalen:
code:
1
2
3
4
5
6
7
8
function getDatabaseData() {
  $lijst = array();
  while ($row = mysql_fetch_array($result)) 
  {
        $lijst[] = $row;
  }
  return $lijst;
}


En dan uitlezen van de array:
code:
1
2
3
4
foreach($lijst as $record) {
    $record[0] = veld 1 uit de query
    enz...
}

$record uit die laaste is dus steeds een heel record uit het query resultaat. De foreach zorgt ervoor dat je steeds een regel verder gaat in je query resultaat.

Acties:
  • 0 Henk 'm!

  • KneoK
  • Registratie: December 2001
  • Laatst online: 03:36

KneoK

Not in a million lightyears

Je leest gewoon alle data regel voor regel uit in een for loopje en geeft dan de resultaten weer:

PHP:
1
2
3
4
5
6
7
<table>
<?php
for ($count = 1; $row = mysql_fetch_row ($query_result_handle); ++$count){ 
    print "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
?>
</table>


Met de print statement beeld je dus de index van de array af. Dus als je een tabel hebt met 2 velden, ID en NAAM bijvoorbeeld dan krijg je bij $row[0] het ID en $row[1] de NAAM.
Pagina: 1