PDA

Bekijk Volledige Versie : hulp gezocht bij stukje code



Mike
05/01/04, 22:34
Hi all,

Ik heb een probleem, waar ik ook na lang zoeken geen oplossing voor
heb weten te vinden, vandaar deze post in de hoop dat een van jullie
een oplossing heeft.

Het gaat om het opvragen van een password uit de tabel 'preferences'

Op grond van de in te voeren 'nick' moet aan de hand van de playerID
in de tabel 'preferences' het emailadres worden opgezocht... en
vervolgens verzonden.

De onderstaande string geeft min of meer aan wat de bedoeling is...
alleen ontbreekt de koppeling met de playerID... Ik kom er niet uit...

Ik hoop dat iemand mij kan helpen.

vr.gr.
Mike


$p = mysql_query("SELECT * FROM players where nick='$nick' AND FROM
preferences WHERE emailnotification='$email'")

Hieronder de twee tabellen en de code waar bovenstaande string in
staat.


TABEL: players

playerID int(11) Nee auto_increment
password char(16) Nee
firstName char(20) Nee
lastName char(20) Nee
nick char(20) Nee
banned smallint(6) Nee 0
isAdmin tinyint(4) Nee 0
lastAccess datetime Ja NULL


1 geheim voornaam achternaam nickname 0 0
2004-01-05 20:56:34

TABEL: preferences

playerID int(11) Nee 0
preference char(20) Nee
value char(50) Ja NULL

vb: 1 emailnotification naam@domein.com



<?
require 'connectdb.php';


function erro($msg){

echo "<BR><BR><center><font size=4 face=arial>";
echo $msg;
echo "<BR><BR><input type=button value='Ga terug'
onClick='history.go(-1)'></center></font>";
exit;
}

$nick = strip_tags($_POST[nick]);
$action = $_POST[action];

if ($action == '1'){
$v1 = strpos($email,"@");
$v2 = strpos($email,".");

if (!(($v1>0)&&($v2>0)))
erro("Invalid e-mail address");

$RA=getenv("X_FORWARDED_FOR");
if($RA=="")
$RA=getenv("REMOTE_ADDR");


// dit gedeelte

$p = mysql_query("SELECT * FROM preferences WHERE
emailnotification='$email' AND FROM players where nick='$nick'")

or die("select error");

if (mysql_num_rows($p) == 0)
erro("Dit emailadres en/of nickname zit niet in onze
database");

$row = mysql_fetch_array($p);

mail($email,"Voornaam Achternaam","

Hier is je password:

Username: $row[nick]
Password: $row[password]


$CFG_SITE_URL

","from: $CFG_MAILADDRESS");


echo "
Je password is verzonden naar het emailadres wat je hebt
opgegeven bij de registratie!<BR>


<a href=index.php>Terug naar de voorpagina</a>";

}
else{
?>
<head>
</head>

<body bgcolor=white>


<font face=verdana size=2>Password vergeten? Vul je nickname en je
emailadres wat je hebt gebruikt
bij het aanmelden. <BR><BR>
<form method=post action=forgotpassword.php>
<input type=hidden name=action value=1>
<table border=0>
<tr><td>Nickname</td><td><input type=text name=nick></td></tr>
<tr><td>E-mail</td><td><input type=text name=email></td></tr>
<tr><td colspan=2>
<!-- <input type=button onClick="history.go(-1)"
value="annuleren">&nbsp;&nbsp;-->
<input type=submit value="versturen"></td></tr>
</table>
</form>



</body>

</center>
</div>
</td></tr>
</table>

</html>

<?
}
?>

Alex
05/01/04, 22:34
Mike wrote:

> Ik heb een probleem, waar ik ook na lang zoeken geen oplossing voor
> heb weten te vinden, vandaar deze post in de hoop dat een van jullie
> een oplossing heeft.
> Het gaat om het opvragen van een password uit de tabel 'preferences'
> Op grond van de in te voeren 'nick' moet aan de hand van de playerID
> in de tabel 'preferences' het emailadres worden opgezocht... en
> vervolgens verzonden.

> $p = mysql_query("SELECT * FROM players where nick='$nick' AND FROM
> preferences WHERE emailnotification='$email'")

Je haalt de informatie op uit twee verschillende tabellen, daarom zal
bovenstaande sql-statement niet gaan werken.
Je kunt het volgende doen
1) Je maakt twee verschillende queries
2) Je maakt één query

Uit het hoofdje, dus er kunnen fouten in zitten.

Oplossing 1:

$p = mysql_query("SELECT * FROM players WHERE nick = '$nick';
$row = mysql_fetch_array($p);
$naam = $row[nick];
$pid = $row[playerID];
$tweede_query = mysql_query("SELECT * FROM preferences WHERE playerID =
'$pid';
$row = mysql_fetch_array($tweede_query);
$email = $row[password];

Oplossing 2:
$p = mysql_query("SELECT * FROM players INNER JOIN preferences ON
player.Player_ID = preferences.player_ID;
$row = mysql_fetch_array($p);
$naam = $row[nick];
$email = $row[password];


Alex

Daniel Tryba
05/01/04, 22:45
Mike <mike@jeweetwel.net> wrote:
> Ik hoop dat iemand mij kan helpen.

Lees de documentatie en je kan je zelf helpen. Je moet alleen nog even
weten dat wat je wilt een JOIN in SQL heet.

> $p = mysql_query("SELECT * FROM players where nick='$nick' AND FROM
> preferences WHERE emailnotification='$email'")

Bekijken
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#JOIN

Onder 'Some examples:' voldoet voorbeeld 1 bijna (wellicht dat de zelfde
naam voor het playerid problemen geeft)
[knip zeer enge code (zet error reporting maar eens op E_ALL]

--

Daniel Tryba

Internicserver
09/01/04, 19:00
Linux Tips, Firewall

deutsch - http://www.webzentrum.de
english - http://www.comserver.net