Mit einer Checkbox weitere Werte speichern

Schon klar. Es war ja nur ein gut gemeinter Rat, dass 2 Zeugnisse nicht den gleichen Namen besitzen dürfen. Dabei fällt mir auf:

Ich sehe auch gerade in deinem Code, dass du den Firmennamen in den Checkboxen anzeigst. Wenn man aber von einer Firma mehrere Zeugnisse hat, weiß ich nicht mehr, welches Zeugnis sich hinter der Checkbox versteckt. Vielleicht solltest du den Zeugnissnamen ebenfalls mit Ausweisen. Dann kennt der Endnutzer schneller, was er anklicken soll :)

Das dritte Inputfeld ist der Name vom Bild (Zeugnis), wobei am Anfang die User_id steht und am Ende, was man leider nicht sieht, der Zeugnisname, der immer einzigartig ist und nur einmal vorkommt.

Der Name des Zeugnis ist unique? Oder kann ich mehrere "Abschlusszeugnisse" besitzen (von verschiedenen Firmen)? Ich hatte mal einen Kollegen, der in 15 Jahren insgesamt 4mal in einer Firma gearbeitet hat und er hat natürlich auch jedes mal ein Abschlusszeugnis bekommen.

Vielleicht noch einen anderen Tipp. Warum machst du anstatt einer Checkbox nicht eine Tabelle (Hab sowas schon gesehen). In der ersten Spalte kommt die Checkbox, dann die Spalten Zeugnisname, Firma, andere Meta-Daten (erstellt am, Datum des Zeugnis, etc) und Link zum anschauen. Das Ganze könnte man auch Sortier- und Filterbar gestalten.

Bitte sieh das nicht als Kritik von mir an, sondern als gut gemeinte Ratschläge. Der Teufel steckt im Detail und bin selber schon bei solchen Kleinigkeiten auf die Schnautze geflogen. :)
 
dennoch verstehe ich nicht genau, wie ich die Indizes explizit definieren soll.
In dem Code in #7 hast Du es schon richtig gemacht. Das Problem ist nur, dass Du auch die Auswertung ein wenig ändern musst, weil, wie ich schon geschrieben habe, in $_POST['Zeugnis_Firma'] nur die Elemente drin stehen, die gecheckt sind. So sollte es funktionieren:

Code:
  for ($i = 0; $i < count($_POST['Bewerbungen_id']); $i++) {
      if (isset($_POST['Zeugnis_Firma'][$i])) {
          $Bewerbungen_id = $_POST['Bewerbungen_id'][$i];
          $Zeugnis_Firma = $_POST['Zeugnis_Firma'][$i];
          $pos = $_POST['pos'][$i];
          $img = $_POST['img'][$i];
          $statement = $pdo->prepare("INSERT INTO ausgewaehlte_zeugnisse (Bewerbungen_id,Zeugnis_Firma,pos,img) VALUES (:Bewerbungen_id,:Zeugnis_Firma,:pos,:img)");
          $statement->execute(array('Bewerbungen_id' => $Bewerbungen_id, 'Zeugnis_Firma' => $Zeugnis_Firma, 'pos' => $pos, 'img' => $img));
  }
Ungetestet, aber ich denke, so sollte es funktionieren.
 
Zuletzt bearbeitet:
Ich habe es jetzt so...

PHP:
if(isset($_GET['mail_versenden'])) {
     $error = false;  
     for ($i = 0; $i < count($_POST['Bewerbungen_id']); $i++) {
      if (isset($_POST['Zeugnis_Firma'])) {
          $Bewerbungen_id = $_POST['Bewerbungen_id'][$i];
          $Zeugnis_Firma = $_POST['Zeugnis_Firma'][$i];
          $pos = $_POST['pos'][$i];
          $img = $_POST['img'][$i];
          $statement = $pdo->prepare("INSERT INTO ausgewaehlte_zeugnisse (Bewerbungen_id,Zeugnis_Firma,pos,img) VALUES (:Bewerbungen_id,:Zeugnis_Firma,:pos,:img)");
          $statement->execute(array('Bewerbungen_id' => $Bewerbungen_id, 'Zeugnis_Firma' => $Zeugnis_Firma, 'pos' => $pos, 'img' => $img));
      }
   }
}

PHP:
<?php
$sql = "SELECT zeugnisse_firma, pos, img FROM Lebenslauf_Zeugnisse WHERE Bewerber_id = $Bewerber_id ORDER BY pos DESC";
foreach($pdo->query($sql) as $row){
$i = 0;  
echo '
<input type="checkbox"  name="Zeugnis_Firma['.$i.']" value="'.$row['zeugnisse_firma'].'"> '.$row['zeugnisse_firma'].'<br />
<input class="form-control" type="" name="Bewerbungen_id['.$i.']" value="'.$Bewerbung_id.'">
<input class="form-control" type="" name="pos['.$i.']" value="'.$row['pos'].'">
<input class="form-control" type="" name="img['.$i.']" value="'.$row['img'].'">';
$i++;
}
?>

Wenn ich jetzt 2 aktiviere, bekomme ich nur einen gespeichert.
pos und img werden von dem letzten Datensatz übernommen (Fa. Textilhaus Voepel)
 
Tut mir Leid, siehe mein Posting #14, da war noch ein Fehler. So sollte es richtig sein:
Code:
if (isset($_POST['Zeugnis_Firma'][$i])) {
 
Da sehe ich noch einen Fehler, hier:
Code:
foreach($pdo->query($sql) as $row){
    $i = 0;   
    echo '
    <input type="checkbox"  name="Zeugnis_Firma['.$i.']" value="'.$row['zeugnisse_firma'].'">                  '.$row['zeugnisse_firma'].'<br />
    <input class="form-control" type="" name="Bewerbungen_id['.$i.']" value="'.$Bewerbung_id.'">
    <input class="form-control" type="" name="pos['.$i.']" value="'.$row['pos'].'">
    <input class="form-control" type="" name="img['.$i.']" value="'.$row['img'].'">';
    $i++;
}
Das $i muss vor der Schleife initialisiert werden:
Code:
$i = 0;   
foreach($pdo->query($sql) as $row){
    echo '
    <input type="checkbox"  name="Zeugnis_Firma['.$i.']" value="'.$row['zeugnisse_firma'].'"> '.$row['zeugnisse_firma'].'<br />
    <input class="form-control" type="" name="Bewerbungen_id['.$i.']" value="'.$Bewerbung_id.'">
    <input class="form-control" type="" name="pos['.$i.']" value="'.$row['pos'].'">
    <input class="form-control" type="" name="img['.$i.']" value="'.$row['img'].'">';
    $i++;
}
 
Zurück