checked="checked"

CreativPur

Erfahrenes Mitglied
Guten Morgen,
Ich habe mehrere Checkboxen, wo ich auf einem Änderungs-Formular Auswahlboxen als checked ausgeben möchte.
Die Daten kommen aus meiner SQL-Datenbank und haben zwei Tabellen..
Zeugnisse und bewerbungen.
In diesem Fall sind es zwei Zeugnisse die ausgegeben werden sollen..
Bildschirmfoto 2023-10-29 um 07.51.34.png
Mein Script lautet ....
Javascript:
<script>
function check_all(name, el) {
var box = el.form.elements[name];
if (!box.length) box.checked = el.checked; else
for (var i = 0; i < box.length; i++)
box[i].checked = el.checked;
}
</script>

Die Umsetzung in PHP lautet ..
PHP:
<?php
$Bewerbungs_id = $_POST['1'];
$sql = "SELECT * FROM bewerbungen WHERE Bewerbungs_id = '$Bewerbungs_id'";
$zeugn_ausgabe = $pdo->query($sql)->fetch();
                           
$ges_zeugnis = $zeugn_ausgabe['bw_zeugnisse'];
$sql = "SELECT * FROM Zeugnisse WHERE id IN ($ges_zeugnis)";
foreach ($pdo->query($sql) as $Zeugnisse) {
    echo $Zeugnisse['id'].'<br />';
}
                           
echo '<br /><br />';

$test = $Zeugnisse['id'];
$sql = "SELECT * FROM Zeugnisse WHERE Bewerber_id = '$Bewerber_id' ORDER BY pos ASC";
foreach ($pdo->query($sql) as $bw_zeugnisse) {
?>]

<label>
<input type="checkbox" name="bw_zeugnisse[]" value="<?php echo $bw_zeugnisse['zeugnisse_firma'] ?>"<?php if(!empty($bw_zeugnisse['id']==$Zeugnisse['id'])){ ?> checked="checked" <?php } ?>>&nbsp;&nbsp;<?php echo $bw_zeugnisse['zeugnisse_firma'] ?>
</label>
<br />

<?php } ?>

Leider wird nur das letzte Zeugnis der Tabelle auf checked gesetzt.
sie hier ..


Bildschirmfoto 2023-10-29 um 08.00.30.png

Wäre schön, wenn mir jemand helfen könnte..
 
Wie oft hast du das schon als Antwort bekommen???

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Und wie oft hast du das schon als Antwort bekommen:

16.14. Warum soll ich nicht SELECT * schreiben?
FAQ der Newsgroup de.comp.lang.php - 16.14. Warum soll ich nicht SELECT * schreiben?

Außerdem hast du Fehler im HTML-Code, siehe HTML label tag
 
Ich kapier leider nicht mal genau, was du erreichen möchtest. Das kann aber durchaus auch an mir liegen. Irgendwas mit Checkboxen die je nach Eintrag in einem Tabellenfeld checked oder eben nicht sein sollen. Soweit mal richtig?

Was ich aber zu sehen glaube: $Zeugnisse['id'] das du in der Schleife mit $bw_zeugnisse['id'] vergleichst, um die Checkbox auf checked zu setzen oder nicht, bleibt m. E. n. immer auf demselben Wert. Von daher musst du auch keine zweite angehakte Checkbox erwarten.
 
Was ich nicht verstehe, ist wieso das so umständlich gemacht wird.
So wie ich das lese:
Es gibt ne Tabelle "bewerbungen". Diese hat u.a. ein Feld "bw_zeugnisse"
Dann gibt es ne Tabelle "Zeugnisse", welche du in deinem zweiten Query per "ID=bw_zeugnisse" filterst
(und habe ich schon mal erwähnt, dass ich den IN-Operator leiden kann wie Bauchweh)

Klingt für mich nach nem simplen LEFT JOIN von "Zeugnisse" zu "bewerbungen".
Da wo der Primär-Schlüssel aus Bewerbungen nicht NULL ist, Haken in dein Checkbox, wo NULL, da kein Haken.
Fertig

EDIT: Und am Ende sehe ich noch, dass "Zeugnisse" einen Fremdschlüssel namens "Bewerber_ID" hat....
Na toll...
Ist ja mal ein schöner Kreisverkehr
 

Neue Beiträge

Zurück