wie genau bau ich das in ein MySQL-query ein? Bin och PHP Newbie ...
Das hast Du doch schon drei Zeilen höher einmal gemacht:
$res = mysql_db_query("usr_web20_1", "select * from $tabelle");
Willst Du etwa damit sagen, daß Du nicht weißt, was Du tust? ;) Ein SQL-Befehl wird vom Datenbankserver ausgeführt, nicht vom PHP-Interpreter. Um einen SQL-Befehl an die Datenbank zu schicken, benutzt man die PHP-Befehle mysql_db_query() oder besser mysql_query().
Als komplettes Beispiel könnte es so aussehen:
if (! mysql_select_db("usr_web20_1")) die("Kann Datenbank nicht auswählen");
if (! $res = mysql_query("select * from $tabelle")) die("SQL-Fehler: select");
$id = mysql_num_rows($res);
$id++;
if (! mysql_query("insert into $tabelle (id,url,link,beschreibung) values ($id, '$url', 'link_name', '$beschreibung'")) die("SQL-Fehler: insert");
Da sind jetzt, abgesehen von der Fehlerbehandlung, zwei Änderungen drin:
1. Statt mysql_db_query() habe ich die Datenbank gleich als erstes mit mysql_select_db() ausgewählt und verwende im folgenden nur noch mysql_query(), also ohne Angabe der Datenbank. Jedes mysql_query() bezieht sich immer auf die gerade aktive Datenbank, also auf die vorher mit mysql_select_db() ausgewählte.
Dieser Weg ist seit PHP 4.0.6 so empfohlen. Warum, wieso, weshalb? Keine Ahnung. Spart aber immerhin ein wenig Tipperei.
2. In Deinem SQL-Insert habe ich die Feldnamen hinzugefügt ("id,url,link,beschreibung", sind nur ausgedacht). Es geht zwar auch ohne, aber ich finde es sicherer, wenn man selber die Auswahl trifft, welchem Feld welcher Wert zugeordnet werden soll, anstatt das man diese Auswahl MySQL überlässt. Letzteres kann bei späteren Änderungen an der Tabellenstruktur zu unangenehmen Überraschungen führen (falsche Zuweisungen).
Von diesen zwei Punkten mal abgesehen würde ich Dir bei der Gelegenheit auch empfehlen, das Feld id von der Datenbank verwalten zu lassen. Die Datenbank hat für genau solche Fälle eine Feldoption namens AUTO_INCREMENT, die dafür sorgt, daß automatisch für jeden neuen Datensatz eine eindeutige Zahl dem AUTO_INCREMENT-Feld zugewiesen wird. Du brauchst Dich dann um nichts mehr zu kümmern und kannst Dir die ganze $id-Behandlung oben sparen (die im übrigen sehr ineffizient ist).
Alles in allem würde das auf zwei Zeilen rauslaufen:
if (! mysql_select_db("usr_web20_1")) die("Kann Datenbank nicht auswählen");
if (! mysql_query("insert into $tabelle (url,link,beschreibung) values ('$url', 'link_name', '$beschreibung'")) die("SQL-Fehler: insert");
Gruß,
soenk.e