login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hoe kan ik dit sneller doen?

Offline ikki007 - 18/12/2006 21:04
Avatar van ikki007Gouden medailleGouden medaille

PHP ver gevorderde
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?

  1. $ingelogdegebruiker = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  2. $registratiedatum = mysql_query("SELECT datum FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  3. $email = mysql_query("SELECT email FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  4. $gebruikerslevel = mysql_query("SELECT gebruikerslevel FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  5. $voornaam = mysql_query("SELECT voornaam FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  6. $geslacht = mysql_query("SELECT geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  7.  
  8. // Hier even wat info in de sessie plaatsen
  9. $_SESSION['gebruiker'] = mysql_result($gebruikerzoeken, 0);
  10. $_SESSION['gebruikersnaam'] = mysql_result($ingelogdegebruiker, 0);
  11. $_SESSION['registratiedatum'] = mysql_result($registratiedatum, 0);
  12. $_SESSION['email'] = mysql_result($email, 0);
  13. $_SESSION['gebruikerslevel'] = mysql_result($gebruikerslevel, 0);
  14. $_SESSION['voornaam'] = mysql_result($voornaam, 0);
  15. $_SESSION['geslacht'] = mysql_result($geslacht, 0);

12 antwoorden

Gesponsorde links
Offline vinTage - 18/12/2006 21:16
Avatar van vinTage Nieuw lid Geen 6 qry's doen, maar gwn eentje en dan in een arraytje oid fetcen.
Offline Chupskie - 18/12/2006 21:18 (laatste wijziging 18/12/2006 21:20)
Avatar van Chupskie MySQL beginner 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!

Succes
-Chupskie

edit: typo
Offline ikki007 - 18/12/2006 21:21
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Ik ga die manier maar gebruiken Chupskie ;)
Lijkt me toch beter..

@jvriet, kan je me dat is uitleggen, misschien handig voor een andere keer 
Offline vinTage - 18/12/2006 21:23 (laatste wijziging 18/12/2006 21:24)
Avatar van vinTage Nieuw lid lees de post van Chupskie, als je die snapt, weet je gelijk wat ik heb gezegd in minder woorden 

edit, okay, ik heb wel wat msn taal gebruikt
Offline Chupskie - 18/12/2006 21:41
Avatar van Chupskie MySQL beginner Klein beetje maar, jvriet    

@ikki007:
Succes, en als je nog vragen hebt, horen we het wel!
Offline xSc - 19/12/2006 09:10
Avatar van xSc Onbekend Kom op jongens, even concreet graag.

Je kunt dit in een query doen:

Bijv.

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.
Offline ikki007 - 19/12/2006 10:07
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Ik heb het nu zo:

  1. $query = mysql_query("SELECT gebruikersnaam,datum,email,gebruikerslevel,voornaam,geslacht FROM leden WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord'") or die(mysql_error());
  2.  
  3. while ($arr = mysql_fetch_assoc($query)) {
  4. // Hier even wat info in de sessie plaatsen
  5. $_SESSION['gebruiker'] = mysql_result($gebruikerzoeken, 0);
  6. $_SESSION['gebruikersnaam'] = $arr['gebruikersnaam'];
  7. $_SESSION['registratiedatum'] = $arr['datum'];
  8. $_SESSION['email'] = $arr['email'];
  9. $_SESSION['gebruikerslevel'] = $arr['gebruikerslevel'];
  10. $_SESSION['voornaam'] = $arr['voornaam'];
  11. $_SESSION['geslacht'] = $arr['geslacht'];
  12. }


Is dit goed?
Offline stijnhau - 19/12/2006 13:08
Avatar van stijnhau Onbekend 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);
Offline ikki007 - 19/12/2006 15:03
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Bedankt, waar kan ik nederlandse info over while vinden?
Kon het hier op sima niet vinden  
Offline xSc - 19/12/2006 15:07
Avatar van xSc Onbekend Al op de goede weg.

In jouw geval:

(array) $aResultaat = @mysql_fetch_assoc($rQuery);
Offline Ibrahim - 19/12/2006 23:59
Avatar van Ibrahim PHP expert "info" over while (m.b.t. queries)

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 );

Offline Kr4nKz1n - 20/12/2006 10:58 (laatste wijziging 20/12/2006 11:03)
Avatar van Kr4nKz1n Onbekend 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:
  1. <?php
  2. function Information($fId,$fField)
  3. {
  4. $data = mysql_query("SELECT gebruikersnaam, datum, email, gebruikerslevel, voornaam, geslacht FROM leden WHERE id='".$fId."'");
  5. $dat = mysql_fetch_assoc($data);
  6. return $dat[$fField];
  7. }
  8. ?>


Gebruiken op deze manier:
  1. <?php
  2. Information($_SESSION['id'],"email");
  3. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.324s