Ankündigung

Einklappen
Keine Ankündigung bisher.

DB UPDATE mit html select option

Einklappen

Neue Werbung 2019

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

  • DB UPDATE mit html select option

    Hallo Nerds,

    ich hock grade an meinen ersten größeren PHP-Projekt, google glüht schon aber ich komme trotzdem nicht weiter. Ich hoffe ihr könnt mir mit einem Tipp weiter helfen.

    Folgendes Problem:
    Ich habe ein scandir script gebastelt damit mir ein Ordnerinhalt(Bilder) vom Server ausgegeben wird. Das funktioniert soweit.
    Gleichzeitig wird in der Schleife ein Dropdownmenu erzeugt mit 4 festen Optionsfeldern, auch das funktioniert.

    Wie schaffe ich es nun, dass über onchange der Variableninhalt(value) je option-Zeile in eine entsprechende Datenbankspalte eingetragen wird?

    Die Spalte entspricht dem name="imgX"

    Auf einen zusätzlichen submit Button würde ich gerne verzichten.

    PHP-Code:
    <html>
    <body>
    <h2><center>serverinhalt</center></h2>
    <ul id="servercontent">
    <?php
    $ordner 
    "upload/files"
    $allebilder scandir($ordner);
        foreach (
    $allebilder as $bild) {
            
    $bildinfo pathinfo($ordner."/".$bild);
            if (
    $bild != "." && $bild != ".."  && $bild != "_notes" && $bildinfo['basename'] != "Thumbs.db") { 
     
    ?> 
            <li><img src="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>"/>
    <select onchange="location.reload()">
      <option value="void"></option>}
      <option value="<?php $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img1">Bild zu Preis 1</option>
      <option value="<?php $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img2">Bild zu Preis 2</option>
      <option value="<?php $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img3">Bild zu Preis 3</option>
      <option value="<?php $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img4">Bild zu Preis 4</option>
    </select>
            </li>
    <?php
     
    };
     }; 
    ?> 
    </ul>
    <!-- end content -->
    </section>
    </body>
    </html>
    Bildschirmfoto 2019-01-06 um 14.42.47.png

  • #2
    Das:

    PHP-Code:
          <option value="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>"<?php
    if(isset($bildinfo)) {
        
    $error false;
        
    $img1 $_POST['value'];

        if(!
    $error) {
            
    $statement $pdo->prepare("UPDATE images SET img1 = :img1");
            
    $statement->execute(array('img1' => $bildinfo['dirname']."/".$bildinfo['basename']));
        }
        }
    ?>" name="img1" method="post">Bild zu Angebot 1</option>
    Und das hab ich schon probiert. Funktioniert beides nicht.

    PHP-Code:
          <option value="<?php $statement $pdo->prepare("UPDATE images SET img1 = :img1");
            
    $statement->execute(array('img1' => $bildinfo['dirname']."/".$bildinfo['basename']));?>" name="img1" method="post">Bild zu Angebot 1</option>

    Kommentar


    • #3
      Du hast 2 Varianten:

      1. Du arbeitest mit Javascript (Stichwort AJAX). Du sendest beim Betätigen des Selects einen Request an ein anderes php-Script welches dann die Änderung durchführt.
      2. Du arbeitest mit einem (oder mehreren) Submit-Button und einem (oder mehreren) Formular(en)

      Kommentar


      • #4
        Zwischendrin beim rumprobieren hat es mal funktioniert, hat mir aber die Ausgabeschleife für die Bilder unterbrochen. Den Code bekomme ich jedoch leider nicht mehr repliziert.

        Kommentar


        • #5
          Damit etwas übertragen wird brauchst du ein Formular.
          Die zu übertragenden Parameter sind die Attribute name des Elementes, welches du übertragen willst.
          Siehe auch https://php-de.github.io/jumpto/auswahllisten/
          und
          http://php.net/manual/de/tutorial.forms.php

          Beides fehlt bei dir.
          Ausserdem würde ich in diesen Fall auch ein Absendeknopf (Button) mit einbauen, damit man nicht bei einer versehentlichen Auswahl etwas in die Datenbank einträgt.
          Das Javascript brauchst du dann nicht mehr.

          Du solltest dich auch mit HTML5 und Formularen beschäftigen sowie CSS, weil <center> veraltet ist.
          Kontextwechsel ansehen und beachten.
          Affenformular ist hier auch hilfreich.

          Versuche mal dein Glück.

          Kommentar


          • #6
            Mach ich. Vielen Dank erstemal für eure Antworten. Es wird wohl auf js raus laufen. HTML5 und CSS3 is mir bekannt, ist für die Oberfläche aber nicht relevant.

            Kommentar


            • #7
              Also ich hab das jetzt so gebaut, was auch latent funktioniert.

              PHP-Code:
              <form action="content_upload.php">
                  <select onchange="this.form.submit()" name="upload">
                    <option >Auswahl</option>
                    <option value="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img1" method="post">Bild zu Angebot 1</option>
                    <option value="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img2" method="post">Bild zu Angebot 2</option>
                    <option value="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img3" method="post">Bild zu Angebot 3</option>
                    <option value="<?php echo $bildinfo['dirname']."/".$bildinfo['basename'];?>" name="img4" method="post">Bild zu Angebot 4</option>
                  </select>
              </form>
              PHP-Code:
              <?php
              if(isset($_GET['upload'])) {
                  
              $error false;
                      
              $img $_POST['img1'];
                  
              $dateiinfo $_GET['upload'];

                  if(!
              $error) {
                      
              $statement $pdo->prepare("UPDATE images SET img1 = :img1");
                      
              $result $statement->execute(array('img1' => $dateiinfo));

                      if(
              $result) {
                          die(
              '<meta http-equiv="refresh" content="0; URL=admin.php">');
                      }
                  }
                  }
              ?>

              Allerdings hab ich grade keinen Plan wie ich da noch das NAME Attribut je Option verwurste sodass ich je Auswahl eine andere db Spalte anspreche.

              Habt ihr mir einen Tipp? Vielen Dank


              Kommentar

              Lädt...
              X