echo $begrüßung;
Wenn ich $buchstabe nur 'einmal' behandel werden Zeichen wie < oder > so wie sie sind ausgegeben, statt als < oder >.
Da stoss ich noch auf verständnis fragen.
Beobachte bitte genauer. Wo werden sie wie ausgegeben? Diese Umschreibung ist nur für den HTML-Code notwendig, denn hier muss du zwischen einem < als Tag-Eröffner und einem < als Datenbestandteil unterscheiden. Der Anwender will ein < sehen. Und auch die Datenbank will ein < haben, denn < sind für sie einfach nur 4 Zeichen ohne Bedeutung.
Was muss nach der abfrage im <input type="text"> stehen, '< oder <' ?
Im HTML-Code steht <, der Benutzer sieht <.
echo '<option value="'.(htmlspecialchars($row->interpret_id)).'">'; # ist an dieser stelle eine bearbeitung nötig?
Ja, so ist das gut (die äußeren ()-Klammern können entfallen). Selbst wenn du annimst, dass die Interpreter-ID immer numerisch ist, schadet es nicht, sie durch htmlspecialchars() zu jagen.
Das Ergebnis von mysql_num_rows($resultat) ist eine triviale Zahl und du brauchst es an genau einer Stelle. Es dafür zunächst in einer Variablen abzulegen, ist nicht notwendig.
Anders kriege ich kein Resultat bzw. zahl ausgegeben, wie kann ich das denn ohne Variablen lösen?
Das Funktionsergebnis weist du einer Variablen zu. Du kannst es genauso gut als Argument für eine weitere Funktion verwenden oder es einem echo übergeben.
Bist du sicher, dass du auf jeden Fall das select-Element so lang haben möchtest wie Datensätze vorhanden sind? Manchmal ist es sinnvoller, eine Obergrenze zu verwenden, so dass vielleicht 15 gleichzeitig angezeigt werden und der Rest erscrollbar ist. Das ließe sich mit der Funktion min() bewerkstelligen: min(15, mysql_num_rows($resultat)). Wenn num_rows größer als 15 ist, holt die 15 es auf ebendiese Anzahl zurück.
Das wäre ein schönes Feature, nur diese funktion verstehe ich nicht, oder wende es falsch an.
Ja, das ist vielleicht verwirrend, wenn du, um das Maximum zu begrenzen, eine Funktion für das Minimum anwenden sollst.
$resultat = mysql_query("SELECT interpret_id, name FROM song_interpret");
$num_rows = min(15, mysql_num_rows($resultat));
echo '<select name="Interpret" size="'.$num_rows.'">'."\n";
Das müsste eigentlich so passen, abgesehen von der fehlenden Reaktion auf Fehler, die dir mysql\_query() per false zu sagen versuchen könnte.
> Ich bekomme an stelle von '.$num\_rows.' immer 15, egal ob das resultat 15 sind oder weniger.
Was genau ist das Ergebnis von mysql\_num\_rows($resultat) in dem Fall? Füge eine Kontrollausgabe var\_dump(mysql\_num\_rows($resultat)); vor das echo ein.
> Ich hätte jetzt gedacht, das wenn das ergebnis weniger als 15 die entsprechende Zahl ausgibt, und über 15 immer 15 ausgibt.
So soll es ein. Das klärt sich sicher durch die Kontrollausgabe auf.
echo "$verabschiedung $name";