[PHP] Datensätze aus Datenbank auslesen (brauche Hilfe)

07/22/2013 09:41 phlinther1#1
Hallo!
Ich bin gerade dabei, eine Website zu erstellen, hänge jetzt bei bei einem Problem. Das ist mein Skript:

PHP Code:
<?php
    session_start
();
    require_once(
'functions.php'); //dieser File ist ganz sicher vorhanden und die check_login() - Funktion darin ebenfalls (schon früher verwendet)
    
if(check_login()) {  //hier wird überprüft, ob der Benutzer eingeloggt ist (funktioniert 100%ig, da schon oft verwendet, gibt true bzw. false zurück)
        
$username=$_SESSION('username');  //ist auch vorhanden
        
mysql_connect'server''user''pass' //sollte stimmen, oder??? (ja, ich habe die richtigen Daten verwendet)
            
or die( 'Konnte keine Verbindung herstellen : ' mysql_error() );
        
mysql_select_db'db' //sollte stimmen, oder??? (ja, ich habe die richtigen Daten verwendet)
            
or die ( 'Kann Datenbank "db" nicht auswhlen : ' mysql_error() );        
        
$sql mysql_query("SELECT username FROM tabelle WHERE username='$username'"); //bin mir nicht sicher ob das so passt, aber denke schon, oder? tabelle mit Spalte username ist angelegt
        
$anzahl mysql_num_rows($sql); 
        echo 
$anzahl;
    } else {
        echo 
"Du musst angemeldet sein, um diese Aktion durchzuführen.";
    }
?>
Dieses Skript wird aufgerufen und soll einfach nur die Anzahl der gefundenen Datensätze zurückgeben (sofern man eingeloggt ist). Das Login-System funktioniert wunderbar (schon öfters so verbaut wie in diesem Skript)

Ich komme hier gerade echt nicht weiter, was passt denn nicht? (tut mir leid, bin PHP-Anfänger)

MfG

EDIT: achja, wenn man NICHT eingeloggt ist, dann wird tatsächlich "Du musst angemeldet sein, um diese Aktion durchzuführen." ausgegeben...
07/22/2013 09:48 Aegir112#2
Quote:
Originally Posted by phlinther1 View Post

PHP Code:
        $sql mysql_query("SELECT username FROM tabelle WHERE username='$username'");
?> 
Machs mal so:
PHP Code:
$sql mysql_query("SELECT username FROM tabelle
WHERE username='"
.mysql_real_escape_string($username)."'");
if(
$sql) {
$anzahl mysql_num_rows($sql);
echo 
$anzahl;

07/22/2013 13:00 Bulldozer1930#3
Probiere mal das.

PHP Code:
<?php
    session_start
();
    require_once(
'functions.php'); //dieser File ist ganz sicher vorhanden und die check_login() - Funktion darin ebenfalls (schon früher verwendet)
    
if(check_login()) {  //hier wird überprüft, ob der Benutzer eingeloggt ist (funktioniert 100%ig, da schon oft verwendet, gibt true bzw. false zurück)
        
mysql_connect('server''user''pass') or die( 'Konnte keine Verbindung herstellen : ' mysql_error() );
        
mysql_select_db('db') or die ( 'Kann Datenbank "db" nicht auswhlen : ' mysql_error() ); 
    
        
$username=$_SESSION('username');  //ist auch vorhanden

        
$anzahl mysql_num_rows(mysql_query("SELECT username FROM `tabelle` WHERE username='".$username."'")) or die ( 'Fehler: ' mysql_error() ); //bin mir nicht sicher ob das so passt, aber denke schon, oder? tabelle mit Spalte username ist angelegt
        
echo $anzahl;
    } else {
        echo 
"Du musst angemeldet sein, um diese Aktion durchzuführen.";
    }
?>
Ich würde dir aber empfehlen, viel früher schon eine Datenbank Verbindung aufzubauen, somit ersparst du dir Code.
07/22/2013 13:16 phlinther1#4
Danke sehr, ich habs jetzt geschafft :D
07/22/2013 14:37 Evolutio#5
desweitern würde ich auf [Only registered and activated users can see links. Click Here To Register...] wechseln ;)
07/22/2013 17:11 kissein#6
Darf man kurz fragen wie eigentlich die check_login() überprüft ob der User eingeloggt ist ohne die DB zu bemühen ? :)
oder greift die zweite SQL Abfrage auf einen anderen Server zu ?
07/22/2013 19:08 phlinther1#7
Quote:
Originally Posted by kissein View Post
Darf man kurz fragen wie eigentlich die check_login() überprüft ob der User eingeloggt ist ohne die DB zu bemühen ? :)
oder greift die zweite SQL Abfrage auf einen anderen Server zu ?
bei check_login wird überprüft, ob $_SESSION['logged_in'] (wird beim login auf true gesetzt) existiert und true ist und gibt danach true bzw, false zurück.

Ist übrigens schon erledigt, funktioniert alles wunderbar ;)