Füllen radio-buttons mit Werten aus Datenbank
zwei Qs an einem Tag...
Ich versuche, um die richtige radio-button aktiviert ist, wenn ich ziehe Daten aus einer mysql-Datenbank für die Anzeige in einem edit-Formular. Habe versucht, alle Arten von code, bekomme aber das gleiche Ergebnis jedes mal: der Letzte Wert ist immer der, der geprüft wird. Mystifiziert.
Mein code ist etwas kompliziert, indem Sie innerhalb einer langen html-string, damit der Bau für das Lesen der php-Variablen. Ich habe diesen code am Anfang der Seite:
$row = mysql_fetch_assoc($result, MYSQL_ASSOC);
if ($row)
{
print("<p>$se_id is in the database. You can edit this record.</p>");
//get variables to set radio buttons in $form
$type = $row['se_source'];
$checked[$type] = "checked";
etc... und diesen code innerhalb der html-string:
<li>
<label for="se_source">Contributed by:</label>
echo ' . $type . '
<input id="se_source" type="radio" id = "radio" name="se_source" value="CNFP" checked = ' . $checked["CNFP"] . '>CNFP</input>
<input id="se_source" type="radio" id = "radio" name="se_source" value="User" checked = ' . $checked["User"] . '>User</input>
Die echo-Anweisung ist für meine eigene geistige Gesundheit-ich weiß, es ist nicht wirklich ein echo hier. Aber selbst, wenn er sagt "echo CNFP" es ist immer die "User" - Taste aktiviert ist. Ich weiß, es ist immer der richtige Wert für die variable, aber aus irgendeinem Grund ist es standardmäßig den letzten Wert in der Liste. Ich hab es mit "===" als gut. Keine Freude. Jede Erleuchtung geschätzt, vielen Dank für das ansehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
AFAIK, ist der Wert der checked-Attribut ist nicht wichtig, nur die Gegenwart ist es ausreichend, markieren Sie die checkbox als markiert.
(HTML5-standard bestätigt dies)
Probieren Sie etwas wie dieses:
Müssen Sie den "checked" - Attribut NUR auf den ausgewählten radio-button. So müssen Sie zum ändern der php-code echo in das richtige format.
ich denke, dass die Balg-code wird gut funktionieren, wie Sie wollen. Sie müssen ein Feld hinzufügen um zu überprüfen, ob es aktiviert ist.
}
Dem Grund, dass Sie immer kontrolliert auf die Letzte ist, weil Sie die Einstellung jeder radio-button aktiviert nacheinander.
Wenn Sie eine Reihe von radio-buttons mit dem gleichen Namen zu einem browser, die Standard-Verhalten ist, dass die Letzte Schaltfläche festlegen, wie geprüft wird die eine, die zeigt, wie überprüft. Also, wenn Sie fünf radio-Knöpfen und Sie sind alle gesetzt, wie überprüft, das radio kann nicht mehr als eine angekreuzte option.
Wenn ein browser auf einen zweiten radio-set option, die auch gekennzeichnet als "geprüft" einfach entfernt "geprüft" von der ersten.
Ihre php-code ausführen, dies in dieser Zeile:
Das problem mit diesem ist, dass Sie erstellen ein array, das wird sich zeigen mit:
se_source => geprüft
Also das bedeutet, dass geprüft wird die Zeile mit dem Wert für jedes Element in deinem array.
Ich denke, Sie sollten überdenken Sie Ihre Tabelle Struktur und Prozess. Stattdessen erstellen Sie eine Spalte für den Willen, etwas geprüft, das folgende ist, was ich verwenden.
Grundsätzlich dein problem ist, dass Sie brauchen:
Den Wert in der Datenbank übereinstimmen
Den Wert der radio-button selbst
Denen Sie:
Vergleichen Sie den Datenbank-Wert (DBV) mit dem radio-button-Wert (RBV) und legen Sie es als geprüft, wenn der Vergleich kommt wieder als wahr.
Den Variablen, die unten sind:
$ar_rvbs = array radioset Werte (strings oder booleans, in der Regel) wirst du in einer Schleife durch und prüfen Sie anhand der gespeicherten DBV.
$value = der Wert der einzelnen posten in der radioset Wert array
$attrval = der gespeicherte Wert für die radio-Taste. es muss nicht zwingend in einer Datenbank. könnten Sie die post-Methode übergeben es von einer Seite zur nächsten.
$checked = wenn der DBV entspricht der RBV, wenn die Schleife durchläuft, wird dies auf den string "checked", sonst ist es nur eine leere Zeichenfolge.
/Eine/Pass der Liste des RBVs als ein array und die DBV als variable
/B/Set überprüft, um eine leere Zeichenfolge ist, denn das wird der Standard sein für alle die radio-buttons im set, außer dem einen, der die Spiele der DBV
/C/Vergleichen der DBV auf die aktuelle RBV verarbeitet wird, durch die Schleife von den RBV-array
/D/Wenn der Vergleich von Schritt C gibt true zurück, machen die überprüft string verfügbar für den Einbau in das input-element
Echo kümmert sich um die Erzeugung jedes radio option festlegen und sicherstellen, dass die one die Spiele der DBV hat mit "checked" in das input-element-tag
Check this out! Das könnte sein was du suchst 🙂
Generieren checkbox basierend auf Einträgen in einer MySQL-Tabelle