XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   MySQL Abfrage mit PHP (http://xhtmlforum.de/showthread.php?t=64306)

andre-ne 09.04.2011 05:22

MySQL Abfrage mit PHP
 
Hallo!

Ich habe folgendes Problem:

In meiner Datenbank habe ich meine Tabelle mit den Feldern:

id
username
passwort
ordner


Die Abfrage für username und passwort habe ich erfolgreich hinbekommen.

Jetzt möchte ich gerne den Wert aus dem Feld ordner in eine Variable übergeben, da es sich hierbei später um einen Downloadlink handeln soll der dem User zugewiesen wurde und jeder User einen anderen Link hat.

Mein Script welches username und passwort überprüft sieht bis jetzt wie folgt aus (siehe weiter unten). Nun muss noch die Abfrage für ordner eingebracht werden und hier weiß ich absolut nicht weiter (ich bin noch ein Anfänger in Sachen PHP und MySQL). :roll:


PHP-Code:

<?php
mysql_connect 
("localhost""USER""PASSWORT") or die ("Verbindung zur Datenbank fehlgeschlagen");
mysql_select_db ("DATENBANKNAME") or die ("Datenbank konnte nicht ausgewählt werden");

$username $_POST['username'];
$passwort md5($_POST['passwort']);

$username stripslashes($username);
$passwort stripslashes($passwort);
$username mysql_real_escape_string($username);
$passwort mysql_real_escape_string($passwort);

$sql="SELECT * FROM login WHERE username='$username' and passwort='$passwort'";
$result mysql_query($sql);

$count mysql_num_rows($result);

if(
$count==1)
    {
    
session_register("username");
    
session_register("passwort");
    
header("location: ###ORDNER###");
    }
    
    else    
        {
        
header("location: error.php");
        }
?>

An der Stelle von ###ORDNER### soll der Wert aus ordner eingefügt werden.

Wäre nett wenn mir jemand weiter helfen könnte mit dem richtigen Codeschnippsel :lol:

Gruß
André

mantiz 09.04.2011 11:29

Hier wäre mal ein Link für Dich, um die Basics zu lernen: Quakenet/#php Tutorial - de - Einleitung

andre-ne 09.04.2011 16:46

Okay danke dafür.
Aber wie ich nun die Abfrage dort einbauen könnte ist mir immer noch nicht ganz klar :roll:

mantiz 09.04.2011 16:53

Ist alles im verlinkten Tutorial zu finden.

andre-ne 09.04.2011 17:43

Mein Script sieht nun so aus, funktioniert jedoch nicht und ich finde den Fehler nicht :?

PHP-Code:

$username $_POST['username'];
$passwort md5($_POST['passwort']);

$username stripslashes($username);
$passwort stripslashes($passwort);
$username mysql_real_escape_string($username);
$passwort mysql_real_escape_string($passwort);

$sql="SELECT * FROM loginfree WHERE username='$username' passwort='$passwort' ordner='$ordner'";
$result mysql_query($sql);

while (
$res $result->fetch_assoc($username))
    {
    
$ordner $res['ordner'];
    }

$count mysql_num_rows($result);

if(
$count==1)
    {
    
session_register("username");
    
session_register("passwort");
    
header("location: $ordner");
    }
    
    else    
        {
        
header("location: error.php");
        } 


mantiz 09.04.2011 18:10

Hast Du Dir Dein SQL-Statement einmal genauer angesehen bzw. dies mal manuell z.B. per phpMyAdmin ausprobiert?

Und vergleiche das Statement aus Deinem letzten Post einmal mit dem aus dem ersten Post. ;)

andre-ne 09.04.2011 18:21

Ach ja ich hab bei den Tabellennamen geändert, deswegen :lol:

Manuell habe ich das ganze nicht ausprobiert.

Bei dem Link den du mir gegeben hast, finde ich auch keine Abfrage wo das Feld abhänigig von einem anderen Feld abgefragt wird. Dies wäre bei mir wie du siehst der Fall (ein User hat ein bestimmten Ordner). :?

mantiz 09.04.2011 18:47

Zunächst brauchst Du die Spalten für den Ordner-Namen nicht explizit angeben, "SELECT * " sagt ja gerade, dass Du alle Spalten zurückgeliefert haben möchtest, was die Spalte mit den Ordner-Namen selbstverständlich einschließt.

Bzgl. des geänderten Statements meinte ich nicht den Namen der Tabelle, sondern vielmehr die Tatsache, dass Du im ersten Post noch korrekterweise ein "AND" zwischen "username" und "password" geschrieben hast, welches beim zweiten einfach mal fehlt.

Das Statement des ersten Posts kann also einfach unverändert bleiben, da dies bereits auf Benutzername und Passwort selektiert und alle Spalten zurückliefert.

Dieser Teil
PHP-Code:

while ($res $result->fetch_assoc($username))
    {
    
$ordner $res['ordner'];
    } 

ist so auch nicht korrekt, weil das einfach blind rauskopiert ist.
Beim Quakenet-Tutorial wird mit mysqli gearbeitet, welches Dir einen objektorientierten Zugriff auf die DB liefert, Du aber die Standard-MySQL-Funktionen verwendest.

Korrekt könnte es also z.B. so lauten:
PHP-Code:

$username $_POST['username'];
$passwort md5($_POST['passwort']);

$username stripslashes($username);
$passwort stripslashes($passwort);
$username mysql_real_escape_string($username);
$passwort mysql_real_escape_string($passwort);

$sql="SELECT * FROM loginfree WHERE username='$username' AND passwort='$passwort'";
$result mysql_query($sql);

$count mysql_num_rows($result);

if(
$count==1)
    {
    
session_register("username");
    
session_register("passwort");
    
$res mysql_fetch_assoc($result);
    
header("location: {$res['ordner']}");
    }
    
    else    
        {
        
header("location: error.php");
        } 

Ist zwar auch noch nicht "schön", aber sollte so erstmal funktionieren.

BTW: Den Link zum Quakenet-Tutorial habe ich Dir nicht gegeben, damit Du da blind etwas rauskopierst, sondern damit Du Dir die Basics aneignest, denn wenn Du die könntest, hättest Du das aktuelle Problem überhaupt nicht. 8)

andre-ne 09.04.2011 23:42

Manchmal seh ich den Wald vor lauter Bäumen nicht :roll:

Das funktioniert :D
Danke


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:02 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023