PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP/MySQL Query Problem


Snake23
2005-05-23, 16:05:57
Hallo,
Ich wollte anhand von meiner MySQL-DatenBank ein Menü erstellen (Navigation für meine HomePage) mit PHP. Doch habe ein paar Probleme.
Datenbank sieht so au:
ID-----Name-----URL
1-----Link-----http://www.bla.de
2----- Link2-----http://www.blubb.de

Mein Ausleseverfahren für den Link (sehr umständlich):

<?
$con=mysql_connect('localhost', 'user','passwd');
mysql_select_db('tabelle', $con);

$select = mysql_query("select * from menu where id=1") ;

echo "<a href=\"";
$row = mysql_fetch_row($select);
echo $row[2];
echo "/\">";
echo $row[1];
echo "</a>";
?>


So gibt es nur den ersten Link aus, doch ich würde gerne alle Links die in dieser Tabelle sind ausgeben. Wie kann ich das anstellen? So das es beim ausführen des php-Files immer überprüft ob es neue Links hat.
Und wenn ich es in eine Tabelle einfüllen will, für jeden Link eine neue Zeile, wie geht das?

MfG

MadMan2k
2005-05-23, 16:11:56
<?
$con=mysql_connect('localhost', 'user','passwd');
mysql_select_db('tabelle', $con);

$select = mysql_query("select * from menu where id=1") ;

while($row = mysql_fetch_row($select)) {
echo "<a href=\"". $row[2] ."/\">". $row[1] ."</a>";
}
?>

Snake23
2005-05-23, 16:52:29
Das vereinfacht das ganze nur, doch gibt immer noch nur einen aus. Kann man es irgenwie mit einer for schlaufe lösen?

Coda
2005-05-23, 17:11:14
MadMan2k hat das schon richtig gepostet mit dem while. Warum sollte man da ein for verwenden wollen?

Snake23
2005-05-23, 17:24:32
bei mir hat es nicht funktioniert. hat nur ein link ausgegeben...

Misda
2005-05-23, 17:46:18
Ich mach das bei mir meist so:

Klasse DataBase


<?php
class Database
{
var $link;

function Database() {}

function connect($strHost,$strUser,$strPwd,$strDb)
{
$this->link = mysql_connect($strHost,$strUser,$strPwd);
if(!$this->link)
{
die('keine Verbindung möglich: ' . mysql_error());
}
mysql_select_db($strDb);
}

function close()
{
mysql_close($this->link);
}

function query($strSql)
{
$result = mysql_query($strSql, $this->link);
if (!$result)
{
die('Ungültige Abfrage: ' . mysql_error());
}
return $result;
}

}
?>


Aufruf


require_once('mod_db.php'); //Datei in der die DataBase Klasse liegt.

$database = new Database();

$database->connect('yourhost','youruser','yourpwd','yourdatabase');

$strSql = "SELECT * FROM yourtable;";
$result = $database->query($strSql);

while($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
echo $row["yourcol"];
}

Coda
2005-05-23, 18:15:57
bei mir hat es nicht funktioniert. hat nur ein link ausgegeben...$select = mysql_query("select * from menu where id=1") ; :rolleyes:

Snake23
2005-05-23, 22:19:14
$select = mysql_query("select * from menu where id=1") ;

Habe where id=1 weggenommen, doch hat nicht funktioniert, darum habe ich das so gemacht:


<table border="1" width="80">
<tr><td></td></tr>
<tr align="center">
<td>
<?
$con=mysql_connect('localhost', 'user', 'passwd');
mysql_select_db('db', $con);

$selectglobal = mysql_query("select * from menu");
$reihen = mysql_num_rows($selectglobal);

for ($i =1; $i <= $reihen; $i++) {
$select = mysql_query("select * from menu where id=$i") ;

while($row = mysql_fetch_row($select)) {
echo "<a href=\"". $row[2] ."/\">". $row[1] ."</a>";
}
echo "</td>";
echo "</tr>";
echo "<tr align=\"center\">";
echo "<td>";
}
?>
</td>
</tr>
</table>


Habe die Klasse von MistaX noch nicht getestet, da ich mit klassen noch nie etwas gemacht habe in php, doch hoffe er wäre dann bereit für Fragen :-)

Coda
2005-05-23, 22:22:44
Das wird nicht mehr funktionieren sobald du eine Zeile löscht oder die ids sonst irgendwie durcheinander kommen.

<?php
$con=mysql_connect('localhost', 'user','passwd');
mysql_select_db('tabelle', $con);

$select = mysql_query('select * from menu');

while($row = mysql_fetch_row($select)) {
echo '<a href="'. $row[2] .'">'. $row[1] .'</a>';
}
?> Das muss so funktionieren.

Misda
2005-05-24, 00:44:24
Klar, wenn du Fragen hast, frag :)

Du kannst natürlich auch nur folgendes benutzen:


$strSql = "SELECT * FROM menu;";
$result = mysql_query($strSql);

while($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
echo '<a href="' . $row[2] . '">' . $row[1] . '</a>';
}


das sollte es auch tun.