Kenney
Mitglied
Wird noch nachgetragen. Habe ich verdüst....Die Funktion wird doch jetzt nirgendwo mehr aufgerufen.
Und display_errors ist auch nicht drin.![]()
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Wird noch nachgetragen. Habe ich verdüst....Die Funktion wird doch jetzt nirgendwo mehr aufgerufen.
Und display_errors ist auch nicht drin.![]()
Die #22 könnte ich bis jetzt nicht wirklich einordnen.1. Da Du die Selects dynamisch generieren willst, macht des keinen Sinn, diese schon im HTML zu notieren. Statt dessen musst Du die Funktion zwei Mal aufrufen und den Rückgabewert mit echo ausgeben, wie ich es in Posting #22 gezeigt habe.
2. Siehe meine Kommentare im Code:
Code:if ($multiple) //Abfrage ob $multiple true ist { $multAttribute = " multiple";//belegt die Variable mit multiple, wenn vorhanden, true $nameAttribute = $name . '[]';//belegt die Variable mit der Variable $name(legst du es in eine Array?) // An dieser Stelle weißt Du schon, dass es sich um eine Mehrfachauswahl handelt, // eine erneute Abfrage ist überflüssig: if($multAttribute){//Wenn true, soll er die Werte, später, auszählen // Mit count bist Du schon auf dem richtigen Wege aber Du musst es auf $options anwenden // um die die Anzahl zu ermitteln. Ich empfehle, gleich hier das vollständige size-Attribut // $sizeAttribute mit Name und Wert bereit zu stellen und später nur noch in das HTML // einzufügen: var_dump(count($multAttribute));//Ein Versuch, zu prüfen ob Werte zum berechnen da sind. } } else { $multAttribute = '';//alternativ wird die Variable mit Null gefüllt, false $nameAttribute = $name;//alternativ wird die Variable mit der Variable $name gefüllt }
<form method="post">
<?php
echo dynAuswahl(
'befestigungstec', // Die ID des Select
'befestigungstec', // Der Name des Select
befestigungstec, // Die Optionen des Select (array)
true // Gibt an, ob mehrere Optionen auswählbar sind (boolean)
);
echo dynAuswahl(
'lebensmittel', // Die ID des Select
'lebensmittel', // Der Name des Select
lebensmittel, // Die Optionen des Select (array)
false // Gibt an, ob mehrere Optionen auswählbar sind (boolean)
);
?>
<input type="submit" value="Abschicken">
</form>
Vielen Dank für den HInweis.Der Aufruf von dynAuswahl gibt das fertige Select an der Stelle im HTML aus wo Du es notiert hast:
Natürlich musst Du auch die beiden Arrays definieren.Code:<form method="post"> <?php echo dynAuswahl( 'befestigungstec', // Die ID des Select 'befestigungstec', // Der Name des Select befestigungstec, // Die Optionen des Select (array) true // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ); echo dynAuswahl( 'lebensmittel', // Die ID des Select 'lebensmittel', // Der Name des Select lebensmittel, // Die Optionen des Select (array) false // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ); ?> <input type="submit" value="Abschicken"> </form>
Hey,Vielen Dank für den HInweis.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>dynamische Auswahlliste generieren</title>
<?php
error_reporting(-1);
ini_set("display_errors", 1);
?>
</head>
<body>
<?php
function dynAuswahl(
$id, // Die ID des Select
$name, // Der Name des Select
$options, // Die Optionen des Select (array)
$multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean)
) {
if ($multiple) //Abfrage ob $multiple true ist
{
$multAttribute = "multiple";//belegt die Variable mit multiple, wenn vorhanden, true
$nameAttribute = $name . '[]';//belegt die Variable mit der Variable $name(legst du es in eine Array?)
if($multAttribute){
for($arrZahl = 0; $arrZahl < count($options); $arrZahl++){
$arrZahl;
}
}
} else {
$multAttribute = '';//alternativ wird die Variable mit Null gefüllt, false
$nameAttribute = $name;//alternativ wird die Variable mit der Variable $name gefüllt
}
$html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n";
foreach ($options as $opt) {
$html .= "<option value='$opt'> $opt </option>\n";
}
$html .= "</select>";
return $html;
}
?>
<h1>Einkaufsliste PHP</h1>
<form method="post">
<p>
<?php
echo dynAuswahl("dynamisch1", "auswahl1", array("Brot", "Butter", "Milch", "Eier", "Käse", "Wurst"), false);
?>
</p>
<p>
<?php
echo dynAuswahl("dynamisch2", "auswahl2", array("Schrauben", "Nägel", "Haken", "Nadeln", "Dübel"), true);
?>
</p>
<p>
<input type="submit" value="Abschicken">
</p>
<br>
<hr>
<h1>Einkaufsliste HTML</h1>
<p>
<select $id="dynamisch1" name="auswahl1[]" size="" multiple"">
<option value="Brot"> Brot </option>
<option value="Butter"> Butter </option>
<option value="Milch"> Milche </option>
<option value="Eier"> Eier </option>
<option value="Käse"> Käse </options>
<option value="Wurst"> Wurst </option>
</select>
</p>
<p>
<select id="dynamisch2" name="auswahl2[]" size="" multiple="multiple">
<option value="Schrauben"> Schrauben </option>
<option value="Nägel"> Nägel </option>
<option value="Haken"> Haken </option>
<option value="Nadeln"> Nadeln </option>
<option value="Dübel"> Dübel </option>
</select>
</p>
<p>
<input type="submit" value="Abschicken">
</p>
</form>
</body>
</html>
function dynAuswahl(
$id, // Die ID des Select
$name, // Der Name des Select
$options, // Die Optionen des Select (array)
$multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean)
) {
if ($multiple) //Abfrage ob $multiple true ist
{
$multAttribute = "multiple"; //belegt die Variable mit multiple, wenn vorhanden, true
$nameAttribute = $name . '[]'; //belegt die Variable mit der Variable $name(legst du es in eine Array?)
// Viel einfacher: Du brauchst nur die Anzahl der Elemente im Array options
// bereit zu stellen:
$arrZahl = count($options);
// if ($multAttribute) {
// for ($arrZahl = 0; $arrZahl < count($options); $arrZahl++) {
// $arrZahl;
// }
// }
} else {
$multAttribute = ''; //alternativ wird die Variable mit Null gefüllt, false
$nameAttribute = $name; //alternativ wird die Variable mit der Variable $name gefüllt
// Auch hier im else-Zweig ($multiple steht auf false) musst Du die Variable $arrZahl
// definieren, weil es sonst im weiteren Verlauf zu einem Fehler kommt:
$arrZahl = 1;
}
// Hier hattest Du einen Schreibfehler: sitze - size
$html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n";
// $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n";
foreach ($options as $opt) {
$html .= "<option value='$opt'> $opt </option>\n";
}
$html .= "</select>";
return $html;
}
$html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n";
// $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n";
multiple='$multAttribute'
bekommst Du, wenn es keine Mehrfachauswahl ist, folgendes HTML:<select id='dynamisch1' name='auswahl1' sitze=1 multiple=''>
Danke, ich werde mich gleich daran machen.Ich habe wieder Kommentare in deinen Code eingetragen:
Code:function dynAuswahl( $id, // Die ID des Select $name, // Der Name des Select $options, // Die Optionen des Select (array) $multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ) { if ($multiple) //Abfrage ob $multiple true ist { $multAttribute = "multiple"; //belegt die Variable mit multiple, wenn vorhanden, true $nameAttribute = $name . '[]'; //belegt die Variable mit der Variable $name(legst du es in eine Array?) // Viel einfacher: Du brauchst nur die Anzahl der Elemente im Array options // bereit zu stellen: $arrZahl = count($options); // if ($multAttribute) { // for ($arrZahl = 0; $arrZahl < count($options); $arrZahl++) { // $arrZahl; // } // } } else { $multAttribute = ''; //alternativ wird die Variable mit Null gefüllt, false $nameAttribute = $name; //alternativ wird die Variable mit der Variable $name gefüllt // Auch hier im else-Zweig ($multiple steht auf false) musst Du die Variable $arrZahl // definieren, weil es sonst im weiteren Verlauf zu einem Fehler kommt: $arrZahl = 1; } // Hier hattest Du einen Schreibfehler: sitze - size $html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n"; // $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n"; foreach ($options as $opt) { $html .= "<option value='$opt'> $opt </option>\n"; } $html .= "</select>"; return $html; }
Hier:
hattest Du einen weiteren Fehler:Code:$html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n"; // $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n";
Durch dieses:multiple='$multAttribute'
bekommst Du, wenn es keine Mehrfachauswahl ist, folgendes HTML:
<select id='dynamisch1' name='auswahl1' sitze=1 multiple=''>
Das Attribut "multiple" braucht keinen Wert um wirksam zu werden. Auch mit einem Leerstring bekommst Du eine Mehrfachauswahl.
@SempervivumIch habe wieder Kommentare in deinen Code eingetragen:
Code:function dynAuswahl( $id, // Die ID des Select $name, // Der Name des Select $options, // Die Optionen des Select (array) $multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ) { if ($multiple) //Abfrage ob $multiple true ist { $multAttribute = "multiple"; //belegt die Variable mit multiple, wenn vorhanden, true $nameAttribute = $name . '[]'; //belegt die Variable mit der Variable $name(legst du es in eine Array?) // Viel einfacher: Du brauchst nur die Anzahl der Elemente im Array options // bereit zu stellen: $arrZahl = count($options); // if ($multAttribute) { // for ($arrZahl = 0; $arrZahl < count($options); $arrZahl++) { // $arrZahl; // } // } } else { $multAttribute = ''; //alternativ wird die Variable mit Null gefüllt, false $nameAttribute = $name; //alternativ wird die Variable mit der Variable $name gefüllt // Auch hier im else-Zweig ($multiple steht auf false) musst Du die Variable $arrZahl // definieren, weil es sonst im weiteren Verlauf zu einem Fehler kommt: $arrZahl = 1; } // Hier hattest Du einen Schreibfehler: sitze - size $html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n"; // $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n"; foreach ($options as $opt) { $html .= "<option value='$opt'> $opt </option>\n"; } $html .= "</select>"; return $html; }
Hier:
hattest Du einen weiteren Fehler:Code:$html = "<select id='$id' name='$nameAttribute' size={$arrZahl} $multAttribute>\n"; // $html = "<select id='$id' name='$nameAttribute' sitze={$arrZahl} multiple='$multAttribute'>\n";
Durch dieses:multiple='$multAttribute'
bekommst Du, wenn es keine Mehrfachauswahl ist, folgendes HTML:
<select id='dynamisch1' name='auswahl1' sitze=1 multiple=''>
Das Attribut "multiple" braucht keinen Wert um wirksam zu werden. Auch mit einem Leerstring bekommst Du eine Mehrfachauswahl.