Script setzt den Wert in die Variable falsch

Divo1984

Erfahrenes Mitglied
Ich bin grad echt am verzeifeln. Ich habe folgendes Script

PHP:
<?php
class kunde
{
	public $kndNr=0;
	public $dbh;
	
	public function __construct(&$dbh)
	{
		if(is_object($dbh) && ($dbh instanceof PDO))
			$this->dbh=$dbh;
		else
			$this->kndNr=time();
		if(isset($_SESSION['kunde']))
		{
			$this->kndNr=$_SESSION['kunde'];
		}
	}
	public function __destruct()
	{
		#print "Im Deskrutor";
		$_SESSION['kunde'] = $this->kndNr;
	}	
	
	public function getKundenNummer()
	{
		return $this->kndNr=$_SESSION['kunde'];
	}
	public function setKundenNummer($kennung, $passwort)
	{
		$this->kndNr=0;
		
		if(!empty($kennung) && !empty($passwort))
		{
			try 
			{
				$sql="SELECT k_kundennummer
					    FROM ws_kunden
					   WHERE k_kennung=:kennung
					     AND k_passwort=:passwort";
				$result=$this->dbh->prepare($sql);
				$result->bindParam(':kennung', $kennung, PDO::PARAM_STR, 20);
				$result->bindParam(':passwort', $passwort, PDO::PARAM_STR, 32);
				$result->execute();
				
				$tmp=$result->fetchAll();
				if(isset($tmp[0]['k_kundennummer']) && !empty($tmp[0]['k_kundennummer']))
				{
					$this->kndNr=(integer)$tmp[0]['k_kundennummer'];
				}
				$_SESSION['kunde']=$this->kndNr;
				return $this->kndNr;
			} 
			catch (Exception $e) 
			{
				echo $e->getMessage();
			}
		}
	}
	public function setKundenDaten($daten)
	{
		if(!is_array($daten)) return false;
		try 
		{
			$sql="INSERT INTO ws_kunden (k_name, k_vorname, k_plz, k_ort, k_strasse, k_email, k_passwort, k_kennung)
						 		  VALUES(:name,:vorname,:plz,:ort,:strasse,:email,:passwort,:kennung)";
			$result=$this->dbh->prepare($sql);
			$result->bindParam(':name', $daten['name'], PDO::PARAM_STR,30);
			$result->bindParam(':vorname', $daten['vorname'], PDO::PARAM_STR,30);
			$result->bindParam(':plz', $daten['plz'], PDO::PARAM_STR,6);
			$result->bindParam(':ort', $daten['ort'], PDO::PARAM_STR,20);
			$result->bindParam(':strasse', $daten['strasse'], PDO::PARAM_STR,30);
			$result->bindParam(':email', $daten['email'], PDO::PARAM_STR,30);
			$result->bindParam(':passwort', $daten['passwort'], PDO::PARAM_STR,32);
			$result->bindParam(':kennung', $daten['kennung'], PDO::PARAM_STR,20);
			$result->execute();
			if($result->rowCount()==1)
			{
				print"Datensatz wurde eingetragen";
				return true;
			}
			else
				return false;
		}
		catch (PDOException $e)
		{
			echo $e->getMessage();
		}
	}

}
?>

Leider liefert mir dieses, nur den Wert 0 in die Variable kndNr

WEnn ich oben bei der Definition, den Wert 0 weglassen, setzt er gar nichts:(

Kann mir jemand helfen?
 
Wenn du was machst liefert es den Wert 0?
Das ist eine Klasse, die liefert ganz viel versch. Sachen. Dein $this->kndNr wird in dieser eher undurchsichtigen (Code-Komentare währen hilfreich) Klasse mehrfach überschrieben. Also, zeig mal wie du die Klasse instanzierst und was du ausserhalb der Klasse machst um das 0 zu kriegen.
 
Hallo Yaslaw,

schonmal vielen Dank für dein Posting:)

WEnn ich mich anmelde - setzt die Klasse den Wert 0 in die kndNr, das soll aber aus der Datenbank geholt werden - siehe setKundenNummer

Ich gebe die Daten ein und eigentlich sollte dann der Wert 1 aus der DB geholt werden - denn das ist meine Kundennummer...

PHP:
if(isset($_POST['send']))
{
	$art->setKundenNummer($_REQUEST['kennung'], $_REQUEST['passwort']);
}

Das wird aufegerufen, wenn die Eingabe vollzogen wurde!
 

Anhänge

Zuletzt bearbeitet:
if(!empty($kennung) && !empty($passwort))
Hast du diese 2 Werte mal mit var_dump() geprüft?

if(isset($tmp[0]['k_kundennummer']) && !empty($tmp[0]['k_kundennummer']))
Hast du diese 2 Werte mal mit var_dump() geprüft?

Eines von beiden gibt nicht das zurück was du willst. Ergo nimmt er das 0 das du am Anfang der Methode gesetzt hast

PS: Ich öffne hier auf der Arbeit keine fremden Zip-Dateien.....
 
Danke Yaslaw, durch dich habe ich den Fehler gefunden! Der lag daran, dass ich das Passwort falsch übergeben habe! Jetzt klappt es einwandfrei!
 
Zurück