Hello,

Nu mijn vorige probleem is opgelost en het login systeem werkt zit ik met een nieuw probleem.

Ik wil een sessie variabele punten maken, en die vullen met de waarde in database kolom Punten van de gebruiker die inlogt.

In login.php heb ik dat als volgt opgelost:
<?php
$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);

$punten = $result['Punten'];

$count=mysql_num_rows($result);

if($count==1)
{

$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
$_SESSION['punten'] = $punten;
?>

Het script loopt foutloos, maar dan gaat het door naar de volgende pagina, waar dit staat:

<?
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

if(!isset($_SESSION['naam']))
{
header("location:spel.php");
}

$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
$punten = $_SESSION['punten'];


?>

...

<p><?php echo 'Je hebt ' . $punten . 'punten.' ?></p>


De output is slechts:
"Je hebt punten."
Dus totaal zonder variabele..

Iemand enig idee?
Bouw foutafhandeling in voor de query's en zet dit bovenin je script
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest
?>
Ja dat staat in al mn scripts al bovenin......
- Variabelen buiten quotes.
- Selecteer de velden die je wilt hebben, gebruik niet *.
- Gebruik [php]mysql_fetch_assoc[/php].
Als je een foutmelding o.i.d. krijgt geef ons dan de melding.
hai=)
Welke variabelen bedoel je? Want volgens mij staan ze allemaal buiten quotes(a)
mysql_fetch_assoc zit er al in... Vanuit de link:
"mysql_fetch_assoc() is equivalent to calling mysql_fetch_array() with MYSQL_ASSOC for the optional second parameter. It only returns an associative array. " Dat doe ik al..

Als laatste, dat zou toch niet moeten uitmaken? Ik gebruik * omdat ik dan aanzienlijk minder kans heb op spelfouten + ik test mijn query's altijd op de database zelf en dit werkt, ook met alleen inloggen en het recht meegeven werkt ie.....

[size=xsmall]Toevoeging op 01/11/2010 19:02:35:[/size]

Ik heb het ook met mysql_fetch_assoc geprobeert:

<?php
while ($row = mysql_fetch_assoc($result))
?>

Het stomme is dat van het volgende:
<?php
$punten = $row['Punten'];
$achternaam = $row['Achternaam'];
?>

Alleen het deel Punten werkt. De referenties naar de database kloppen. Maar anders gezegd, werkt van de Varchar en de int alleen de int. Kan het daar aan liggen?
Mark Tielemans op 01/11/2010 18:19:23

hai=)
Welke variabelen bedoel je? Want volgens mij staan ze allemaal buiten quotes(a)
mysql_fetch_assoc zit er al in... Vanuit de link:
"mysql_fetch_assoc() is equivalent to calling mysql_fetch_array() with MYSQL_ASSOC for the optional second parameter. It only returns an associative array. " Dat doe ik al..

Als laatste, dat zou toch niet moeten uitmaken? Ik gebruik * omdat ik dan aanzienlijk minder kans heb op spelfouten + ik test mijn query's altijd op de database zelf en dit werkt, ook met alleen inloggen en het recht meegeven werkt ie.....

$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0"; <- Alle variabelen zitten daar binnen quotes.
Als fetch_array met nog een tweede parameter hetzelfde is als fetch_assoc, waarom gebruik je die dan niet? Dat is veel handiger.

Neen, je moet juist alle velden opnoemen die je wilt hebben want daaraan kan je zien dat je query correct is. Ook is SQL self documenting, dus door naar de query te kijken weet je wat er gebeurd. Verder is het ook nog zo dat * een wildcard is dus in principe hoeft de database niet alle kolommen terug te geven.

Verder raad ik je aan om je SQL in hoofdletters te doen en alle kolommen e.d. in kleine letters. Dus niet Recht, maar recht.

En je kunt ook nog de query tijdens debuggen echo'en om te kijken wat de query precies was.
Ik ga liever niet aan de query rommelen, gezien hij werkt nu zoals ie is voor inloggen en punten meegeven, dus het kan daar niet aan liggen, naast dat ik m op de database getest heb voor output..

Fetch assoc heb ik inmiddels ingevoegd, wist niet van het bestaan af.

Ik weet dat het niet aan de query ligt.
Heb je op de login.php pagina wel session_start gedaan?
Yep.. net als op de volgende pagina.. Het login systeem werkt ook gewoon, en waarde uit database opslaan van punten en afdrukken op volgende pagina werkt ook, maar op dezelfde manier dat voor de voornaam doen wil niet werken...

[size=xsmall]Toevoeging op 02/11/2010 00:36:29:[/size]

Ik heb het inmiddels op een andere manier opgelost :D

<?php
$sql="SELECT Gebruikersnaam, Naam, Punten, Klas, Groep FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);

$count=mysql_num_rows($result);


$i=0;
while ($i < $count)
{
$vnaam=mysql_result($result,$i,"Naam");
$pts=mysql_result($result,$i,"Punten");
$kls=mysql_result($result,$i,"Klas");
$i++;
}



if($count==1)
{
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
$_SESSION['punten'] = $pts;
$_SESSION['klas'] = $kls;
$_SESSION['voornaam'] = $vnaam;

?>

Werkt perfecto! =)

Bedankt voor het meedenken!

Reageren