• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus Datenbank mit eingegebenen Daten vergleichen

Status
Für weitere Antworten geschlossen.

Anonymous

Neues Mitglied
Hallo,

ich habe ein Formular, wo der Besucher Benutzername und Passwort eingeben muss. Dieses Formular (http://ltm.lm.funpic.de/php/versuch4.php) gibt die Daten weiter an versuch4_2.php, welches ermitteln soll, ob die eingegebenen Daten auch in der Datenbank vorhanden sind. Ich weiss nicht genau, wie ich das machen soll. Bis jetzt habe ich es so versucht:
Code:
<?php
    $Benutzername = $_POST['Benutzername'];
    $Passwort = $_POST['Passwort'];

    $mysql_user = "ltm";
    $mysql_pw = "**********";
    $mysql_host = "localhost";
    $mysql_db = "ltm";

    if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
    {
        echo "Es wurde erfolgreich zur Datenbank verbunden.
";
    }
    else
    {
        die('Fehler! Datenbank gibt es nicht.');
    }

    if(@mysql_select_db($mysql_db))
    {
        echo "Es wurde erfolgreich die Datenbank $mysql_db ausgewählt.
";
    }
    else
    {
        die('Fehler! Datenbank gibt es nicht.');
    }

    $sql = "SELECT * FROM `Userdaten` WHERE `Benutzername` = $Benutzername";

    if(!$res_id = mysql_query($sql))
    {
        die('Fehler! SQL-Befehl falsch.');
    }

    while($test = mysql_fetch_array($res_id))
    {
        echo $test['Benutzername'].' '.$test['Passwort']."
";
    }
?>

Kann mir da jemand weiterhelfen?
 
mache zuerst eine abfrage indem du nach dem Pw usw. suchst
dann setze :
$treffer=mysql_num_rows($result);
if($treffer==1) {
echo "ist vorhanden";
}
 
Ich würde es so machen:
[php:1:c01de2f5c1]<?php
$sql = "SELECT * FROM `Userdaten` WHERE `Benutzername`='$mysql_user' AND `Passwort`='$mysql_pw' LIMIT 1;";

$res = mysql_query($sql);

if(mysql_num_rows($res) > 0)
{
/* Denn ganzen rest abwickeln... */
}

?>[/php:1:c01de2f5c1]

zusätzlich dazu würde ich das ganze in der selben datei abwickeln. dazu setzt du das target auf diese datei und setzt das ganze script zwischen die klammern der frage:
[php:1:c01de2f5c1]<?php
if($_POST['name_des_submit_buttons'])
{
/* Das script.... */
}
?>[/php:1:c01de2f5c1]
 
Code:
<?php
    $Benutzername = $_POST['Benutzername'];
    $Passwort = $_POST['Passwort'];

    $mysql_user = "ltm";
    $mysql_pw = "**********";
    $mysql_host = "localhost";
    $mysql_db = "ltm";

    if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
    {
        echo "Es wurde erfolgreich zur Datenbank verbunden.
";
    }
    else
    {
        die('Fehler! Datenbank gibt es nicht.');
    }

    if(@mysql_select_db($mysql_db))
    {
        echo "Es wurde erfolgreich die Datenbank $mysql_db ausgewählt.
";
    }
    else
    {
        die('Fehler! Datenbank gibt es nicht.');
    }

    $sql = "SELECT * FROM `Userdaten` WHERE `Benutzername` = '$Benutzername' AND `Passwort` = '$Passwort'";

    if(!$res_id = mysql_query($sql))
    {
        die('Fehler! SQL-Befehl falsch.');
    }

    while($test = mysql_fetch_array($res_id))
    {
        echo $test['Benutzername'].' '.$test['Passwort']."
";
    }
?>

So geht es, schonmal vielen Dank. Wenn der User also die richtigen Daten eingibt,
wird Benutzername und Passwort aus der Datenbank ausgegeben.

Jetzt frage ich mich allerdings, wie ich das ganze nicht ausgeben sondern einfach nur überprüfen kann.

Code:
if("SELECT * FROM `Userdaten` WHERE `Benutzername` = $Benutzername") { ... }

Das geht wohl nicht, oder?
 
hast du mein post nicht gelesen LTM?

der select befehl holt die daten aus der db und legt sie in der resourc ab mit mysql_fetch_array wandelst du die resource in ein array um welches alle daten enthält...

wo genau ist das problem?
 
Prophet, ich habe deinen Post schon gelesen, da ich den Code aber nicht ganz verstehe, weiss ich nicht, ob da die Lösung für mein Problem drin ist.

Was bedeutet mysql_num_rows?

[edit]
Ich bin jetzt einfach mal davon ausgegangen, dass mysql_num_rows zählt, wieviele Ergebnisse es gibt.

Code:
<?php
    $Benutzername = $_POST['Benutzername'];
    $Passwort = $_POST['Passwort'];

    $mysql_user = "ltm";
    $mysql_pw = "**********";
    $mysql_host = "localhost";
    $mysql_db = "ltm";

    mysql_connect($mysql_host, $mysql_user, $mysql_pw);
    mysql_select_db($mysql_db)

    $sql = "SELECT * FROM `Userdaten` WHERE `Benutzername` = '$Benutzername' AND `Passwort` = '$Passwort'";

    $res = mysql_query($sql);

    if(mysql_num_rows($res) > 0)
    {
        echo "Hallo!";
    }
?>

So hab ich das dann mal versucht, aber dann kommt folgende Fehlermeldung (bei der Zeile kam vorher keine und ich hab an dieser Zeile nichts veränder):

Parse error: parse error, unexpected T_VARIABLE in /usr/export/www/vhosts/funnetwork/hosting/ltm/php/versuch4_2.php on line 13
[/edit]

[edit2]
Edit 1 hat sich erledigt, ich hab nach mysql_select_db das ; vergessen.
[/edit2]
 
[php:1:ac4a9f2265]<?php
/* SQL-Befehl : daten aus db holen; nach daten suchen die das masswort $mysql_pw und von benutzernamen $mysql_user haben; maxiaml 1 aus der db holen.*/
$sql = "SELECT * FROM `Userdaten` WHERE `Benutzername`='$mysql_user' AND `Passwort`='$mysql_pw' LIMIT 1;";

/* befehl an db senden und ergebnis in $res speichern. */
$res = mysql_query($sql);

/* wenn du anzahl der datenreihen (mysql_num_rows) groß mehr als 1 ist (also ein eintrag vorhanden) */
if(mysql_num_rows($res) > 0)
{
/* Denn ganzen rest abwickeln... also daten auswerten mit mysql_fetch_array auswerten usw. */
}
?>[/php:1:ac4a9f2265]

Wichtig für dich: http://www.selfphp.de/funktionsreferenz/mysql_funktionen/index.php
Hier noch mal im manual: http://www.php.net/manual/de/ref.mysql.php

und noch einaml der tipp das script in der selben datei abzuarbeiten... dann hast du wenigstens alles was zusammengehört zusammen... wenn du trotzdem zu einer anderen datei willst kannst du immernoich nene redirect machen...
 
ich würde das script in der selben datei verarbeiten in der auch das forumlar ist. dann hast du das script des forms immer dabei.

Beispiel:
[php:1:65b79c7b59]<?php
/* wenn der submit button gedrückt wurde */
if(isset($_POST['name_des_submit_buttons']))
{
/*daten des forumlars verarbeiten*/
/*wenn sein muss redirect zu einer anderen seite*/
}
?>
<html>
<head>
<title>Form-Seite</title>
</head>
<body>
<form method="post" action="<? echo $PHP_SELF; /* ist das jetzt die richtige var um den namen dieser seite zu ermitteln? */?>">



<input type="submit" name="name_des_submit_buttons" value="Verarbeiten" />

</form>
</body>
</html>[/php:1:65b79c7b59]

verstehst du was ich meine ?
 
Ja, ich verstehe, allerdings sehe ich darin keinen Sinn!? Macht das denn einen Unterschied?

Achja, ich glaube, es heisst einfach
Code:
<form action="$PHP_SELF" method="POST">
 
ich finde es so übersichtlicher wenn ich das zugehörige script für fdas forumlar glech dabei habe :)

Achja, ich glaube, es heisst einfach
Code:
<form action="$PHP_SELF" method="POST">

nein das glaube ich nicht du bist dort ja nicht in phph also kannst du auch nicht einfach eine var dort hinschreiben....
ob du post klein oder groß schreibt ist egal...
 
Stimmt, du hast Recht.

Aber wenn es nur der Übersichtlichkeit dient, dann ist es ja egal, wie ich es mache. Es ist wohl "Geschmackssache", wie man es übersichtlicher findet.

Na das mit post weiss ich selbst :wink:
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben