Ik gebruik deze code zodra er ingelogd is om wat dingetje in een sessie te zetten die ik op meerdere pagina's terug laat komen.
Alleen ik heb het gevoel dat dit sneller kan, maar hoe?
$ingelogdegebruiker = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$registratiedatum = mysql_query("SELECT datum FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$email = mysql_query("SELECT email FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$gebruikerslevel = mysql_query("SELECT gebruikerslevel FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$voornaam = mysql_query("SELECT voornaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$geslacht = mysql_query("SELECT geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
// Hier even wat info in de sessie plaatsen
$_SESSION['gebruiker'] = mysql_result($gebruikerzoeken, 0);
$_SESSION['gebruikersnaam'] = mysql_result($ingelogdegebruiker, 0);
$_SESSION['registratiedatum'] = mysql_result($registratiedatum, 0);
$_SESSION['email'] = mysql_result($email, 0);
$_SESSION['gebruikerslevel'] = mysql_result($gebruikerslevel, 0);
$_SESSION['voornaam'] = mysql_result($voornaam, 0);
$_SESSION['geslacht'] = mysql_result($geslacht, 0);
$ingelogdegebruiker=mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$registratiedatum=mysql_query("SELECT datum FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$email=mysql_query("SELECT email FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$gebruikerslevel=mysql_query("SELECT gebruikerslevel FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$voornaam=mysql_query("SELECT voornaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
$geslacht=mysql_query("SELECT geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
Je kunt alles in 1 query doen, omdat je maar 1 tabel gebruikt.
Je leest dan je naam, geslacht, level, email, enz uit via een while.
Daarna zet je allles netjes in sessies.
Wil je zoiezo alles in een sessie hebben staan?
Je kunt ook alleen bijv. het id en de gebr. naam opslaan.
En iedere keer als je meer gegevens nodig hebt, het id en de gebruikersnaam vergelijken met de gegevens uit het database, en dan weer met een query eruit halen.
Dit lijkt me een betere optie, dan wat je hierboven hebt staan!
SELECT naam, adres, woonplaats FROM tabel WHERE enz. enz.
Je kunt ook gebruik maken van JOINS (een SELECT of voorwaarden uit meerdere tabellen). Een JOIN is wel makkelijk, maar trager dan een normale query. Hoe snel je query is, hangt natuurlijk van een aantal zaken af: hoe is je tabel opgebouwd, maak je gebruik van keys, hoe koppel je tabellen, hoeveel tabellen gebruik je bij FROM, etc.
Kijk ook even naar mysql_fetch_assoc(). Dat is een functie om de resultaten in een array te plaatsen.
Handig is, zeker bij grote queries, om je geheugen regelmatig op te schonen met mysql_free_result(). Wanneer je dat nodig hebt, moet je zelf even uitzoeken.
$query = mysql_query("SELECT gebruikersnaam,datum,email,gebruikerslevel,voornaam,geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
while ($arr = mysql_fetch_assoc($query)) {
// Hier even wat info in de sessie plaatsen
$_SESSION['gebruiker'] = mysql_result($gebruikerzoeken, 0);
$_SESSION['gebruikersnaam'] = $arr['gebruikersnaam'];
$_SESSION['registratiedatum'] = $arr['datum'];
$_SESSION['email'] = $arr['email'];
$_SESSION['gebruikerslevel'] = $arr['gebruikerslevel'];
$_SESSION['voornaam'] = $arr['voornaam'];
$_SESSION['geslacht'] = $arr['geslacht'];
}
$query=mysql_query("SELECT gebruikersnaam,datum,email,gebruikerslevel,voornaam,geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
jah en nee.
het is al veel beter geworden maar wat doe je een while.
die while wil zeggen dat er meer als 1 lid aan die voorwaarden kan voldoen(meer als 1 lid met login stijnhau en zelfde pasw dat kan niet he).
dus lijn 12 mag weg en liojn 3 is dit:
$arr = mysql_fetch_assoc($query);
Je hebt een query; je wilt dus gegevens uit de DB gaan halen.
Je moet bedenken bij deze query: hoeveel resultaten verwacht ik?
Als dit meer dan 1 is, dan gebruik je een while loop, anders gewoon:
$var = mysql_fetch_....( $query );
Het handigste is gewoon om functies te gebruiken.
Gebruik bijv. 2 sessions.
1: id nummer van de gebruiker,
2: een hash code die tevens wordt opgeslagen in de leden tabel.
Maak een functie die d.m.v. je id session de rest van de gegevens pakt bijv: