2Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
267
267
EMPFEHLEN
-
Ich habe nun das nächste Problem, ich habe meine Klasse erweitert um eine Funktion UserExist die liefert mir immer false zurück

Ich weiß nur nicht warum, mir diese IMMER false liefertPHP-Code:<?php
require 'classes/class_DB.php';
class userManagement extends DB
{
public $dbh;
public $userExist=false;
public function __construct(&$dbh)
{
parent::__construct();
if(is_object($dbh) && ($dbh instanceof PDO))
$this->dbh=$dbh;
}
public function UserExist($user)
{
try
{
$sql="SELECT u_id
FROM user
WHERE u_uname='$user'";
$result=$this->dbh->prepare($sql);
$result=$this->dbh->query($sql);
$tmp=$result->fetchAll(PDO::FETCH_ASSOC);
$ta=trim($tmp);
if(!empty($ta))
{
$this->userExist=false;
}
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
public function add($daten)
{
//Daten eintragen
if($this->userExist!==true)
{
#return false;
print"Dieser Username ist bereits vergeben!";
}
else
{
try
{
$sql="INSERT INTO user(u_uname,
u_password,
u_email,
u_vname,
u_nname,
u_plz,
u_ort,
u_strasse,
u_hnr,
u_geb_tag,
u_geb_mon,
u_geb_jahr,
u_code)
VALUES(:user,
:password,
:email,
:vname,
:nname,
:plz,
:ort,
:strasse,
:hnr,
:geb_tag,
:geb_mon,
:geb_jahr,
:code)";
$result=$this->dbh->prepare($sql);
$result->bindParam(':user', $daten['uname'], PDO::PARAM_STR,36);
$result->bindParam(':password', $daten['pw'], PDO::PARAM_STR,32);
$result->bindParam(':email', $daten['email'], PDO::PARAM_STR,60);
$result->bindParam(':vname', $daten['vname'], PDO::PARAM_STR,40);
$result->bindParam(':nname', $daten['nname'], PDO::PARAM_STR,32);
$result->bindParam(':plz', $daten['plz'], PDO::PARAM_STR,6);
$result->bindParam(':ort', $daten['ort'], PDO::PARAM_STR,32);
$result->bindParam(':strasse', $daten['strasse'], PDO::PARAM_STR,32);
$result->bindParam(':hnr', $daten['hnr'], PDO::PARAM_STR,7);
$result->bindParam(':geb_tag', $daten['geb_tag'], PDO::PARAM_STR,2);
$result->bindParam(':geb_mon', $daten['geb_mon'], PDO::PARAM_STR,2);
$result->bindParam(':geb_jahr', $daten['geb_jahr'], PDO::PARAM_STR,4);
$result->bindParam(':code', $daten['code'], PDO::PARAM_STR,32);
$result->execute();
if($result->rowCount()==1)
{
print"Datensatz wurde eingetragen";
return true;
}
else
return false;
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
}
}
?>
-
04.02.12 22:48 #2
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Punkt 1: Warum führst du hintereinander prepare und query aus? Punkt 2: Ich glaube, dass dir fetchAll mit dem Parameter FETCH_ASSOC ein Array zurückgibt. Darauf kannst du nicht die Funktion trim anwenden.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Salve,
also dieses:
kannst Du komplett weglassen da Du eh mit query arbeitest.Code PHP:1
$result=$this->dbh->prepare($sql);
Und dieses:
setzt userExist immer auf false, wenn $ta NICHT leer ist.Code PHP:1 2 3 4
if(!empty($ta)) { $this->userExist=false; }
Desweiteren kannst Du diesen Block:
in diesen ändern:Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13
class userManagement extends DB { public $dbh; public $userExist=false; public function __construct(&$dbh) { parent::__construct(); if(is_object($dbh) && ($dbh instanceof PDO)) $this->dbh=$dbh; }
da Du $this->dbh in der Elternklasse setzt (falls Du das nicht geändert hast)!Code PHP:1 2 3 4 5 6 7 8
class userManagement extends DB { public $userExist=false; public function __construct() { parent::__construct(); }
Gruß
//EDIT
Falsch!
trim() kann auch auf Arrays angewendet werden.Geändert von Raisch (04.02.12 um 23:00 Uhr)
-
04.02.12 23:03 #4
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Ich glaube eher nicht, dass trim auch auf Arrays angewendet werden kann:
Code :1
string trim ( string $str [, string $charlist ] )
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Grüße,
@einfach nur crack:
Das Manual bietet da ne Möglichkeit: Manual Trim
Unter dem Punkt "Beispiel #2 Trimmen von Array-Werten mittels trim()".Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
oki is raus
Ob ich das nun auf false oder true setze spielt doch keine Rolle, denn wenn die Datenbank leer sollte da true kommen, denn diese Abfrage sollte 0 ausgeben - klar ich könnte das auch umformulieren in true nur gehts ja deshalb trotzdem nicht
Nein habe ich nicht geändert, aber wenn ich das so mache, wie du beschrieben hast, bekomme ich ja nen Notice, das will ich net
Nun weiß ich aber leider immernoch net warum das IMMER false liefert
-
04.02.12 23:10 #7
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
@Alex_T: Mir ist durchaus bewusst, dass man die Funktion trim als Callback-Funktion auf ein Array anwenden kann, aber man kann der Funktion trim kein Array als ersten Parameter übergeben. Das ist etwas ganz anderes!
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
04.02.12 23:12 #8
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
@Divo1984: Doch, wenn du die Wertzuweisung auf true änderst, dann ist dein Problem behoben – theoretisch.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Selbst wenn ich auf trim verzichte bringt das nichts

PHP-Code:<?php
require 'classes/class_DB.php';
class userManagement extends DB
{
public $dbh;
public $userExist=false;
public function __construct(&$dbh)
{
parent::__construct();
if(is_object($dbh) && ($dbh instanceof PDO))
$this->dbh=$dbh;
}
public function UserExist($user)
{
try
{
$sql="SELECT u_id
FROM user
WHERE u_uname='$user'";
#$result=$this->dbh->prepare($sql);
#$result->bindParam(':uname', $user, PDO::PARAM_STR,36);
#$result->execute();
$result=$this->dbh->query($sql);
$tmp=$result->fetchAll(PDO::FETCH_ASSOC);
#$ta=trim();
if($tmp['u_id']=="")
{
$this->userExist=true;
}
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
public function add($daten)
{
//Daten eintragen
if($this->userExist!==true)
{
#return false;
print"Dieser Username ist bereits vergeben!";
}
else
{
try
{
$sql="INSERT INTO user(u_uname,
u_password,
u_email,
u_vname,
u_nname,
u_plz,
u_ort,
u_strasse,
u_hnr,
u_geb_tag,
u_geb_mon,
u_geb_jahr,
u_code)
VALUES(:user,
:password,
:email,
:vname,
:nname,
:plz,
:ort,
:strasse,
:hnr,
:geb_tag,
:geb_mon,
:geb_jahr,
:code)";
$result=$this->dbh->prepare($sql);
$result->bindParam(':user', $daten['uname'], PDO::PARAM_STR,36);
$result->bindParam(':password', $daten['pw'], PDO::PARAM_STR,32);
$result->bindParam(':email', $daten['email'], PDO::PARAM_STR,60);
$result->bindParam(':vname', $daten['vname'], PDO::PARAM_STR,40);
$result->bindParam(':nname', $daten['nname'], PDO::PARAM_STR,32);
$result->bindParam(':plz', $daten['plz'], PDO::PARAM_STR,6);
$result->bindParam(':ort', $daten['ort'], PDO::PARAM_STR,32);
$result->bindParam(':strasse', $daten['strasse'], PDO::PARAM_STR,32);
$result->bindParam(':hnr', $daten['hnr'], PDO::PARAM_STR,7);
$result->bindParam(':geb_tag', $daten['geb_tag'], PDO::PARAM_STR,2);
$result->bindParam(':geb_mon', $daten['geb_mon'], PDO::PARAM_STR,2);
$result->bindParam(':geb_jahr', $daten['geb_jahr'], PDO::PARAM_STR,4);
$result->bindParam(':code', $daten['code'], PDO::PARAM_STR,32);
$result->execute();
if($result->rowCount()==1)
{
print"Datensatz wurde eingetragen";
return true;
}
else
return false;
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
}
}
?>
-
04.02.12 23:22 #10
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Dann probier doch einfach mal aus, was dir var_dump von $tmp ausgibt. Einmal im Fall, wo du weißt, dass der Nutzer existiert, und einmal, wo du weißt, dass er nicht existiert. Und dann natürlich hier posten.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
also das ist jetzt Quatsch. Wenn die u_id, die der Nutzer bestimmt hat, leer ist, dann soll der Nutzer existieren?!.PHP-Code:
if($tmp['u_id']=="")
{
$this->userExist=true;
}
Wohl dann eher so:
Aber mal davon abgesehen ist da ja viel arbeiten mit der Glaskugel - mich würde mal der var_dump der '$tmp' interessieren...PHP-Code:if($tmp['u_id']!="")
{
$this->userExist=true;
}
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
Ich weiß, blöde Frage aber wo muss ich das einfügen damit auch was ausgegeben wird?
-
04.02.12 23:50 #13
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Erstmal: facepalm. Ansonsten: schreib es direkt nach deinem fetchAll.
Geändert von einfach nur crack (05.02.12 um 00:08 Uhr)
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Hallo Divo1984,
poste mal bitte beide Klassen und die Stelle wo Du das Objekt von userManagement erstellst.
Du hast vollkommen Recht.
Gruß
//EDIT
Teste es mal bitte mit dieser Methode:
Achso, mMn sollten Objektmethoden nicht mit einem Großbuchstaben anfangen.Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public function UserExist( $user ) { try { $sql = "SELECT 1 FROM user WHERE u_uname = '$user'"; $result = $this->dbh->query( $sql ); if( $result->fetch( PDO::FETCH_ASSOC ) === false ) { $this->userExist = false; } else { $this->userExist = true; } } catch ( PDOException $e ) { echo $e->getMessage(); } }
Geändert von Raisch (05.02.12 um 00:17 Uhr)
-
Danke sehr, das geht
Ähnliche Themen
-
ResultSet.next gibt immer false.
Von Mikrowelle im Forum JavaAntworten: 17Letzter Beitrag: 24.04.11, 17:22 -
ASP.NET MVC Request.IsAjaxRequest() ist immer false
Von ju007 im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 12.08.10, 08:29 -
mysql_query liefert immer false
Von HPB im Forum PHPAntworten: 4Letzter Beitrag: 17.09.07, 11:27 -
C++ Net - Ein If auf ein String immer false
Von pibr im Forum .NET ArchivAntworten: 3Letzter Beitrag: 26.07.05, 10:39 -
is_int() immer false?
Von Wolfsbein im Forum PHPAntworten: 4Letzter Beitrag: 28.11.02, 16:00





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren