Ankündigung

Einklappen
Keine Ankündigung bisher.

eine Spalte aus Datenbanktabelle abfragen

Einklappen

Neue Werbung 2019

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

  • eine Spalte aus Datenbanktabelle abfragen

    Ich versuche (bzw. ich bin gewillt) mir den richtigen Umgang mit php und Datenbankabfragen selber beizubringen. Allerdings begreife ich alles, was ich dazu lese, nur über das Prinzip "learning by doing" und ausprobieren.

    Derzeit erarbeite ich mir ein Script, um aus meiner Datenbank eine Spalte [ort] aus der Tabelle [orte] auszulesen. Diese Daten will ich mir in einem Dropdownfeld anzeigen lassen, um damit dann weiter arbeiten zu können.

    Bis zu dem Punkt bin ich schon gekommen:
    Verbindung zur Datenbank funktioniert
    das Dropdownfeld zeigt mir auch bereits eine Auswahl aus der Tabelle [orte] an

    <select name="sem_ort" id="sem_ort" weight="100">
    <?php echo orteDropdown(); ?>
    </select>

    Mein Problem:
    im Dropdownfeld erscheint der Name aus der Spalte [name] - das ist in der Tabelle die erste Spalte nach der [id] . Ich ahne, dass meine Abfrage nicht vollständig ist. Ich "spiele" für mich das in unterschiedlichen Varianten durch, aber bisher funktionierte leider nichts davon. Kann mir jemand erklären,
    - warum im Dropdown die Liste aus der Spalte [name] erscheint und nicht die z.B. die [id] angezeigt wird? Was ich am ehesten erwartet hätte und
    - wo bringe ich die Abfrage nach der Spalte [ort] unter?



    Code:
    //Veranstaltungsort auslesen
    	$resultat = "SELECT `ort` * FROM `orte` WHERE 1";
    	
    oder
    
     $result = mysql_query('SELECT name FROM orte');
         while ($data = mysql_fetch_assoc($result))
        {
            echo $data['ort'].'
    ';
        } 	 
    
    Ich hoffe, mich einigermaßen verständlich ausgedrückt zu haben. Vielen Dank marwio

  • #2
    Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
    Choosing an API
    Warum man mysql* generell nicht (mehr) nutzen sollte.
    Wie man von mysql* auf PDO umsteigt
    Wissenswertes zum Thema SQL-Injection

    Kommentar


    • #3
      Zitat von rkr Beitrag anzeigen
      Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP
      Du hast das fein gelernt und kannst das auch nachts aufsagen, ganz toll. Aber eine Erklärung für den Fragesteller ist das sicher nicht.

      Code:
      //Veranstaltungsort auslesen
      	$resultat = "SELECT `ort` * FROM `orte` WHERE 1";
      	
      oder
      
       $result = mysql_query('SELECT name FROM orte');
      Das eine ist ein String und das andere ein Funktionsaufruf. Schreibt man anders, klingt anders, ist was anderes.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Zitat von akretschmer Beitrag anzeigen
        Du hast das fein gelernt und kannst das auch nachts aufsagen, ganz toll. Aber eine Erklärung für den Fragesteller ist das sicher nicht.
        Hatte ich auch nicht vor . Btw: http://de.wikipedia.org/wiki/Bookmarklet

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen
          Hatte ich auch nicht vor
          Das ist ja das Problem...
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            ... das ist ein bisschen mein Problem. Ich kopiere und probiere, aber zu verstehen, was ich da tue, fällt mir noch sehr schwer.

            Ich habe mir einen Veranstaltungskalender programmieren lassen, der funktionsfähig, aber nur halbfertig ist. Das heißt, ich kann mir vieles anschauen, spiele mit Kopien rum, lese viel und versuche durch Ausprobieren hinter vieles zu kommen (es dauert bei mir eine Weile, bis ich die Begriffe wirklich begriffen habe (für mich ist das eine andere Welt, die ich mir für meine Anforderungen erschließen will, um unabhängiger zu sein, aber im Tagesgeschäft habe ich andere Aufgaben zu erledigen). Aber ich arbeite daran.
            Mal sehen, ob ich über dieses Forum zu einer Lösung komme - ich will verstehen, was ich tue. Beste Grüße

            Bin nach 22 Uhr wieder am Rechner, muss kurz einkaufen.

            Kommentar


            • #7
              Zitat von marwio Beitrag anzeigen

              PHP-Code:
                <select name="sem_ort" id="sem_ort" weight="100">
                     <?php echo orteDropdown(); ?>
                 </select>

              Code:
               $result = mysql_query('SELECT name FROM orte');
                   while ($data = mysql_fetch_assoc($result))
                  {
                      echo $data['ort'].'
              ';    }
              (übrigens ein .'' sinnlos)

              Weiters.. abgesehen von der DB-Sache.. Was erzeugt orteDropdown()? Wenn das alles ist, erzeugst du kein gültiges/vollständiges HTML, das ist aber nötig das unterm Strich der Browser das korrekt "anzeigen" kann, was du willst.

              Schau dir mal an wie ein korrektes <select ...> aussehen muss. zB hier: http://php-de.github.io/jumpto/auswahllisten/
              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


              • #8
                Zitat von hausl Beitrag anzeigen
                (übrigens ein .'' sinnlos)

                Weiters.. abgesehen von der DB-Sache.. Was erzeugt orteDropdown()? Wenn das alles ist, erzeugst du kein gültiges/vollständiges HTML, das ist aber nötig das unterm Strich der Browser das korrekt "anzeigen" kann, was du willst.

                Schau dir mal an wie ein korrektes <select ...> aussehen muss. zB hier: http://php-de.github.io/jumpto/auswahllisten/

                "Was erzeugt orteDropdown()?" -
                mit diesem einfachen php Code, zeigt er mir eine Auswahl der Einträge an aus der Tabelle, die ich auch ansprechen will, allerdings nicht die Spalte, die ich gerne hätte

                Ich muss dazu sagen, ich habe eine bereits programmierte Seite in meinem Admin benutzt, die ich durch die beschriebene Funktion erweitern will.

                Kommentar


                • #9
                  eine Spalte aus Datenbanktabelle abfragen

                  Zitat von marwio
                  Kann mir jemand erklären, warum im Dropdown die Liste aus der Spalte [name] erscheint und nicht die z.B. die [id] angezeigt wird?
                  (...)
                  mit diesem einfachen php Code, zeigt er mir eine Auswahl der Einträge an aus der Tabelle, die ich auch ansprechen will, allerdings nicht die Spalte, die ich gerne hätte
                  Darum hat hausl ja gefragt was die Funktion überhaupt tut. Schau´ doch in den Code rein und ändere ihn entsprechend ab, um auch die Spalte zu erfassen, die du gerne hättest.

                  Zitat von marwio
                  Ich muss dazu sagen, ich habe eine bereits programmierte Seite in meinem Admin benutzt, die ich durch die beschriebene Funktion erweitern will.
                  Öhm, ja...ich hab mir zwar die anderen Beiträge durchgelesen, weiß aber trotzdem nicht was du damit ausdrücken magst?!
                  Delirius

                  PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                  Kommentar


                  • #10
                    Zitat von Delirius Beitrag anzeigen
                    Darum hat hausl ja gefragt was die Funktion überhaupt tut. Schau´ doch in den Code rein und ändere ihn entsprechend ab, um auch die Spalte zu erfassen, die du gerne hättest.
                    Das würde ich ja gerne. Meine Fragen waren (siehe oben)

                    Zitat von Delirius Beitrag anzeigen
                    Öhm, ja...ich hab mir zwar die anderen Beiträge durchgelesen, weiß aber trotzdem nicht was du damit ausdrücken magst?!
                    Bezieht sich das auf meine Fragen?

                    Kommentar


                    • #11
                      eine Spalte aus Datenbanktabelle abfragen

                      Zitat von marwio
                      Bezieht sich das auf meine Fragen?
                      Das bezieht sich auf den zitierten Satz.
                      Zitat von marwio
                      Das würde ich ja gerne. Meine Fragen waren (siehe oben)
                      Ohne die Funktion gesehen zu haben, kann dir niemand sagen wo was wie geändert werden soll...wie soll das gehen?! Daher nochmal der Hinweis auf die Frage von hausl, was tut die Funktion orteDropdown()?

                      Hier mal ein ganz einfaches Beispiel, wie man ein SELECT befüllen kann.
                      PHP-Code:
                      <?php
                      $db 
                      = new PDO('mysql:host=localhost;dbname=db''dbuser''dbpassword');
                      $sql 'SELECT id,name FROM daten';
                      ?>
                      <select name="daten">
                      <?php
                          
                      foreach( $db->query$sql ) as $daten ){
                              echo 
                      "<option value='" $daten['id'] . "'>" $daten['name'] . "</option>";
                          }
                      ?>
                      </select>
                      Delirius

                      PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                      Kommentar


                      • #12
                        Zitat von Delirius Beitrag anzeigen
                        Ohne die Funktion gesehen zu haben, kann dir niemand sagen wo was wie geändert werden soll...wie soll das gehen?! Daher nochmal der Hinweis auf die Frage von hausl, was tut die Funktion orteDropdown()?
                        Also, wie gesagt, diese Seite hatte mir damals noch der Programmierer gemacht (ich bekomme hier Statistik-Werte angezeigt). Weil ich noch nicht hundertprozentig verstehe, was ich da tue, habe ich mir diese Seite genommen, weil hier die Verbindung zur Datenbank bereits eingetragen ist und ich weiß, dass diese auch funktioniert.
                        Meiner Logik folgend, habe ich gedacht, dass ich nur noch eine Abfrage starten muss und an der von mir gewünschten Stelle die Ausgabe angezeigt bekomme.

                        Ich habe mir auf den anderen Seiten (also die, die seinerzeit programmiert wurden) einen Befehl gesucht, der mir eine Dropdown-Menü anzeigt und dabei auf Daten in der Datenbank zugreift. Also genau das, was ich eigentlich auch vorhabe. Dieser Befehl sieht tatsächlich nur so aus:
                        PHP-Code:
                        <?php echo orteDropdown(); ?>
                        Ich habe den einfach ausprobiert (vorher noch den Begriff [orte] eingesetzt und es hat funktioniert. Ich kann in diesem Dropdownmenü die von mir vergebenen Namen der Seminarorte auswählen. Nur leider will ich in diesem Fall nicht den Namen sondern den Ort.

                        Ich habe alle möglichen Varianten ausprobiert, die mir beim Recherchieren (im Netz und auf den bereits vorhandenen Seiten) unter die Finger gekommen sind, nur bin ich meinem Ziel keinen Schritt näher gekommen. Und weiß ich nicht mehr weiter.


                        Zitat von Delirius Beitrag anzeigen
                        Hier mal ein ganz einfaches Beispiel, wie man ein SELECT befüllen kann.
                        PHP-Code:
                        <?php
                        $db 
                        = new PDO('mysql:host=localhost;dbname=db''dbuser''dbpassword');
                        $sql 'SELECT id,name FROM daten';
                        ?>
                        <select name="daten">
                        <?php
                            
                        foreach( $db->query$sql ) as $daten ){
                                echo 
                        "<option value='" $daten['id'] . "'>" $daten['name'] . "</option>";
                            }
                        ?>
                        </select>
                        Ich habe auch diese Variante ausprobiert, abgeändert auf meine Datenbank und nach bestem Wissen und Gewissen
                        So sah es dann aus:

                        PHP-Code:
                        <?php
                        $db 
                        = new PDO('mysql:host=localhost;dbname=db''dbuser''dbpassword');
                        $sql 'SELECT id,ort FROM orte';
                        ?>
                        <select name="orte">
                        <?php
                            
                        foreach( $db->query$sql ) as $orte ){
                                echo 
                        "<option value='" $dorte['id'] . "'>" $daten['ort'] . "</option>";
                            }
                        ?>
                        </select>
                        Hat, wie schon gesagt, leider auch nicht funktioniert. Hast Du noch einen Tipp für mich?

                        Kommentar


                        • #13
                          $dorte['id'] und $daten['ort'] sind nicht definiert.
                          schalt das error reporting an, dann würde dir das php wohl auch sagen
                          PHP-Code:
                          error_reporting(-1);
                          ini_set('display_errors',"on"); 
                          liebe Grüße
                          Fräulein Dingsda

                          Kommentar


                          • #14
                            eine Spalte aus Datenbanktabelle abfragen

                            Zitat von marwio
                            Hast Du noch einen Tipp für mich?
                            Ja, die Standard-Antwort. Lerne die Grundlagen. Denn das was du da abgeändert hast, kann nicht funktionieren. Mit Basis-Wissen würde das nicht passieren. Daher ist das ein ernst und gut gemeinter Rat.

                            Zunächst musst du hier
                            PHP-Code:
                            $db = new PDO('mysql:host=localhost;dbname=db''dbuser''dbpassword'); 
                            deine Zugangsdaten zur Datenbank verwenden, sowie den Host und die Datenbank selbst angeben.

                            Und hierfür brauchst du unbedingt die Grundlagen.
                            PHP-Code:
                            <?php
                                
                            foreach( $db->query$sql ) as $orte ){
                                    echo 
                            "<option value='" $dorte['id'] . "'>" $daten['ort'] . "</option>";
                                }
                            ?>
                            $dorte und $daten sind doch gar nicht definiert, wie willst du hier drauf zugreifen? Wenn man bei deinen Änderungen bleibt, dann müsstest du auf $orte['id'] und $orte['ort'] zugreifen.
                            Delirius

                            PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                            Kommentar


                            • #15
                              Vielen Dank für Eure/Deine Geduld. Grundlagen zu lernen, bin ich fleißig dabei. Bei mir geht es leider nur langsam dafür aber stetig voran . Hilft mir in diesem Fall zwar auch erst mal nicht weiter, aber dafür beim nächsten Mal. Danke und viele Grüße

                              Kommentar

                              Lädt...
                              X