[PHP] Datenbank auf Inhalt checken

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Eimsbush, 25. Februar 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 25. Februar 2010
    Datenbank auf Inhalt checken

    Also,

    ich möchte überprüfen ob z.B. die Zahl 465798 in der Datenbank schon vorhanden ist.
    Wie kann ich dies bewerkstelligen?

    Code:
    //Überprüft, ob die PI-Nummer schon bearbeitet wurde. 
    $sql = mysql_query("SELECT * FROM auszubildende WHERE pinr = ".$_POST['pinr']."");
    while($row = mysql_fetch_array($sql))
    {
    if ($row['flag']==1)
    {
    echo ('
     <meta http-equiv="refresh" content="5; URL=beurteilung.php"> 
     <font color="#FF0000"><br>
     Die PI-Nummer wurde bereits bearbeitet!<br>
     Weiterleitung zur Eingabe nach 5 Sekunden!
     </font>
    ');
    }
    Ist nur ein Schnippsel!

    Die Zahl ist eine PI-Nummer (pinr) aber in der Abfrage hier drüber benutze ich die ".$_POST['pinr']." schon. Habe so eine ähnliche Abfrage schon in mehreren Varianten drunter geschrieben, allerdings erfolglos.

    Hat jemand ne Idee?
    BW is für jeden Tipp drin
     
  2. 25. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    Weiß nicht obs dadran liegt aber du machst deine While schleife auf aber nie wieder zu??

    mfg
     
  3. 25. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    ah doch sry das ist nur nen schnipsel
    die while schleife wird am ende erst geschlossen ^^
     
  4. 25. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    Du könntest einfach mysql_num_rows($sql) benutzen, um zu sehen, ob eine Zeile wiedergegeben wurde. Ist das der Fall, ist die PINR schon vorhanden.

    Und noch etwas: Wenn du SQL-Queries bildest, dann übernimm nie Usereingaben ungeprüft. Soll heißen, dass ein $_POST['pinr'] im Query nichts verloren hat. Prüfe vorher, ob es überhaupt eine Zahl ist und im gültigen Wertebereich liegt, sonst ist es ein leichtes für jeden, eine SQL-Injection zu starten.
     
  5. 25. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    wie müsste denn dann der code heißen?
    das mit der injection war mir bis jetztt unbekannt hört sich aber gut an

    aber eh nicht so wichtig, da es nur bei meiner firma auf internem server läuft ohne jegliche logins usw.


    ich werd morgen auf der arbeit dein tipp mal versuchen
     
  6. 25. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    PHP:
    $sql  mysql_query ( "SELECT * FROM auszubildende WHERE pinr = " . $_POST [ 'pinr' ]. "" );  // * nur benutzen wenn du wirklich alle felder benötigst
    $result  mysql_num_rows ( $sql );


    if(
    $result  <=  0 ){ echo  "Kein Datensatz gefunden" ;}


    Bei MySQL sollte immer die Funktion mysql_real_escape_string() benutzt werden sobald User etwas eingeben können. Wenn man es sich nicht angewöhnt, macht man es nie und das kann mal iwann fatal sein ^^
     
  7. 26. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    wenns ne zahl ist mach einfach

    PHP:
    "SELECT * blablabla WHERE dies = '" . intval ( $_POST [ 'das' ]). "'
    Aber da findest du viel hier im Board
     
  8. 26. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    Also bis jetzt hat noch nichts funktioniert..
    vll ist meine fragestellung auch falsch also nochmal:

    wir gehen jetzt mal vom einfachsten aus:

    Ich habe ein Eingabefeld ( <input type="text" name="pinummer"> )
    Dort gebe ich die PI-Nummer 123456 ein.
    In der Datenbank ist folgende Nummer: 987654

    Wenn ich 123456 eingebe soll er mir einfach per echo ausgeben:

    "PI-Nummer wurde noch nicht gepflegt"! <-- Da komme ich einfach nicht hin



    und wenn ich 987654 eingebe geht er in den "else-zweig" oder wie auch immer und führt ganz normal mein programm aus.

    Der Code sieht dann in etwa so aus:
    PHP:
    <? php blablablabla
    html zeug blabla
    < input type = "text"  name = "pinummer" >

    if(isset(
    $_POST [ 'pinummer' ]))
    {
    $zahl  $_POST [ 'pinummer' ];
    $sql  mysql_query ( "SELECT * FROM auszubildende WHERE pinr =  $zahl " );
    while(
    $row  mysql_fetch_array ( $sql ))
    {
    if ( 
    $zahl  ==  $row [ 'pinr' ])
    {
    echo (
    'Pi-Nummer bereits vorhanden' );
    }
    }

    ?>
    Eure funktionen habe ich schon eingebaut allerdings hat nichts funktioniert..
     
  9. 26. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    warum überhaupt ne schleife.
    du willst doch nur wissen ob true || false
    PHP:
    <? php 
    < input type = "text"  name = "pinummer" >

    if(isset(
    $_POST [ 'pinummer' ]))
    {
    $zahl  mysql_real_escape_string ( $_POST [ 'pinummer' ]);
    $sql  mysql_query ( "SELECT * FROM auszubildende WHERE pinr =  $zahl " );

    if ( 
    $sql  )
    {
    echo (
    'Pi-Nummer bereits vorhanden' );
    }

    ?> 
    // edit
    was ist pinr für typ?
    int:
    $sql = mysql_query("SELECT * FROM auszubildende WHERE pinr = $zahl");

    string:
    $sql = mysql_query("SELECT * FROM auszubildende WHERE pinr = '$zahl'");
     
  10. 26. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: PHP Datenbank auf Inhalt checken


    funktioniert auch nicht >.<

    typ pinr? wo find ich den raus bei phpmyadmin hab ich VARCHAR angegeben.
    ich poste nochmal meinen ganzen Code ( extra test nur für die funktion ^^ )
    PHP:
    <? php
    $mysqluser 
    'admin' ;
    $mysqlpasswd  '123456' ;
    $mysqlhost  'localhost' ;
    $database  'azubidaten' ;

    mysql_connect  ( $mysqlhost $mysqluser $mysqlpasswd ) or die( 'ERROR!' ); 
    mysql_select_db  ( $database );

    echo(
    '
    <html>
    <head>
    <title>nsfas</title>

    </head>
    <body>
    <form action="" method="post" name="login" onsubmit="return chkForm();">
    <table>
        <tr>
            <td><input type="text" name="pinummer"></td>
        </tr>
        <tr>
            <td><input type="submit" name="subber"></td>
        </tr>
    </table>
    </form>
    </body>
    </html>'
    );
    if(isset(
    $_POST [ 'pinummer' ]))
    {
    $zahl  mysql_real_escape_string ( $_POST [ 'pinummer' ]);
    $result  mysql_query ( "SELECT * FROM auszubildende WHERE pinr = ' $zahl '" );
    if (!
    $result ) {
        die(
    'Ungültige Abfrage: '  mysql_error ());
    }
    }

    mysql_close ();
    ?>
    Meine Datenbanktabelle "auszubildende" sieht wiefolgt aus:
    Bild
     
  11. 26. Februar 2010
    AW: PHP Datenbank auf Inhalt checken

    noch ein kleiner hinweise zu deiner sql:

    es ist schwachsinnig alle daten mit dem * operator zu holen, da du diese eh nicht brauchst und wieder verwirfst. entweder du begrenzt es auf deine pinr oder du machst einfach ein count(..) .

    nächste schritt gib einfach mal deine sql anweisung aus und führe diese direkt auf der datenbank aus. sollte hier etwas nicht stimmen, wirst du das direkt erkennen.
    echo "SELECT * FROM auszubildende WHERE pinr = $zahl";

    edit:
    was willst du damit: onsubmit="return chkForm();" ???

    schicke doch das formular direkt an deine seite, indem du diese bei action=".." angibst.
     
  12. 26. Februar 2010
    AW: PHP Datenbank auf Inhalt checken


    Wenn ich die SQL-Anweisung direkt ausführe:
    mit echo "$result";

    bekomme ich: Resource id #3


    zu deinem edit:
    return chkForm ist noch vom original^^ dient der überprüfung mit JS
    hab ich ma rausgenommen


    LÖSUNG:

    Hab jetzt die einfachste und natürlich auch blödeste Lösung genommen. Aber da dies eh nur nen Projekt ist was Firmenintern läuft ist das nicht so schlimm!

    Sobald ich das WHERE einbaue ist die SQL anweisung falsch, da er die PI-NR nicht findet...
    Um das abzufangen gibts vll auch befehle die mir aber nicht bekannt sind ^^

    also falls noch einer was weiß bitte ne PN BW's sind raus

    if(isset($_POST['pinummer']))
    {
    $zahl = mysql_real_escape_string($_POST['pinummer']);
    $sql = mysql_query("SELECT * FROM auszubildende");

    while($test = mysql_fetch_array($sql))
    {
    if ( $test['pinr'] == $zahl )
    {
    echo ('Pi-Nummer da gepflegt!');
    }
    else
    {
    echo ('Nix');
    }
    }
    }
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.