Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage mit php

Einklappen

Neue Werbung 2019

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

  • SQL Abfrage mit php

    Hallo!
    ich frage Daten aus einer Tabelle ab:
    PHP-Code:
    $select "select * from KSS";
    $result mysql_query($select,$db);
    if(
    $result){
     echo 
    "<table>";
     while(
    $row mysql_fetch_array($result)){
    echo 
    "<table>";
    echo 
    "<tr><th>Maschine</th><th>Ist Konzentation</th><th>PH Wert</th><th>Nitritgehalt</th><th>Temperatur</th>
    <th>Letzter KSS Tausch</th><th>Massnahmen</th><th>Prüfer</th><th>Kalenderwoche</th>"
    ;
    echo 
    "<tr>";
       echo 
    "<td>".$row['maschinenbezeichung']."</td>";
       echo 
    "<td>".$row['istkonzentration_kss']."</td>";
       echo 
    "<td>".$row['phwert_aktuell']."</td>";
       echo 
    "<td>".$row['nitritgehalt_aktuell']."</td>";
       echo 
    "<td>".$row['temperatur']."</td>";
       echo 
    "<td>".$row['letzter_ksstausch']."</td>";
       echo 
    "<td>".$row['massnahmen']."</td>";
       echo 
    "<td>".$row['pruefer']."</td>";
       echo 
    "<td>".$row['kalenderwoche']."</td>";
    echo 
    "</tr>"
    wie mache ich es dass nicht nach jeder Zeile die Überschrift drin ist sondern alle Daten in einer separaten Zeile stehen?


    Wäre für eine Hilfe dankbar.
    http://www.krassevideos.net
    http://www.mein-neues-iphone.de
    http://www.webkatalog.es


  • #2
    Indem du den Tabellenkopf vor die Schleife legst.

    Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt. Zudem ist deine Query anfällig für SQL-Injections.
    Durch einen Wechsel auf mysqli_* oder PDO greifst du aufdie modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections wirken.
    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      ok war ja wohl nicht so schwer

      Noch ne andere Frage, kann ich auch per Dropdown mir die ganze Sache anzeigen lassen?
      Also hierbei nur nach Maschine, d.h. ich wähle die Maschine aus und dann kommen die ganzen Einträge?
      http://www.krassevideos.net
      http://www.mein-neues-iphone.de
      http://www.webkatalog.es

      Kommentar


      • #4
        Ja.

        Z. B. indem du zunächst alle Maschinen abfragst und damit das DropDown aka Select-Element füllst.
        Als zweiten Schritt - nun, nutzt du JS? Dann könntest du bei Auswahl einer Maschine automatisch die Daten nachladen lassen, ggf. sogar mit AJAX.
        Ansonsten müsstest du das in ein Form kapseln und einen Submit-Button hinzufügen. PHP-seitig dann die passenden Daten laden und ausgeben.

        Kommentar


        • #5
          Also ich habe nun folgendes:

          Code:
          <select> 
          <?php 
              
              $sql = "SELECT 
                          maschinenbezeichung 
                      FROM 
                          KSS"; 
              $result = mysql_query($sql) OR die(mysql_error()); 
                  while($row = mysql_fetch_assoc($result)) { 
          echo "<option>" . $row['maschinenbezeichung'] . "</option>"; 
          } 
          ?> 
          </select>
          wie erreiche ich nun dass wenn ich hier etwas ausgesucht habe dass die passende Tabelle dazu ausgegeben wird:

          Code:
          echo "<tr>".$row['letzter_ksstausch']."</tr>";
          http://www.krassevideos.net
          http://www.mein-neues-iphone.de
          http://www.webkatalog.es

          Kommentar


          • #6
            Da müsstest Du Dir mal was zur Formularen und PHP durchlesen. Eins vorab: Gib Deinem Select einen Namen. Den Namen kannst Du dann später je nachdem im POST, GET oder REQUEST Array abfragen.
            Es ist schon alles gesagt. Nur noch nicht von allen.

            Kommentar


            • #7
              @tonkelz: du wurdest schon auf alles wichtige hingewiesen (u.a. mit PDO). Als Ansatz für Dich:

              PHP-Code:
              $dsn '';
              $user '';
              $password '';

              $db = new PDO($dsn$user$password);
              $db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

              $dbMaschine $db->query("SELECT maschinenbezeichung FROM KSS");

              if(
              $dbMaschine->rowCount() > 0) {
               echo 
              "<select size=\"1\" name=\"maschinenwahl\">";
               While(
              $row $dbMaschine->fetch(PDO::FETCH_ASSOC)) {
                echo 
              "<option value=\"".$row['maschinenbezeichung']."\">".$row['maschinenbezeichung']."</option>";
               }
               echo 
              "</select>";
              } else {
               echo 
              "Sorry, noch keine Einträge vorhanden!";
              }

              // usw. 
              Die restlichen Techniken wurden Dir bereits genannt (AJAX usw). Gewöhn dir mysql_* schnellstmöglich ab, ist veraltet (wie VPh schon geschrieben hat).

              mfg wolf29

              EDIT: try catch entfernt
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von wolf29 Beitrag anzeigen
                @tonkelz: du wurdest schon auf alles wichtige hingewiesen (u.a. mit PDO). Als Ansatz für Dich:
                Der try catch Block gehört dort nicht rein. Wenn du eine Exception nicht sinnvoll behandeln kannst brauchst du sie nicht fangen. Es macht kein Sinn auszugeben das die Verbindung fehlgeschlagen ist, wenn eine Zeile darunter schon die nächste Exception ausgelöst wird. Also entweder gar nicht drum kümmern, dann blubbern die Exceptions ganz duch und werden von PHP behandelt (Abbruch des Scripts, Ausgabe und Protokollierung je nach Einstellungen in der php.ini) oder du erstellst ein globalen Exception Handler per set_exception_handler() oder ein try catch Block in der Bootstrap Datei und behandelst sowas nach deinen eigenen Vorstellungen.

                Kommentar


                • #9
                  Der try catch Block gehört dort nicht rein. Wenn du eine Exception nicht sinnvoll behandeln kannst brauchst du sie nicht fangen. Es macht kein Sinn auszugeben das die Verbindung fehlgeschlagen ist, wenn eine Zeile darunter schon die nächste Exception ausgelöst wird. Also entweder gar nicht drum kümmern, dann blubbern die Exceptions ganz duch und werden von PHP behandelt (Abbruch des Scripts, Ausgabe und Protokollierung je nach Einstellungen in der php.ini) oder du erstellst ein globalen Exception Handler per set_exception_handler() oder ein try catch Block in der Bootstrap Datei und behandelst sowas nach deinen eigenen Vorstellungen.
                  Jep, haste recht - es fehlte noch der Link zur Doku, den ich dort eigentlich mitreinbringen wollte, um das zu verdeutlichen, deswegen der try block am Anfang.
                  while (!asleep()) sheep++;

                  Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                  Kommentar

                  Lädt...
                  X