Linkverwaltung
Laura
- php
Hallo,
ich habe über PHP eine kl. Linkverwalt. aufgebaut, über die sämtl. LINKS in einer SQL-Datenbank hinterlegt und auf Abfrage "echo insert_link($id)" ausgegeben werden - siehe folgender Quellcode.
Leider ist es mir mit Hilfe dieses Script nicht gelungen aus einer anderen Tabelle (=benutzer) die Daten für den Part "usrname=$usrname" (siehe Link) einzubetten, so dass auch tatsächl. Daten aus der 2ten Tabelle ausgelesen werden. Wie müsste die Abfrage aussehen bzw. wo müsste Sie integr. werden ?
Vielen Dank schon mal im voraus.
Hier der Code:
function insert_link($id)
{
$sqlhost = // SQL Host
$sqluser = // SQL User
$sqlpwd = // SQL Passwort
$database = // SQL Datenbank
mysql_connect($sqlhost,$sqluser,$sqlpwd );
mysql_select_db($database);
$abfrage = "SELECT id, url, text, target ,sid FROM links WHERE id='".$id."'";
$result = mysql_query($abfrage)or die(mysql_error());
while(list($id, $url, $text, $target, $sid) = mysql_fetch_row($result))
{
if ($text!="")
{
$code = md5($sid);
$link_q = "UPDATE links SET sid = '$code' WHERE id='".$id."'";
$link_r = mysql_query($link_q)or die(mysql_error());
$link = "<a href="$url?usrname=$usrname?sid=$code" target="$target"><img border='0' src="$image" alt="$alt"></a>";
return $link;
}
}
}
?>
Leider ist es mir mit Hilfe dieses Script nicht gelungen aus einer anderen Tabelle (=benutzer) die Daten für den Part "usrname=$usrname" (siehe Link) einzubetten, so dass auch tatsächl. Daten aus der 2ten Tabelle ausgelesen werden.
mysql_connect($sqlhost,$sqluser,$sqlpwd );
mysql_select_db($database);
Die Zeile(n), in der geprüft wird, ob das bis hierhin erfolgreich war, hast Du sicher nur weggelassen?
$abfrage = "SELECT id, url, text, target ,sid FROM links WHERE id='".$id."'";
$result = mysql_query($abfrage)or die(mysql_error());
Die Zeile, in der geprüft wird, ob mysql_query() erfolgreich war, hast Du sicher nur weggelassen?
while(list($id, $url, $text, $target, $sid) = mysql_fetch_row($result))
Tipp: Verwende statt mysql_fetch_row() mysql_fetch_assoc(). Damit erhälst Du ein Feld mit Einträgen à la $row["id"], $row["url"], $row["text"], etc und bekommst a) keine Probleme, falls Du mal die SELECT-Abfrage änderst und vergisst, list() ebenfalls anzupassen und "verschmutzt" Dir b) nicht den Variablenraum mit lauter einzelnen Variablen, die eigentlich alle zusammengehören.
{
if ($text!="")
{
$code = md5($sid);
$link_q = "UPDATE links SET sid = '$code' WHERE id='".$id."'";
$link_r = mysql_query($link_q)or die(mysql_error());
Aha, Du hast die Fehlerprüfungen oben also tatsächlich nur der Übersichthalber weggelassen.. ;)
Hier muß wohl Deine Abfrage der zweiten Tabelle rein. Du hast leider vergessen zu erwähnen, was Du eigentlich genau abfragen willst, insofern ist das nur eine Vermutung.
$link = "<a href="$url?usrname=$usrname?sid=$code"
In eine URL gehört nur _ein_ Fragezeichen. Trenne einzelne Parameter in der URL durch & (im HTML-Quelltext _nicht_ & verwenden) oder besser noch, sofern Dein Server es akzeptiert, das Semikolon (dann hast Du nicht das Problem mit & und &).
Weiterhin solltest Du tunlichst darauf achten, alle Ausgaben durch htmlentities() zu machen, sofern nicht absolut sicher ist, daß die Daten nur die Buchstaben a bis z (groß wie klein) sowie die Ziffern 0 bis 9 enthalten. So ziemlich alles andere sollte in HTML als Sonderzeichen behandelt und mittels htmlentities() entsprechend maskiert werden:
$link="<a href="".$url."?"usrname=".htmlentities($usrname)"&sid=$code" [..]
Gruß,
soenk.e