Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Tabelle abhängig von Dropdown Value erzeugen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Tabelle abhängig von Dropdown Value erzeugen

    Hallo zusammen,

    ich wende mich an Euch, da ich einfach nicht auf die richtige Lösung komme.
    Da ich blutiger Anfänger bin, hoffe ich auf Unterstützung von Eurer
    Seite.
    Ich habe MySQl und PHP im Einsatz. In der DB habe ich eine Tabelle mit
    folgendem Aufbau:

    --------------------------------------------------------------------------|
    Spalte1 | Spalte2 | Spalte3 | spalte4 |
    --------------------------------------------------------------------------|
    Tag1 | x | y | z |
    --------------------------------------------------------------------------|
    Tag1 | m | o | p |
    --------------------------------------------------------------------------|
    Tag2 | 3 | 2 | 1 |
    --------------------------------------------------------------------------|
    Tag2 | k | l | m |
    --------------------------------------------------------------------------|
    Tagx sind hierbei im Datumsformat.

    Nun möchte ich eine Tabelle auf der WebSite bauen, die
    per Select DISTINCT ein Dropdown aufbaut.

    Nun meine zwei Fragen:
    1. Wie bekomme ich in Abhängigkeit vom Wert im Select des
    Dropdown eine tabellarische Darstellung aller Werte der
    Reihe z.B. Tag2 zeige alle Spalten 2-4

    2. Wie schaffe ich es, dass das Dropdown den Focus auf einen bestimmten
    Wert legt? Das geht mit <option value="wert">, aber wie kann ich dazu
    den Wert aus der Db nehmen. ICh kann mir den Wert aus der DB mit einer Query
    holen (select * from Spalte1 where spalte1 <= curdate();

    Da ich keine Idee habe, wie ich das programmiere, bin ich für
    jeden Hinweis dankbar.

    Grüße und schöne Weihnachtszeit

  • #2
    Bei mir gehts so
    Mysql Tablle:

    ID | Name
    1 | Ich
    2 | Du
    3 | HansPeter
    usw.

    per select alles abrufen und durch meine funktion schieben
    PHP-Code:
    <php
    $meinID = 1;
    while ($row = mysqli_fetch_assoc ($res)) {
        $rows[$res['id']] = $row['name'];
    }
    ?>
    <select name="select" id="select">
    <?=dropdown ($rows$meinID);?> 
    </select>
    ?>
    PHP-Code:
    function dropdown ($give_fields,$myid NULL) {
            
    $ret NULL;
            foreach (
    $give_fields as $key => $val) {
                
    $ret .= "<option value='".$key."' ".($myid == $key?"selected":NULL).">".$val."</option>";
            }
            return 
    $ret;
        } 
    EDIT.:
    Hab dich falsch verstanden

    Gib mal ein Konkretes Beispiel

    Kommentar


    • #3
      Hallo zusammen,
      zunächst mal ein frohes Neues Hoffe ihr seid gut rüber gekommen und hattet einen schönen Abend

      Ich versuchs nochmal anders zu beschreiben was ich eigentlich möchte:
      In einer Tabelle sind Einträge mit etlichen Spalten. Eine Spalte ist eine Datumsspalte. In einem Dropdown möchte ich die Datumsspalte nun als <select> auswählbar machen und abhängig von der Auswahl dann sofort auf der selben Seite mittels einer weiteren SQL Query tabellarisch die Werte bezugnehmend auf das selektierte Datum anzeigen lassen. Das Dropdown habe ich nun fertig. Habe mit <select distinct> sogar doppelte Datumseinträge gefiltert. Also Dropdown ist fertig. Nun geht es an die Ausgabe.

      Dazu habe ich folgendes Gerüst, was aber nicht funktioniert. Die Idee: Den Wert aus <select> speichern und damit eine neue SQL ABfrage starten:
      PHP-Code:
      if(isset($_POST['submit'])) {
      ?>
      <form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
      <select name='match'>
      <?php
      while($fetch mysql_fetch_assoc($query)) { 
      echo <
      option>$fetch['matchDate']</option>';
      }
      ?>
      </select>
      <input type='
      submit' value='Senden' /> 
      </form>
      <?php
      }
      else {
      $_query = {$_POST['
      match']};
      echo $_query;
      }
      ?>
      Als Ergebnis macht er immer eine neue Seite auf, wo aber leider das Ergebnis nicht dargestellt wird
      Wenn ich anstatt <?php echo $_SERVER['PHP_SELF']; ?> dort eine gültige PHP Datei eintrage wird der Wert aus <select> übergeben und die SQL Abfrage richtig gestartet.

      Ich finde meinen Fehler nicht bzw ich verstehe den Code dazu einfach nicht.

      Lese dazu gerade Bücher (u.A. eines von Florence M.), aber alle Beispiele dazu funzen net

      Ideen sind herzlich willkomen.

      Grüße
      SHE
      PS: Deinen Code ob checke ich gleich mal.

      Kommentar


      • #4
        Zitat von shermano Beitrag anzeigen
        Als Ergebnis macht er immer eine neue Seite auf, wo aber leider das Ergebnis nicht dargestellt wird
        Das halte ich für ein Gerücht, dein Code wird einen Syntaxfehler liefern. Bitte poste deinen Code mit dem du testest, nicht irgendwas anderes.

        Wenn ich anstatt <?php echo $_SERVER['PHP_SELF']; ?> dort eine gültige PHP Datei eintrage wird der Wert aus <select> übergeben und die SQL Abfrage richtig gestartet.
        Wenn die gleiche Datei wieder aufgerufen werden soll kannst du dass action-Attribut auch leer- bzw. weglassen (je nach HTML-Version).

        Kommentar


        • #5
          bei dem option tag fehlt das Value und wie TK sagt Syntax Error an mehreren stellen

          <form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>

          action kann auch leer bleiben dann schickt sich das Forumular an sich selbst.

          es gibt auch eine kurze schreibweise
          anstannt
          PHP-Code:
          <?php echo $_SERVER['PHP_SELF']; ?>
          so:
          PHP-Code:
          <?=$_SERVER['PHP_SELF']; ?>
          sieht schöner aus

          Kommentar


          • #6
            Zitat von Kiboman Beitrag anzeigen
            bei dem option tag fehlt das Value
            Nein, das value-Attribut ist optional (wenn es fehlt wird alles zwischen <option> und </option> als Wert verschickt).

            action kann auch leer bleiben dann schickt sich das Forumular an sich selbst.
            Sag ich doch Bei HTML5 darf das action-Attribut allerdings nicht leer sein (es darf aber fehlen).

            es gibt auch eine kurze schreibweise
            anstannt
            PHP-Code:
            <?php echo $_SERVER['PHP_SELF']; ?>
            so:
            PHP-Code:
            <?=$_SERVER['PHP_SELF']; ?>
            sieht schöner aus
            Ansichtssache - allerdings ist es genauso potentielle gefährlich da der Kontextwechsel nicht beachtet wurde.

            Kommentar


            • #7
              Hallo zusammen,

              ich werde Eure Hinweise nachher mal testen und dann berichten. Ich habe nicht den kompletten Code hochgeladen, damit es übersichtlicher wird. Es sollte nur grob die Struktur darstellen. Mea Culpa. Wenn es hilft, lege ich auch den Rest noch hier hin.

              Was meinst Du mit Kontextwechsel?
              Nur nochmal zur Erklärung: Ich bin bluitiger Anfänger in diesem Thema und abeite mich gerade dort rein. Ich entwickle im "Keller" auf einer VM und teste dort und wenn es mir gefällt, kommt es auf die WebSite:
              Mein Plan beim Lernen: Erst mal die Funktion, dann sowas wie Prepared Statements, SQL Injections, etc danach. Wie oben geschrieben: Ich lese gerade einige Bücher zum Thema. Einiges verstehe ich nicht, aber es wird

              Kommentar


              • #8
                Zitat von shermano Beitrag anzeigen
                Was meinst Du mit Kontextwechsel?
                http://php-de.github.io/jumpto/kontextwechsel/

                Und die anderen "Konsorten": http://php-de.github.io/#security

                LG
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Die Seite ist sehr unvollständig, besser wäre es gleich auf http://wiki.selfhtml.org/wiki/PHP/An...Kontextwechsel zu verweisen.

                  Kommentar


                  • #10
                    Zitat von tk1234 Beitrag anzeigen
                    ... besser wäre es gleich auf http://wiki.selfhtml.org/wiki/PHP/An...Kontextwechsel zu verweisen.
                    Ist am Ende der Seite verlinkt. Eine 1:! Kopie ist ja auch unnötig, daher gehe ich davon aus das der Überblick so beabsichtigt ist.
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Hallo zusammen,

                      egal was ich mache, ich bekomme es nicht hin. Bei der "action" bleibt es zumindest auf der Seite, wo es angezeigt werden soll.

                      Hier mal mein vollständiger Code.
                      1.
                      Code:
                      <?php
                      require_once('db_daten.php');
                      $_table	  = "table";
                      $_sql_list     = "SELECT DISTINCT `matchDate` FROM `$_table`";
                      $_list     = mysql_query($_sql_list)  OR die(mysql_error());
                      ?>
                      <form action="" method='post'>
                      <select name='match'>
                      <?php
                         while($_fetch_list = mysql_fetch_assoc($_list)) { 
                      	echo '<option>' . date('d.m.Y', strtotime($_fetch_list['matchDate'])) . '</option>';
                         }
                      ?>
                      </select>
                      <input type='submit' value='Senden' /> 
                      </form>
                      <?php
                         if(isset($_POST['submit'])) {
                      	$_match = isset($_POST['match']) ? $_POST['match'] : '';
                      	echo $_match;
                         }
                      ?>
                      Evtl ist es noch hilfreich zu wissen, dass das Gebilde in einer Wordpress Umgebung arbeitet.

                      Grüße und Danke
                      SHE

                      Kommentar


                      • #12
                        Zitat von shermano Beitrag anzeigen
                        echo '<option>' . date('d.m.Y', strtotime($_fetch_list['matchDate'])) . '</option>';
                        Das Datum kannst du auch direkt formatiert aus der Datenbank holen.

                        if(isset($_POST['submit'])) {
                        Es gibt kein Formularelement mit dem Namen »submit«, die Bedingung wird also nie wahr.

                        Kommentar


                        • #13
                          Erfolg, Erfolg. Ich hatte das so aus dem Buch abgeschrieben und mich dazu auch schon gewundert

                          MERCI MERCI.

                          Womit bekommt man das Datum in deutschem Format raus?

                          Kommentar


                          • #14
                            Zitat von shermano Beitrag anzeigen
                            Erfolg, Erfolg. Ich hatte das so aus dem Buch abgeschrieben und mich dazu auch schon gewundert
                            Deswegen sollte man auch nicht einfach nur blind abschreiben sondern auch verstehen was man da macht.

                            Zitat von shermano Beitrag anzeigen
                            Womit bekommt man das Datum in deutschem Format raus?
                            Mit der Funktion DATE_FORMAT() kannst du ein Datum beliebig formatieren.

                            Kommentar


                            • #15
                              Danke. Damit schließe ich den Thread
                              PS: DATE_FORMAT() werde ich dann benutzen.

                              Kommentar

                              Lädt...
                              X