ik heb een spotlicht plek met een random user die daar dan ze profiel showt
nu zoek hij uit de tabel leden een random member_id
maar soms krijgt hij een id van de account die is verwijderdt
en staat er een legen en dan krijg ik errors :s
hoe kan ik dit tegengaan?

ik gebruik:

<?
	$sql_accounts = "SELECT * FROM leden";
	$res_accounts = mysql_query($sql_accounts) or die (mysql_error());
	$aantal = mysql_num_rows($res_accounts);
	$rand = rand(1, $aantal);
	$sql_nieuw_account = "SELECT * FROM leden WHERE member_id='".$rand."'";
	$res_nieuw_account = mysql_query($sql_nieuw_account) or die (mysql_error());
?>



PHPerik edit: verplaatst naar Databases & SQL
Heb je geen 'active' kolom ofzo?
En hoe kan het mogelijk zijn dat er dode members in je database staan?
het mooiste is natuurlijk om gewoon alles met mysql op te lossen. Daarom kan je het beste van je query het volgende maken:

<?php
$sql_accounts = "SELECT * FROM leden ORDER BY RAND() LIMIT 0,1";
?>

Je laat dus willekeurig 1 record terug komen.

Succes ermee.
Eehm... bewaar je leden die verwijderd zijn dan? Zoniet, dan zet je ze dus met een bepaalde 'waarde' op non actief? Dan moet je die er wel uitfilteren. Verder haal je DE HELE ledentabel op alleen om te kijken hoeveel leden er zijn? Man, gebruik toch gewoon een enkele count query...
@menno
de rest van jou systeem is best wel flink scheef.. als er lege record ontstaan..
hoe delete jij een user dan?

met wat jij nu zegt zou het hierop neerkomen (wat overigens zwaar omweg is en totaal onnodig):



<?
    $sql_accounts = "SELECT * FROM leden";
    $res_accounts = mysql_query($sql_accounts) or die (mysql_error());
    $aantal = mysql_num_rows($res_accounts);
    $rand = rand(1, $aantal);

    $sql_nieuw_account = "SELECT * FROM leden WHERE member_id='".$rand."'";
    $res_nieuw_account = mysql_query($sql_nieuw_account) or die (mysql_error());
    
    $check = mysql_fetch_array($res_nieuw_account);
    if($check['gebruikersnaam'] == "" || $check['anderiets'] =="" || $check['avater'] ==""){
            // opnieuw eentje random uitzoeken snapje?
    }  
?> 
Marvin, er klopt weinig van. Stel, ik heb 100 members, 50 daarvan verwijder ik. De eerste query komt '50' als antwoord uit, vervolgens trek jij een nummer van 1 t/m 50. Maareh... het kan best zijn dat ik de eerste 50 verwijderd heb...

MySQL kent ook een RAND() functie, combineer dat even met je achterlijke SELECT * en je komt een heel eind.
Ok ik heb jullie raad en kritiek even bekeken en ik heb er een kolom active bijgemaakt.
dus die wordt dan verandert en accounts worden niet meer verwijderd
(weer iets geleerd :P)

dus kan iemand vertellen hoe ik de RAND() LIMIT enzo gebruik in een query
want ik gebruikte dus RAND() LIMIT 0,1 en dan krijg ik dus steeds een leeg resultaat :S

Kan iemand mij meer vertellen over die functie?

[edit]
sorry voor mijn actie, ik was een beetje ongeduldig en dom bezig :P
vergeten op google te zoeken.
ik heb een tutje over RAND() mysql gevonden en ik snap het nu
het werkt prima

Hartelijk dank :)
[/edit]
We zijn benieuwd naar je oplossing / resultaat..
Ow sorry, hier is hij ;P


<?
	$sql_accounts = "SELECT * FROM leden WHERE active='actief' ORDER BY RAND() LIMIT 1";
	$res_accounts = mysql_query($sql_accounts) or die (mysql_error());
	$row_acc = mysql_fetch_assoc($res_accounts);
?>


ik hoop dat dit is wat jullie bedoelden :)
Ja, zie mijn post hierboven...
Jh maar ik had dat dus gedaan met 0,1 zoals daar stond en toen werkte hij niet dus ben ik tutje gaan lezen en het enige wat ik eigenlijk moest doen was 0, weghalen :P

Reageren