Jerry php op 17/09/2013 21:03:47
Jongens, kunnen we het inderdaad houden op mijn vraag? Want ik ben allemaal aan het zoeken naar een oplossing en zou graag jullie inzet willen wanneer dit kan. ik heb nu dit: ...
Laat me even jouw code van daar wat herschrijven, met commentaar.
Zie eens of het je wat meer vertelt
<?php
class query {
// static betekent dat je niet communiceert met $this-> variabelen (= eigenschappen / properties)
// onnodig - en in mijn ogen verwarrend - om variabelen op te lijsten buiten de functie
public static function select($select, $from, $where=1) {
$res = mysql_query("SELECT " . $select . " FROM " . $from . " WHERE " . $where);
if(false === $res) {
// dit betekent: er is een syntax error in de sql-string
// misschien wil je hier iets anders doen dat false teruggeven?
return false;
}
if(mysql_num_rows($res) > 0) {
// er zijn rijen (minstens 1) gevonden
return $res;
}
else {
// er zijn geen rijen gevonden, maar de sql-string is wel goed geformuleerd.
// Je kan dit zonder probleem in een while(fetch_...) steken; er zullen gewoon geen iteraties worden uitgevoerd. Geen warnings, errors...
// eventueel wil je hier iets anders doen?
return $res;
}
}
}
$con = mysql_connect('localhost', 'root', '');
mysql_select_db('phphulp');
$res = query::select(
"uid, username, email",
"users",
"username='Jef'"
); // SELECT uid, username, email FROM users WHERE username='Jef'
while($row = mysql_fetch_assoc($res)) {
echo '<div>' . $row['username'] . ' - ' . $row['email'] . '</div>';
// als je hier niet komt, is het dat de gevraagde user niet bestaat
}
?>
--------
Jerry php op 17/09/2013 21:54:42
Ik zeg al een paar keer dat ik denk dat ik niet kan echo'en in een functie,
Er wordt altijd heel erg afgeraden om een echo in een functie te steken.
Maar dat geldt voor functies die "af zijn"; functies die werken.
Terwijl je een functie aan het schrijven bent, kan je voorlopig echo's zetten overal waar je niet zeker weet wat de waarde van een variabele is.
Eens de functie werkt, haal je al die echo's weg.
----------
Jerry php op 17/09/2013 20:34:48
mijn doel is eigenlijk nu dat ik ga controleren of de gebruikersnaam en password voorkomen in de database en dan iets returnen
Okay, dan schrijf je een functie. Een functie die een true of false teruggeeft.
Maar je noemt die functie niet "select"; en je steekt die functie niet in een class "query".
Als je iets wil, geef het dan een naam waar je iets aan hebt. Waarbij je aan de naam direct kan zien wat de bedoeling is.
----
Even wat uitgewerkt:
<?php
class query {
// ZIE MIJN VORIGE CODE
}
class User {
// returns TRUE if the user is found; else returns false
static function user_exists($username, $password) {
// we gaan die vorige class aanspreken
$res = query::select(
"uid, username, email",
"users",
"username='" . $username . "' AND password='" . $password . "'"
); // SELECT uid, username, email FROM users WHERE username='Jef' AND password='repelsteeltje'
if($row = mysql_fetch_assoc($res)) {
// 1 user gevonden, we keren true terug.
return TRUE;
}
// in elk ander geval geef je false terug
return FALSE;
}
}
$con = mysql_connect('localhost', 'root', '');
mysql_select_db('phphulp');
$userExists = User::user_exists("Jef", "repelsteeltje"); // Bestaat user "Jef", met paswoord "repelsteeltje"?
if ($userExists) {
echo 'De user bestaat';
}
else {
echo 'De user bestaat niet';
}
?>