Data uit database naar variable

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark Tielemans

Mark Tielemans

01/11/2010 12:57:55
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo  'Je hebt ' . $punten . 'punten.' ?>
</p>


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

Iemand enig idee?
Gewijzigd op 01/11/2010 12:58:24 door Mark Tielemans
 
PHP hulp

PHP hulp

19/04/2024 23:54:52
 
- SanThe -

- SanThe -

01/11/2010 13:39:07
Quote Anchor link
Als je geen error of notice krijgt dan zal de var leeg zijn.
 
Mark Tielemans

Mark Tielemans

01/11/2010 13:42:57
Quote Anchor link
Ja dat dacht ik inderdaad ook al.

Ik heb het nu net opgelost =)

Ik had een regel uit dat script van internet, waar stond dat ie werkte, maar ik heb er nog wat aan toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
while($row = mysql_fetch_array($result, MYSQL_ASSOC))

$punten = $row['Punten'];
?>


Nu werkt het wel =)

Thanks voor het meedenken in elk geval!
 
Benny Lava

Benny Lava

01/11/2010 13:43:55
Quote Anchor link
Je bent vergeten om de informatie die vanuit de query komt in een array of iets te zetten. Ik zou het volgende doen overigens een klein aanpassing in de code om in de toekomst problemen te voorkomen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    $sql
= 'SELECT *
            FROM '
. $tbl_name .'
            WHERE Gebruikersnaam='
. mysql_real_escape_string($naam) .'
                AND Wachtwoord='
. mysql_real_escape_string($wachtwoord) .'
                AND Recht=0'
;
    $query = mysql_query($sql);
    $result = mysql_fetch_assoc($query);

    $punten = $result['Punten'];

    $count = mysql_num_rows($result);

    if($count == 1) {
        $_SESSION['naam'] = $naam;
        $_SESSION['recht'] = $recht;
        $_SESSION['punten'] = $punten;
    }

?>
 
Mark Tielemans

Mark Tielemans

01/11/2010 13:52:52
Quote Anchor link
Ja dat in een array zetten is wat ik inmiddels met die regel heb gedaan =) Maar ik snap niet waarom dat moet? Wat is een array eigenlijk precies?
 
Benny Lava

Benny Lava

01/11/2010 13:56:41
Quote Anchor link
Even Googlen en je zult waarschijnlijk het antwoord vinden. Komt erop neer dat een array een rij met waardes is, dus je zult het in die format moeten plaatsen wil je er dus zo mee omgaan.
 
Mark Tielemans

Mark Tielemans

01/11/2010 14:04:26
Quote Anchor link
Ik heb het meermaals gegoogled maar snap het nog niet :P

nu heb ik nog precies zo'n zelfde regel met nieuwe variabelen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$voornaam
= $result['Naam'];
?>


maar dat werkt weer niet...
 
Benny Lava

Benny Lava

01/11/2010 14:09:27
Quote Anchor link
Mark Tielemans op 01/11/2010 14:04:26:
Ik heb het meermaals gegoogled maar snap het nog niet :P

nu heb ik nog precies zo'n zelfde regel met nieuwe variabelen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$voornaam
= $result['Naam'];
?>


maar dat werkt weer niet...


De resultaten vanuit de query zijn gerelateerd aan de naam die ze dus hebben in de database. En vanuit je query neem ik dan aan dat het veld dat je bedoeld dus 'Gebruikersnaam' zou moeten heten in plaats van 'Naam'.
 
Mark Tielemans

Mark Tielemans

01/11/2010 14:15:19
Quote Anchor link
Nee, er zijn de velden Gebruikersnaam, Naam, Tussenvoegsel en Achternaam (en natuurlijk Punten).. Dus hij zou gewoon moeten werken.. Ook Achternaam doet t niet.. Zelfde fout als punten in eerste instantie gaf, de variabele verschijnt gewoon niet, zelfs geen php error..
 
- SanThe -

- SanThe -

01/11/2010 14:20:27
Quote Anchor link
Zo te zien werk jij met $row en niet met $result.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$voornaam
= $row['Naam'];
?>
 
Mark Tielemans

Mark Tielemans

01/11/2010 14:25:27
Quote Anchor link
Sorry, kopieer foutje.. In mn script gebruik ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$sql
="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))

$punten = $row['Punten'];
$achternaam = $row['Achternaam'];

?>


En dat wil niet werken...
 
- SanThe -

- SanThe -

01/11/2010 15:18:53
Quote Anchor link
Bouw foutafhandeling in voor de query's en zet dit bovenin je script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest
?>
 
Mark Tielemans

Mark Tielemans

01/11/2010 16:43:28
Quote Anchor link
Ja dat staat in al mn scripts al bovenin......
 

01/11/2010 16:46:00
Quote Anchor link
- Variabelen buiten quotes.
- Selecteer de velden die je wilt hebben, gebruik niet *.
- Gebruik mysql_fetch_assoc.
Als je een foutmelding o.i.d. krijgt geef ons dan de melding.
 
Mark Tielemans

Mark Tielemans

01/11/2010 18:19:23
Quote Anchor link
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.....

Toevoeging op 01/11/2010 19:02:35:

Ik heb het ook met mysql_fetch_assoc geprobeert:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
while ($row = mysql_fetch_assoc($result))
?>


Het stomme is dat van het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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?
 

01/11/2010 19:13:19
Quote Anchor link
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.
 
Mark Tielemans

Mark Tielemans

01/11/2010 19:27:24
Quote Anchor link
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.
 

01/11/2010 19:31:25
Quote Anchor link
Heb je op de login.php pagina wel session_start gedaan?
 
Mark Tielemans

Mark Tielemans

01/11/2010 20:47:54
Quote Anchor link
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...

Toevoeging op 02/11/2010 00:36:29:

Ik heb het inmiddels op een andere manier opgelost :D

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.