Wie, um den Standard-Wert auf "checked" bei einer Checkbox aus einer Datenbank
In der kurzen form, die Benutzer haben, checkbox Werte in einer MySQL Datenbank abgelegt. Ich kann in einer Schleife durch die Datenbank, um die WERTE anzuzeigen (Skills_ID + Skills_Name) für jedes Kontrollkästchen, damit der Benutzer hinzufügen können, die Ihren Fähigkeiten, aber ich bin nicht in der Lage, füllen Sie diese Kontrollkästchen mit der default-Wert markiert "geprüft" für diese Fähigkeiten bereits in der Datenbank.
Einen Karton voller karma wer kann mir helfen, heute Abend ins Bett. 🙂
Hier ist mein code:
function isChecked() {
$query = "select * FROM individual_skills WHERE Ind_ID = ".$_SESSION['Ind_ID']. "";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
//If value exists, set $valueExitsInDB to true
if (isset($row['Skills_ID'])) {
$valueExitsInDB="TRUE";
} else {
$valueExitsInDB="FALSE";
}
//if the value does exist, then we are writing 'checked' in the checkbox
if ($valueExitsInDB) {
return "checked";
} else {
return "";
}
} //END WHILE LOOP
} //END FUNCTION
Und mein code innerhalb der checkbox Schleife sieht wie folgt aus (keine Notwendigkeit zu belasten Sie mit dem Lesen der Schleife, wie kann ich sicher ziehen Sie die checkbox-Werte zum Ausgang-nur nicht der default-Wert):
echo "<input type='checkbox' name='skills[]' value='$skill_ID' checked='isChecked()'>". $skillName ."";
So, Sie sehen, ich bin dem Aufruf der Funktion mit: isChecked().
Alle, und alle helfen, sehr geschätzt.
- Sollten Sie nicht vorbei
$skill_ID
auf Ihre Funktion und überprüfung, dass Sie in Ihrer Abfrage? Besser noch, wenn Sie bereits eine Abfrage zum abrufen der Fähigkeiten aus der Datenbank, warum ziehen Sie nicht die checked-Wert in der gleichen Abfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Probleme mit Ihrem code, vorausgesetzt, ich verstehe, was Sie versuchen zu tun:
Sind Sie nicht eigentlich Aufruf der Funktion
isChecked()
als Sie glauben; es ist einfach die string -"isChecked()"
wird zur Ausgabe Hinzugefügt. Wenn Sie überprüft die resultierende HTML-würden Sie bemerken, dass dieser. Die Zeile sollte lauten:Als Sie bemerkt, oben, Sie sollte passieren die skill-ID, um die
isChecked()
Funktion. Sie sollten dann überprüfen Sie diese Zeile in der Abfrage nicht *ob es eineSkills_ID
legen Sie in der Abfrage zurückgegeben. Andernfalls prüfen Sie, ob alle Fähigkeit definiert ist, für das Individuum! Damit Sie Ihre Funktion sollte nun wie folgt lauten:Ein paar Randnotizen:
Bin ich wieder entweder wahr oder falsch Wert aus der Funktion. Dies steht im Einklang mit der Benennung "ist..." die Rückkehr "ja oder Nein". Der Anrufer (die
echo
- Anweisung) kann dann entscheiden, was mit den zurückgegebenen Wert.Hast du wahrscheinlich nicht zu schlagen, die Datenbank 1000 mal wie Sie das jetzt tun. Wenn Sie Ihre erste Abfrage um eine
isChecked
Spalte, die Sie nicht brauchen, die Funktion und die zusätzlichen Abfragen in den ersten Platz.Es sollte etwas wie folgt Aussehen.
Methode 1
Methode 2
können Sie nur versuchen
Erklärung
Methode 1
sollte ein anderes Attribut, anstatt ihn in den Wert
Methode 2
Auch addding nur
checked
würde den trick für Sie zu.Beratung
Anstatt in einem Datenbank-Aufruf für jedes Kontrollkästchen, um ein array enthält alle Daten für Sie. Versuchen muti-dimensionales array.
isChecked()
und nicht die Funktion aufrufen. (Es war nie Teil dervalue
- Attribut.)Versuchen, diese
ich denke ,Ihr
error(all checked checkboxes)
ist, weil der isset,statt
isset($row['Skills_ID'])
verwenden!empty($row['Skills_ID'])
oder!is_null($row['Skills_ID'])
denn wenn das Feld null ist, dann auch wird es geben, Sie wahr,hier sehen link