Ik heb een dynamisch menu gemaakt in PHP/SQL.

Ik heb een database met daarin een tabel met een kolom 'id' (Primary Key) een kolom 'title' en een kolom 'text'. Met onderstaande script genereer ik een tabel met in elke cel een link. De hrefs worden aangemaakt aan de hand van de id-kolom, en linken naar select_id.php, een bestand wat de meegeleverde id ($col_value) evalueerd en de juiste 'title' en 'text' laat zien. Voor zover werkt het prima. Wat me echter niet lukt, is de links van een juiste naam ('title') te voorzien: in het tabelletje staat Array of ResourceId. Dit heeft iets te maken met de manier waarop 'title' wordt gefetched denk ik. De hrefs worden met een While loop gefetched en in deze loop wil ik dus het desbetreffende 'title' laten fetchen. Zien jullie het probleem? Ik ben nog maar een newbie met PHP/SQL, en hoewel ik al diverse dingen heb geprobeert is er vast iets wat ik over het hoofd zie.

<?php

// include configuration file
include("includes/config.inc.php");

// Connection to SQL (with custom error messages)
$connid = @mysql_connect (localhost,$username,$password) or die("Connection to the server failed");
mysql_select_db($database) or die("database niet gevonden");

// Selects the id's from the content table
$query1="SELECT id FROM content";
$result1=mysql_query($query1) or die ("Zoekopdracht is mislukt");

// Printing results in HTML
echo "<table border =\"1\" width=300>\n";

while ($line = mysql_fetch_array($result1, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {

$query2="SELECT title FROM content";
$result2=mysql_query($query2) or die ("Zoekopdracht is mislukt");

$title = mysql_fetch_array($result2, MYSQL_ASSOC);
mysql_fetch_array($result2, MYSQL_ASSOC);

echo "\t\t<td><a href=\"select_id.php?id=$col_value\">$title</a></td>\n";
echo "\n";
}
echo "</tr>\t\n";
}
echo "</table>\n";

?>

Regel 25 is dubbelop en kan weg.

En je echoot nu inderdaad het array().
Pak daar dus het element uit wat je nodig hebt.
echo $title['en_dan_hier_de_veldnaam'];

<?
while ($row = mysql_fetch_array($result2); { ?>
<td><a href="select_id.php?id=$col_value"><?php echo $row['title']; ?></a></td>
<? 
echo "\n";
}
echo "</tr>\t\n";
}
echo "</table>\n";
?>
De techniek van Santhe werkt wel, maar ik krijg helaas in alle cellen de 'title' van het eerste 'id' te zien. De links werken wel goed. het 2e voorbeeld zal dit misschien wel oplossen maar daar kom ik niet helemaal uit...
Heb het zelf al uitgevonden! Ik moest natuurlijk het volgende nog even aangeven: SELECT title FROM content WHEN id=$col_value... en de syntax stond verkeerd! Hieronder het volledige script voor degenen die het menuutje ook eens willen proberen. Je moet dan wel in config.inc.php je username, password etc. plaatsen en de velden in je database moeten id (primary key met auto increment), title, en tekst zijn.

<?php

// include configuration file
include("includes/config.inc.php");

// Connection to SQL (with custom error messages)
$connid = @mysql_connect (localhost,$username,$password) or die("Connection to the server failed");
mysql_select_db($database) or die("database niet gevonden");

// Selects the id's from the content table
$query="SELECT id FROM content";
$result=mysql_query($query) or die ("Zoekopdracht is mislukt");

// Printing results in HTML
echo "<table border =\"1\">\n";

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {

echo "\t\t<td><a href='select_id.php?id=$col_value'>";

$query2="SELECT title FROM content WHERE id=$col_value";
$result2=mysql_query($query2) or die ("Zoekopdracht is mislukt");
$title=mysql_fetch_array($result2, MYSQL_ASSOC);
echo $title ['title'];

echo"</a></td>\n";
}
echo "</tr>\t\n";
}

echo "</table>\n";

?>

Reageren