Fehler beim Variablen initialisieren?

Alles, was MySQL betrifft, kann hier besprochen werden.

Fehler beim Variablen initialisieren?

Postby Kristian Marcroft » 04. January 2003 13:44

Hi again,

sooo... da mir bisher keiner helfen konnte habe ich selbst weiter dran rumgespielt, diesmal eine gekürzte Version....

Code:

<?php
if ( isset($username) AND isset($pass) AND isset($email) AND isset($vorname) AND isset($nachname) AND isset($addmember) )
{
include("config");
$link = mysql_connect( $dbserver, $dbuser, $dbpass );
$addmember = "INSERT INTO members ( username, userpass, email, vorname, nachname ) VALUES( '$username', '$userpass', '$email', '$vorname', '$nachname' )";

mysql_select_db( $dbname, $link )
or die("Konnte DB nicht öffnen");
mysql_query( $addmember, $link )
or die("Konnte datensatz der Tabelle nicht hinzufügen");
mysql_close ( $link );
}
else
{
echo "ERROR";
}
?>



So das funktioniert in soweit, das ich noch folgende Fehlermeldungen bekomme:

Zitat:

Notice: Undefined variable: username in c:\wampp13cs\htdocs\eisfair\register.php on line 45

Notice: Undefined variable: userpass in c:\wampp13cs\htdocs\eisfair\register.php on line 45

Notice: Undefined variable: email in c:\wampp13cs\htdocs\eisfair\register.php on line 45

Notice: Undefined variable: vorname in c:\wampp13cs\htdocs\eisfair\register.php on line 45

Notice: Undefined variable: nachname in c:\wampp13cs\htdocs\eisfair\register.php on line 45



Fülle ich einmal das Formular aus, so wird es nicht in die Tabelle geschrieben, fülle ich es 2 mal aus, so werden die Daten in die Tabelle geschrieben.
Ich denk ich weiss auch schon woran es liegt.
Die Variablen:
$username
$userpass
$email
$vorname
$nachname

Haben ja beim ersten Aufruf keinen Wert.
Somit kommen obige Fehlermeldungen.
Bei der ersten Eingabe bekommen Sie einen Wert.
Sodas beim 2. Aufruf die Fehlermeldungen weg sind.
Nun weisst das natürlich darauf hin, das ich nen Fehler mache.
Aber welchen?
Irgendwas mit dem if(isset ($variable)) aber ich weiss nicht was?

Kann mir da jemand nen Tipp geben?

Danke schonmal

So long
KriS

X'Post PHP, SQL
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby Twix3k » 04. January 2003 13:50

Moin Kris,

das ist ne Änderung ab *grübel* PHP 4.2.1 (glaube ich)

Wenn du Daten via Formular an eine Datei übergibst, dann müssen diese Variablen anders aufgerufen werden...
Hast du ein Formular mit der Methode GET, dann musst du die Variablen im Script so aufrufen:
$_GET["meinevariable"];

Bei Post:
$_POST["blabla"];

siehe http://www.php.net/manual/de/security.r ... lobals.php

Grüße,
Twix
I see the sadness in their eyes, melancholy in their cries
Devoid of all the passion, the human spirit cannot die
Look at the pain around me, this is what I cry for
Look at the pain around me, this is what I'll die for
User avatar
Twix3k
 
Posts: 120
Joined: 29. December 2002 15:48

Postby boppy » 04. January 2003 13:53

*schweißWegwisch*

Jeder 2te post scheitert am gleichen problem *hoil*

in der PHP.INI bei dir steht:

error_reporting = E_ALL

Es sollte allerdings heißen:

error_reporting = E_ALL & ~ ( E_NOTICE )

Dann kommen die NOTICE meldungen nimmer...
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby Twix3k » 04. January 2003 13:54

boppy: Was bringt's denn, wenn die Fehlermeldungen abgeschalten sind, das Script aber trotzdem nicht geht? ;)

Grüße,
Twix
I see the sadness in their eyes, melancholy in their cries
Devoid of all the passion, the human spirit cannot die
Look at the pain around me, this is what I cry for
Look at the pain around me, this is what I'll die for
User avatar
Twix3k
 
Posts: 120
Joined: 29. December 2002 15:48

Postby boppy » 04. January 2003 13:58

Das problem liegt darin, dass ALLE alten PHP versionen standartmäßig die NOTICEs aus hatten und deshalb NIEMAND eine variable initialisiert. Wozu auch!?

versuchs einfach mal :)
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby Kristian Marcroft » 04. January 2003 14:02

Hi Jungs :)

Danke erstmal für die schnellen Antworten,
aber irgendwie weiss ich nciht so genau was Ihr meint.
Die Antwort vom boppy hab ich schon mal gehört, aber wie schon erwähnt, löst das ja nicht das Problem.

Und mit der anderen Antwort kann ich nicht wirklich was anfangen :-(
Twix3k könntest dir mal folgendes ansehen:
[url]
http://community.apachefriends.org/f//viewtopic.php?t=52
[/url]

Wäre nett...
Danke :)

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby Kristian Marcroft » 04. January 2003 14:13

Hi again...

Soo... nun habe ich auch boppy's Variante mal versucht.
Ist ja schon mal nicht schlecht :) *g*
Aber....

Irgendwo hab ich dann trotzdem nen Fehler drin, da sobald ich das Script aufrufe, ein leerer Datensatz in die SQL Tabelle geschrieben wird.

Nochn Tipp?

Danke
So long
KriS

P.S: http://community.apachefriends.org/f//viewtopic.php?t=52 <-- Ist das komplette Script
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby Twix3k » 04. January 2003 14:21

Das Script hab ich mir mal flüchtig angeschaut....

Aaallsooooo:

Dein Script benutzt die Methode Post ;)
Wenn du nun über formular.php (ich weiß jetzt nicht, wie deine Dateien heißen) die Datei script.php aufrufst, kannst du auf die Variablen vom Formular nur zugreifen, wenn du das folgendermaßen machst: $_POST["userpass"]; (oder sowas)

Hier mal ein kleines Beispiel...

formular.php:
Code: Select all
<form action=login.php method=post>
name: <input type=text name=username><br>
pw: <input type=password name=userpw>
</form>


login.php:
Code: Select all
<?php
echo "Dein Username lautet: ".$_POST["username"]."<br>";
echo "Das PW dazu lautet: ".$_POST["userpw"];
?>


So schwer ist das gar net ;)
Probier das Beispiel mal aus, daraus wirst du dann sicher schlauer :)

Grüße,
Twix
I see the sadness in their eyes, melancholy in their cries
Devoid of all the passion, the human spirit cannot die
Look at the pain around me, this is what I cry for
Look at the pain around me, this is what I'll die for
User avatar
Twix3k
 
Posts: 120
Joined: 29. December 2002 15:48

Postby Kristian Marcroft » 04. January 2003 15:14

Hi again,

Ok geschafft :)
Danke Twix3k...
Nun funzt es :)

So nun habe ich aber noch eine Frage ;-)
Is zwar hier falsch aber egal :)
Wie würde es aussehen, wenn vorher eine abfrage stattfinden sollte ob der user schon existiert?
der username darf logischerweise nur 1 mal vorkommen.

Danke schonmal
So long

KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby boppy » 04. January 2003 15:19

$output = mysql_db_query($sql,"SELECT * FROM members WHERE user='". $_POST['username']);
if(mysql_num_rows($output)!=1){ insert }
else { echo("User gibbet schon"); }

das is alles :D
da wo ich insert geschrieben habe, muss dann deine INSERT - anweisung hin
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby Kristian Marcroft » 04. January 2003 15:37

Hi boppy,

Danke schonmal für die Hilfe,
aber :)

Code: Select all
<?php
include("config");
$link = mysql_connect( $dbserver, $dbuser, $dbpass );

$addmember = "INSERT INTO members ( username, userpass, email, vorname, nachname ) VALUES( '$username', '$userpass', '$email', '$vorname', '$nachname' )";

$output = mysql_db_query($link, "SELECT * FROM members WHERE username='".$_POST['username']);

if(mysql_num_rows($output)!=1){ $addmember; }
else { echo("User gibbet schon"); }

mysql_select_db( $dbname, $link )
or die("Konnte DB nicht öffnen");
mysql_close ( $link );
?>


So sieht es jetzt aus...
Kommt aber folgende Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\wampp13cs\htdocs\eisfair\logon.php on line 41


Line 40 - 42

Code: Select all
$output = mysql_db_query($link, "SELECT * FROM members WHERE username='".$_POST['username']);
if(mysql_num_rows($output)!=1){ $addmember; }
else { echo("User gibbet schon"); }


Hilfe?

Danke
So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby boppy » 04. January 2003 19:40

Code: Select all
<?php
include("config");
$link = mysql_connect( $dbserver, $dbuser, $dbpass );

$addmember = "INSERT INTO members ( username, userpass, email, vorname, nachname ) VALUES( '$username', '$userpass', '$email', '$vorname', '$nachname' )";

$output = mysql_db_query($link, "SELECT * FROM members WHERE username='".$_POST['username']."'");

if(mysql_num_rows($output)!=1){ mysql_db_query($link, "$addmember"); }
else { echo("User gibbet schon"); }

mysql_select_db( $dbname, $link )
or die("Konnte DB nicht öffnen");
mysql_close ( $link );
?>
Das hingegen sollte laufen (da war noch ein fehler beim insert!!)
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby Kristian Marcroft » 05. January 2003 03:07

HI boppy,

das hat leider auch nicht funktioniert...
also habe ich mir gedacht ich versuchs mal so:

Code: Select all
<?php
include("config");
$link = mysql_connect( $dbserver, $dbuser, $dbpass );
$abfrage = "SELECT username FROM users WHERE username='$username'";
$ergebnis = mysql_query( $abfrage, $link );
while ($row = mysql_fetch_array($ergebnis)) {
                        $user_existiert = 1;
                        echo "User gibbet schon";
                }
if ($user_existiert == 0){
$addmember = "INSERT INTO members ( username, userpass, email, vorname, nachname ) VALUES( '$username', '$userpass', '$email', '$vorname', '$nachname' )";
mysql_select_db( $dbname, $link )
or die("Konnte DB nicht öffnen");
mysql_query( $addmember, $link )
or die("Konnte datensatz der Tabelle nicht hinzufügen");
mysql_close ( $link );
}
?>


Nur leider funzt aus auch nicht...

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\wampp13cs\htdocs\eisfair\logon3.php on line 42


Irgendwie sobald mysql_num_rows() ins spiel kommt, mag er nemmer...
Bitte um Hilfe?

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby Twix3k » 05. January 2003 12:23

->
Code: Select all
$sql = mysql_num_rows ( mysql_query ( "SELECT id FROM ".$tabelle." WHERE id = '".$_POST[f_id]."'" ) );


So siehts bei einem meiner Scripts aus und funktioniert einwandfrei.

Code: Select all
if ( $sql != 0 ) {
die ("User ist bereits eingetragen!");
} else {
echo "alles i.O.";
}
I see the sadness in their eyes, melancholy in their cries
Devoid of all the passion, the human spirit cannot die
Look at the pain around me, this is what I cry for
Look at the pain around me, this is what I'll die for
User avatar
Twix3k
 
Posts: 120
Joined: 29. December 2002 15:48

Postby Kristian Marcroft » 05. January 2003 16:04

Hi again...

also so sieht es jetzt bei mir aus und ich bekomme keine Fehler mehr angezeigt ( Was aber nicht bedeutet das es funzt :) )

Code: Select all
<?php
include("config");

if($link = mysql_connect( $dbserver, $dbuser, $dbpass)) echo "SQL Verbindung funzt<br>"; else echo "SQL Verbindung funzt net<br>";

$link = mysql_connect( $dbserver, $dbuser, $dbpass );
mysql_select_db( $dbname, $link );
$abfrage = 'SELECT username FROM members WHERE username="$username"';
$ergebnis = mysql_query( $abfrage, $link )
or die ("ERROR");
if($ergebnis = mysql_query( $abfrage, $link )) echo "funzt2<br>"; else echo "funzt net<br>".$mysql_error;
if(mysql_num_rows(mysql_query( $abfrage, $link )) == 0)
{
$user_existiert = 0;
}
else
{
$user_existiert = 1;
}
echo $user_existiert;
if ($user_existiert == 0){
$addmember = "INSERT INTO members ( username, userpass, email, vorname, nachname ) VALUES( '$username', '$userpass', '$email', '$vorname', '$nachname' )";
mysql_select_db( $dbname, $link )
or die("Konnte DB nicht öffnen");
mysql_query( $addmember, $link )
or die("Konnte datensatz der Tabelle nicht hinzufügen");
mysql_close ( $link );
}
else
{
echo "User existiert schon!";
}
?>


Jetzt habe ich das Problem, das $user_existiert immer "0" ist?
Wo habe ich da den Fehler?

Danke
So long

KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Next

Return to MySQL

Who is online

Users browsing this forum: No registered users and 1 guest