So, dann erkläre ich dir mal, was die einzelnen Funktionen tun. Steht zwar alles im PHP-Handbuch, aber vielleicht verstehst du es im Kontext deines Projektes besser. Auch hier heißt die Devise: NICHT KOPIEREN, SONDERN LESEN UND VERSTEHEN!
1. mysql_real_escape_string() sorgt dafür, das niemand schadhaften Code in deine Datenbank einschleusen kann. Wir belassen es erstmal dabei, weitere Kommentare dazu sorgen nur für Verwirrung.
2. sprintf() kann man dazu verwenden, eine Zeichenkette zu formatieren, die %+Buchstabe sind typisierte Platzhalter. An diese Stelle kommen die Werte, in den Parametern 2 und mehr stehen. Das kannst du ziemlich gut nachvollziehen, wenn du das SQL einfach mal mit echo ausgeben lässt, nach dem du es mit sprintf() zusammen gebaut hast:
PHP:
$SQL_statement=sprintf("SELECT * FROM angebote WHERE angebotsnummer=%d ", $_GET['angebotsnummer']);
echo "Folgendes SQL wird gleich augeführt: <pre>$SQL_statement</pre>";
3. mysql_query() sendet das zuvor zusammen gebaut SQL an die Datenbank und bekommt im Erfolgsfall eine sog. Ergebnismenge zurück (im Fehlerfalle kommt false zurück). Die Ergebnismenge beinhaltet bei einem SELECT-SQL alle Datensätze die gefunden wurden. Wenn du z.B. folgendes ausprobierst (SQL aus Punkt 2)
PHP:
// SQL senden und auf Ergebnismenge warten
$ergebnismenge = mysql_query( $SQL_statement ) or die( mysql_error() );
// Ergebnismenge zu Testzwecken mal ausgeben
var_dump( $ergebnismenge );
dann wirst du sehen, das da keine lesbaren Datensätze drin sind. Statt dessen bekommst du "resource #1" oder etwas in der Art ausgegeben. Und damit kommen wir schon zum nächsten Befehl:
4. mysql_fetch_assoc() liefert dir genau 1 (in Worten: einen) Datensatz aus der Ergebnismenge. Dafür braucht es als Parameter die Ergebnismenge, von dem es einen Datensatz holen soll. Das kann dann so aussehen:
PHP:
// Einen Datensatz aus der Ergebnismenge holen
$datensatz = mysql_fetch_assoc( $ergebnismenge );
// Testweise mal den Datensatz einfach raus dumpen (alle Elemente des Datzensatzes darstellen)
echo "<pre>";
var_dump( $datensatz );
echo "<pre>";
Wie du siehst, wird da eine Zeile aus deiner Tabelle angezeigt. mysql_fetch_assoc() weiß auch nichts darüber, ob noch mehr Datensätze in der Ergebnismenge drin sind, es holt immer genau einen raus. Wenn da mehrere drin sind, musst du eine Schleife verwenden, die so lange abläuft, bis mysql_fetch_assoc() keine Datensätze mehr in der Ergebnismenge findet. Das kann dann so aussehen:
PHP:
// Wir holen solange Datensätze ab, bis keine mehr da sind
while( $datensatz = mysql_fetch_assoc( $ergebnismenge ) )
{
// Und dumpen den aktuell geholten Datensatz einfach mal raus:
echo "<pre>";
var_dump( $datensatz );
echo "</pre>";
}
Die Ausgabe wird nun alle Datensätze anzeigen, die mit dem SELECT gefunden werden konnten. Mit dem Schlüsselwort WHERE schränkt man seine Suche quasi ein - ich denke, das weißt du bereits.
Ist das Verfahren damit einigermaßen klar?