Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Multiple Rows Einträge von checkbox values

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Multiple Rows Einträge von checkbox values

    Hallo alle zusammen stehe völlig an und wäre froh um jede Hilfe.

    Ich habe ein Fromular mit checkboxen
    Code:
    <input type="checkbox" name="beruf[]" value="7" />Alle Berufe<br />
              <input type="checkbox" name="beruf[]" value="1" />Technische Berufe<br />
              <input type="checkbox" name="beruf[]" value="3" />Bau<br />
              <input type="checkbox" name="beruf[]" value="4" />Verkauf<br />
              <input type="checkbox" name="beruf[]" value="2" />Kaufm&auml;nnische Berufe<br />
              <input type="checkbox" name="beruf[]" value="5" />Kader<br />
              <input type="checkbox" name="beruf[]" value="6" />Informatik<br />
    Diese sollen nun in die Datenbank geschrieben werden, und zwar so dass für jede gecheckte checkbox ein neuer Eintrag geschrieben wird.

    PHP-Code:
    $insert_str2  "INSERT INTO stelle_beruf (stelleId, berufId) VALUES ($stelleId,3),($stelleId,4)";
    $mysql mysql_query($insert_str2); 
    Die stelleId bleibt dabei immer dieselbe. Aber die Ziffer nach dem , soll eben das jeweilige value der checkbox haben. Wie könnte ich denn dynamisch diese VALUES generieren?

    Danke für euere Hilfe, Rilana

  • #2
    Mit einer Schleife.

    Kommentar


    • #3
      Ich versteh deine Frage nicht ganz. Wenn du das Formular absendest, hast du ja automatisch ein Array $_POST['beruf']. Dann könntest du den Teilstring für den Query auf 100 verschiedene Arten erzeugen. z.B.:
      PHP-Code:
      $values "($stelleId,".implode("),($stelleId,"$_POST['beruf']).")"
      Natürlich musst du aufpassen, dass du $stelleId und $_POST['beruf'] vorher escaped hast, damit da keine SQL Injection möglich ist.

      Ich hoffe, ich konnte dir ein bisschen helfen

      Kommentar


      • #4
        Hallo danke für eure Antworten... habs nun so gelöst:

        PHP-Code:
        if(isset($_POST['submit'])  && count($_POST['beruf'])){
        foreach(
        $_POST['beruf'] as $b)
        $sql "INSERT INTO stelle_beruf (stelleID, berufID) VALUES ";
        $c count($_POST['beruf']);
        if(
        $c 1){
          
        $i=1;
          foreach(
        $_POST['beruf'] as $b){
          
        $comma = ($i $c) ? ',' '';//add a coma to the end, but not the last one
          
        $sql .= "($stelleID,$b)$comma";
          
        $i++;
          }
          
        $sql .= '';
        }else{
          
        $sql .= "($stelleID$b)";
        }
        echo 
        $sql;
        $mysql mysql_query($sql);

        Es funktioniert, aber ist mega kompliziert, es gäbe sicherlich noch ne einfachere Variante....

        Kommentar


        • #5
          dynamische checkboxen

          Habe gleich noch ein neues Problem. Es geht nun darum die checkboxen zu editieren. Dabei wäre es schön wenn ich eine Abfrage in die Datenbank machen könnte und es mir die checkboxen welche values in der Datenbank haben gleich auf checked stellt. Geht das überhaupt?

          PHP-Code:
          $stelleID $_GET["stelleID"];
          $sqlR "SELECT * FROM stelle_region WHERE stelleID=$stelleID";
          $resultR mysql_query($sqlR,$con);        

          while(
          $row mysql_fetch_array($resultR)) {
              
          $stelleID=($row['stelleID']);
              echo 
          $row['regionID'];
              echo 
          "<br><br>";

          Gibt 6 5 aus. Das heisst unter dem Eintrag mit der stelleID 146 gibt es zwei stelle_region Einträge, 6 und 5.

          Es wäre perfekt wenn gemäss diesen Ausgaben meine checkboxen so aussehen würden
          Code:
          <input type="checkbox" name="region[]" value="2" />Rechtes Z&uuml;richseeufer<br />
          <input name="region[]" type="checkbox" value="6" checked="checked" />Graub&uuml;nden<br />
          <input name="region[]" type="checkbox" value="5" checked="checked" />Z&uuml;rich<br />
          <input type="checkbox" name="region[]" value="1" />Linkes Z&uuml;richseeufer<br />
          <input type="checkbox" name="region[]" value="3" />Glarus<br />
          <input type="checkbox" name="region[]" value="4" />Z&uuml;rich Oberland<br />
          Also value 5 und 6 sind checked.... Wie bringe ich dass dynamisch hin?

          Danke für euer Feedback, Rilana

          Kommentar


          • #6
            Zitat von Rilana Beitrag anzeigen
            Es funktioniert, aber ist mega kompliziert, es gäbe sicherlich noch ne einfachere Variante....
            Nja, wieso nicht einfach wie ich geschrieben habe:
            PHP-Code:
             $values "($stelleId,".implode("),($stelleId,"$_POST['beruf']).")"
            btw: Die Daten sind immer noch nicht escaped... eine SQL Injection ist weiterhin möglich!

            Kommentar


            • #7
              Danke aber hab's so nicht zum laufen gebracht...

              Kommentar


              • #8
                Hier selfhtml für die checkboxen. Schau dir mal dein array mit print_r an und laß mal nachm implode die variable ausgeben.

                Kommentar


                • #9
                  Habe es nun geschafft die checkboxen je nach value in der Datenbank, in der Form output gecheckt erscheinen zu lassen. Doch irgendwie hab ich ein do while problem. Denn wenn ich zum Beispiel 3 Einträge habe dann zeigt es mir alles dreifach an!



                  Mein code sieht so aus:
                  PHP-Code:
                  $stelleID $_GET["stelleID"];

                  $sqlR "SELECT * FROM stelle_region WHERE stelleID=$stelleID";
                  $resultR mysql_query($sqlR,$con);   

                  while(
                  $row mysql_fetch_array($resultR)) {
                  $region=($row['regionID']);    
                  if(
                  $region == "1")
                      {
                       echo 
                  "<input type='checkbox' name='region[]' value='1' echo'CHECKED'/>Linkes Zürichseeufer<br />";    
                      } else {
                       echo 
                  "<input type='checkbox' name='region[]' value='1'/>Linkes Zürichseeufer<br />";    
                      }

                  if(
                  $region == "2")
                      {
                      echo 
                  "<input type='checkbox' name='region[]' value='2' echo'CHECKED'/>Rechtes Zürichseeufer<br />";    
                      } else {
                      echo 
                  "<input type='checkbox' name='region[]' value='2'/>Rechtes Zürichseeufer<br />";
                      } 
                       
                  if(
                  $region == "3")
                      {
                      echo 
                  "<input type='checkbox' name='region[]' value='3' echo'CHECKED'/>Glarus<br />";
                      } else {
                      echo 
                  "<input type='checkbox' name='region[]' value='3'/>Glarus<br />";
                      } 
                  Ich habe es schon mit break und continue versucht, aber irgendwie geht das auch nicht... wie bring ich das nur hin dass es richtig kommt? Danke für eure Hilfe, Rilana

                  Kommentar


                  • #10
                    vermutlich eher ein Problem mit Deiner Abfragemenge?

                    Kommentar


                    • #11
                      und wie beheb ich dass?

                      Kommentar


                      • #12
                        Was willst Du jetzt hören? Ich kenne Deine Datenbankstruktur nicht.

                        Kommentar


                        • #13
                          Es kann nicht an der Struktur liegen, es muss an der Abfrage liegen... irgendwie find ich ist auch eine gewisse Logic dahinter. Denn wenn ich 2 Einträge mit der gleichen ID habe, dann gibt mir der do while das ganze doppelt aus, wenn ich drei Einträge habe dann gibt es das ganze dreifach aus. Weis auch nicht, dachte dass sei ein Anfänger-Fehler den man mit der richtigen Schleife behen kann, ich hoffte du könntest mir sagen was ich falsch mache.

                          Kommentar


                          • #14
                            Wieso gibts denn mehrere IDs für die selben Daten? Ist doch unlogisch. Poste mal bitte Deine Struktur. Die Orte und wie Du die den Angaboten (oder was auch immer) zuordnest.

                            Kommentar


                            • #15
                              Table stelle: stelleID
                              Table region: regionID, stelleID
                              Table stelle_region: regionName, regionID


                              in stelle_region weise ich die jeweilige stelleID der regionID zu. Dies ermöglicht mehrere Eingaben der Regionen pro Stelle.

                              Kommentar

                              Lädt...
                              X