Hoi allemaal!

Ik zit met het volgende probleem. Ik wil resultaten ophalen uit een databse via een database class. In de db class staat de volgende functie:

Bestand: (database_handler.php)

<?
function get_array($sql)
{
$this->connect();
$res = mysql_query($sql);
$record = mysql_fetch_assoc( $res );

mysql_close();

return $record;
} ?>

Nu wil ik alle menu items ophalen uit de db. in mijn menu.inc.php roep ik deze als volgt aan. in mijn index.php include ik de menu.inc.php en require databasehandler.php.

Bestand: (menu.inc.php)

<?php
$obj = new Database();

echo "<h3>Product groepen</h3>";
echo "<lu>";
while ( $record = $obj->get_array('SELECT * FROM hoofdrubrieken') ) {
echo "<li><a href=\"#\">" .$record['menu_naam'] . "</li>";
}
echo "</lu>";
?>


foutmelding:

Er is een fout opgetreden in het script 'config/database_handler.php' op regel 25:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Datum/tijd: 2-12-2008 16:49:05

Array
(
[sql] => SELECT * FROM hoofdrubrieken
)




- Verbinding mislukt? Check je methode connect() in de Database klasse.
Het ontbreekt je aan foutafhandeling.

- Ik vind persoonlijk ook dat je niet een verbinding hoort te maken in de functie get_array().

-Volgens mij is dit ook een eindeloze loop.
Klopt het inderdaad een eindloze loop! Voor een verbinding van mijn sql heb ik maar const en deconst gemaakt.

Maar ik neem aan dat als ik zeg:

while ($record = $obj->get_array('SELECT * FROM hoofdrubrieken'))

ik eigenlijk zeg:

while ( $record = mysql_fetch_assoc( $query ) )

Damm ik wil dit zoooo graag leren!
Ik zou in get_array sowieso geen mysql_close() zetten, het is niet nodig om na elke query de verbinding weer te sluiten.
ik kom hier eigenlijk om hulp vragen

voor ons examen mogen wij de pc gebruiken zonder netwerk maar openboek

en er is 1 oefening die ik totaal niet kan, oefening is als volgt:

maak een lijst in java van nummer 1 tot 1000

in de lijst moeten de nummers achtereenvolgens komen met er achter het woord
EVEN of ONEVEN
dus 1 oneven
2 even
3 oneven
4 even
......
@thestone:

Heb je ook al goed gekeken naar de voorbeeldjes op
http://nl.php.net/mysql_query ?


@erik van elsacker:
<?php
for( $i = 1; $i < 1001; ++$i )
{
echo $i, ' ', ( $i % 2 ? 'oneven' : 'even'), '<br />';
}
?>

Dit zal in Java ook ongeveer zo werken.
In Java is het eigenlijk het zelfde, een for lus werkt dan ook gewoon.

Ik heb de Java syntax niet paraat omdat ik niet veel Java gebruik, maar volgens mij is het enige echte punt dat Java geen verkorte if notatie kent.

Edit:
@erik van elsacker:
Overigens zie ik nu dat dit toppic over iets anders gaat en dat je nieuw bent hier, de volgende keer even een eigen toppic openen graag.
Je moet een memberfunctie hebben die de query netjes uitvoert. Die zou er zo uit kunnen zien:
<?php
public function query ($sql) {
if (!$this->res = mysql_query ($sql)) {
array_push ($this->errs, '<p>' . mysql_errno () . ': ' . mysql_error () . '</p>');
array_push ($this->errs, '<pre>' . htmlentities (str_replace ("\t", '', $sql)) . '</pre>');
return false;
}
else {
$this->insert_id = mysql_insert_id ();
return true;
}
}
?>
Dan een functie die alle resultaten als array ophaalt:
<?php
public function get_records ($sql) {
// leegmaken
$this->records = array ();
$this->query ($sql);
while ($row = mysql_fetch_assoc ($this->res)) {
array_push ($this->records, $row);
}
return $this->records;
}
?>
De records worden dus in een array geplaatst. Nu kun je een query opstellen en daarna zoiets doen:
<?php
$sql = "
SELECT veld1, veld2
FROM tabelnaam
ORDER BY veld1 ASC
";
foreach ($db->get_records ($sql) as $row) {
// doe iets met $row['veld1'] en $row['veld2']
}
?>
erik van elsacker schreef op 02.12.2008 19:27
ik kom hier eigenlijk om hulp vragen

voor ons examen mogen wij de pc gebruiken zonder netwerk maar openboek

en er is 1 oefening die ik totaal niet kan, oefening is als volgt:

maak een lijst in java van nummer 1 tot 1000

in de lijst moeten de nummers achtereenvolgens komen met er achter het woord
EVEN of ONEVEN
dus 1 oneven
2 even
3 oneven
4 even
......
Deze tekst heb ik ook al gehad via pm. Ik heb je reeds een stuk code gegeven vrijwel gelijk aan wat hier een paar posts hierboven is geplaatst. Hou eens op met schooien joh.

Reageren