Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage einer Tabelle aus mysql

Einklappen

Neue Werbung 2019

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

  • Abfrage einer Tabelle aus mysql

    Hallo,

    leider muß ich euch schon wieder um Hilfe bitten. Wie ich Daten richtig in meine Datenbank bekomme konnte ich dank des Forums lösen. Nun möchte ich die Datensätzte aber mit Hilfe einer Suche auch wieder angezeigt bekommen. Ich habe eine Seite mit zwei Eingabefeldern (Name und Novellname). Danach soll gesucht werden also nach Name oder Novellname. Die Daten stehe alle in einer Datenbank. Folgendes habe ich bisher geschrieben
    PHP-Code:
    <?php
    if(isset($_POST)) {
    $wert mysql_query("
                        SELECT 
                          name 
                        FROM 
                          anwender 
                        WHERE 
                          '.
    $name.'
                        "
    )
                        ;
    while(
    $suche=mysql_fetch_array($wert))
    {
    echo 
    "<tr><td>" .$suche[name]. "</td>";
    echo 
    "<tr><td>" .$suche[novellname]. "</td>";
    echo 
    "<tr><td>" .$suche[stoermanagement]. "</td>";
    echo 
    "<tr><td>" .$suche[unkraut]. "</td>";
    echo 
    "<tr><td>" .$suche[fpa]. "</td>";
    echo 
    "<tr><td>" .$suche[bereitschaft]. "</td>";
    }
    }
    ?> 
    <br>Name, Vorname:
    <br><input type="text" name="name">

    <br>Novellname:
    <br><input type="text" name="novellname">
    <br>
    <br><input type="submit" value="suchen">
    Allerding bekomme ich die Meldung das die Variable name nicht bekannt ist. Wie muß ich die Variable definieren damit ich sie in die Abfrage zur Datenbank einbinden kann. Das zweite Problem ist wie kann ich es bewerkstelligen das nach Name oder Novellname gesucht wird. Kann ich das mit einer Schleife in php bewerkstelligen? Wenn jemand ein Beispielscript hätte wäre schön.

    Vielen Dank.
    Sebastian

  • #2
    $name ist auch nicht bekannt, wenn register_globals = off
    -> $_POST['name']
    btw mysql_error() fehlt und indexe bei associativen array gehören in einfache quotes ansonsten wird angenommen es handelt sich um eine KOnstante und erst wenn es keine KOnstante mit dem Namen gibt wird Text angenommen.

    Kommentar


    • #3
      Ja ich weiß das es an den register_globals=off liegt. Daher ja meine Frage wie ich eine Variable in einer mysql Abfrage definieren muß damit sie abgefragt wird. Mit $_POST['name'] geht es nicht (hatte ich schon probiert aber nicht mit reingeschrieben, sorry). Mein Problem ist ich weiß nicht wie ich die Variable die in das Textfeld eingetragen wird in der sql Abfrage schreiben muß.
      Sorry wenn ich mich falsch ausgedrückt habe

      Grüße
      Sebastian

      Kommentar


      • #4
        SELECT
        name
        FROM
        anwender
        WHERE
        '.$name.'


        Eine where bedingung sieht so aus:
        WHERE spaltenname='bedingung'
        also schau noch mal wie das bei Dir aussieht und was da nicht stimmt. und statt $name dann $_POST['name'] verwenden

        Kommentar


        • #5
          Erstmal vorweg: Der HTML-Quellcode ist schrecklich. Sorry, aber das musste raus. Als "reiner" PHP-Programmierer ist das nicht so wichtig, aber ich würde dir trotzdem emfpehlen, valides HTML zu schreiben. Dazu gehört beispielsweise das Starten und Beenden der Tabelle mit <table> sowie nicht nur das Beginnen, sondern auch das Beenden einer Tabellenzeile mit <tr><td>Zelle</td></tr>.

          Das Problem mit der Datenbankabfrage liegt daran, dass eine WHERE-Bedingung nach folgendem Schema aufgebaut sein muss: WHERE spaltenname = wert . Bei dir steht nur der Wert. Die Punkte zwischen den ' variable ' sind überflüssig, da die Variable sich innerhalb des Strings befindet und nicht mit ihm verknüpft wird. Wenn, dann sollte es so aussehen: WHERE spaltenname = '" . $_POST['name'] . "'.
          Außerdem wählst du nur den "name" und verwendest in der While-Schleife dennoch andere Spalten. Ersetze also des SELECT name durch SELECT *, oder, ein wenig mehr Tipparbeit aber dafür ein schnelleres Script, mit SELECT und einer Auflistung aller benötigten Spalten.

          Die Suche lässt sich ebenfalls mit eine WHERE-Bedingung bewerkstelligen:
          Erstmal brauchst du dazu ein Formular, in dem der gesuchte Name und zwei Radiobuttons, mit denen man zwischen Name und Novellname wechseln kann, enthalten sind.

          Das Auswertungsscript sieht dann in etwa so aus:
          PHP-Code:
          <?php
          if($_POST['typ'] == "Novellname")
          {
             
          $sql 'SELECT * FROM anwender WHERE novellname = \'' $_POST['novellname'] . '\'';
             
          $res mysql_query($res);
             echo 
          "<table>";
             while(
          $row mysql_fetch_assoc($res)
             {
                echo 
          "<tr><td>" .$row[name]. "</td></tr>";
                echo 
          "<tr><td>" .$row[novellname]. "</td></tr>";
                echo 
          "<tr><td>" .$row[stoermanagement]. "</td></tr>";
                echo 
          "<tr><td>" .$row[unkraut]. "</td></tr>";
                echo 
          "<tr><td>" .$row[fpa]. "</td></tr>";
                echo 
          "<tr><td>" .$row[bereitschaft]. "</td></tr>";
             }
             echo 
          "</table>";
          }
          ?>
          Für die Suche nach dem normalen Namen gilt das gleiche, nur das eben die spezifischen Namen umgeändert werden müssen (also Novellname durch Name ersetzen in der IF und der WHERE-Bedingung).

          Kommentar


          • #6
            Ja ich weiß der html Code ist wirklich nicht toll. Werde ihn auch noch mal überarbeiten. Wenn dann will man ja sich ja gleich das ordendliche schreiben angewöhnen.
            Denke für die Hilfe ich werde es mir in aller Ruhe ansehen und testen. Gebe auf alle Fälle eine Rückinfo.

            Kommentar


            • #7
              Hallo,

              danke für dein Script war noch ein kleiner Fehler drin:
              PHP-Code:
              $res mysql_query($sql); 
              Aber den habe ich schnell gefunden, damit lernt man auch das ganze besser zu verstehen.

              Also Danke noch mal
              Sebastian

              Kommentar


              • #8
                Ich habe jetzt noch ein Problem. Ich weiß nicht wie ich Tabellennamen in der Tabelle mitausgeben kann. Also bei Name, Name halt und so weiter. Wäre schön wenn du noch einen Tip für mich hast.

                Danke
                Sebastian

                Kommentar


                • #9
                  Einfach oben drüber schreiben als html code
                  Code:
                  <table>
                    <tr>
                      <th>Tabelle: Name</th>
                    </tr>

                  Kommentar


                  • #10
                    Und wenn du statt
                    Code:
                    SELECT * FROM anwender ...
                    
                    SELECT
                        name,
                        novellname,
                        stormanagement,
                        unkraut,
                        fpa,
                        bereitschaft
                    FROM
                        anwender
                    ....
                    schreiben würdest, hättest du die Spaltenübschriften auch schon bereit
                    Gruss
                    L

                    Kommentar


                    • #11
                      Ach, und auch hier bitte statt
                      echo "<tr><td>" .$row[name]. "</td></tr>";
                      besser
                      PHP-Code:
                      echo "<tr><td>" .$row['name']. "</td></tr>"

                      PHP: Arrays - Manual Absatz "
                      Array do's and don'ts"

                      Kommentar


                      • #12
                        Danke für eure Hilfe habe es jetzt gelöst. Mein nächster Schritt ist jetzt die Daten in ein Formular zu über nehmen damit sie ändern kann. Also falls sich was an den Rollen geändert hat. Mal sehen ob ich das hinbekomme.

                        Grüße
                        Sebastian

                        Kommentar


                        • #13
                          zur Übergabe brauchst du ja nur die ID, dann kannste alle Daten die zu dem speziellen Datensatz gehören nochmal auslesen

                          Kommentar

                          Lädt...
                          X