uitlezen random stem systeem
zwobbel - 05/05/2005 13:49
PHP gevorderde
Ik ben bezig met het maken van een foto rate systeem waarbij een lid een punt van 1 tot 10 kan geven.
Nu ontbreekt mij wat logica wand hoe moet ik die query van uitlezen maken.
Als het lid al heeft gestemt op de foto mag hij niet worden uitgelezen.
Maar de gegevens of de persoon al heeft gestemt staan in een ander database hoe los ik deze uitlees query op zodat je altijd een foto krijgt te zien waarop je nog niet hebt gestemt.
Als er geen fotos meer zijn moet ik gewoon melding krijgen van sorry niks meer te vote voor vandaag.
17 antwoorden
Gesponsorde links
Legolas - 05/05/2005 14:00
Onbekend
Sry hoor maar ik snap je vraag écht niet. Kun je het iets beter uitleggen? Wat is hier nou weer 'random' aan?
Thomas - 05/05/2005 14:03
Moderator
Een random foto waarop iemand nog niet gestemd heeft:
SELECT * FROM foto
WHERE id NOT IN (<lijst van foto-ids waar de persoon al op gestemd heeft>)
ORDER BY RAND()
LIMIT 0, 1
Legolas - 05/05/2005 14:05
Onbekend
@FangorN:
dat LIMIT: kan toch ook gewoon LIMIT 1 zijn i.p.v. LIMIT 0, 1??;-)
zwobbel - 05/05/2005 15:54
PHP gevorderde
<lijst van foto-ids waar de persoon al op gestemd heeft>
is da gewoon 5,6,1,2 of hoe moet ik dat er tusse plaatse alvast bedankt!
Legolas - 05/05/2005 15:55
Onbekend
Volgens mij gewoon alle id's van de foto's, waar op is gestemd, dus bijv. 1,3,5,9
zwobbel - 05/05/2005 15:58
PHP gevorderde
ja maar in welke mannier wand...
je kan zo:
`1`,`2`,`3`
zo:
'1','2','3'
zo:
'1,2,3,4'
zo:
`1,2,3`
Thomas - 05/05/2005 15:59 (laatste wijziging 05/05/2005 16:03)
Moderator
Jep, alle id's waarop al gestemd is, gescheiden door een komma.
EDIT: geen quotes, gewoon ... IN (1,2,5,7,12,88)
zwobbel - 05/05/2005 16:10 (laatste wijziging 05/05/2005 16:12)
PHP gevorderde
hmm nu zit ik opnieuw met ene probleem
Bij het uitlezen van de id's hoe kan ik ervoor zorgen dat bij de laatste id geen , komt te staan?
nu lees ik het dus zo uit voor ids waarop al gestemt is:
<? $gestemt = mysql_query ("SELECT `*` FROM `gestemt` WHERE `geb_ID` = '".$_SESSION["ID"]."'");
while($aRead = MySQL_Fetch_Assoc($gestemt))
{
$gestemt_id = $aRead['foto_ID'].",";
}
?>
<? $gestemt = mysql_query ( "SELECT `*` FROM `gestemt` WHERE `geb_ID` = '" . $_SESSION [ "ID" ] . "'" ) ; {
$gestemt_id = $aRead [ 'foto_ID' ] . "," ;
}
?>
Rens - 05/05/2005 16:14
Crew algemeen
<?PHP
$gestemd = mysql_query ("SELECT `*` FROM `gestemt` WHERE `geb_ID` = '".$_SESSION["ID"]."'");
while($aRead = MySQL_Fetch_Assoc($gestemd))
{
$gestemd_id = $aRead['foto_ID'].",";
}
$gestemd_id = substr($gestemd_id, 0, (strlen($gestemd_id)-1));
?>
<?PHP
$gestemd = mysql_query ( "SELECT `*` FROM `gestemt` WHERE `geb_ID` = '" . $_SESSION [ "ID" ] . "'" ) ; {
$gestemd_id = $aRead [ 'foto_ID' ] . "," ;
}
$gestemd_id = substr ( $gestemd_id , 0 , ( strlen ( $gestemd_id ) - 1 ) ) ; ?>
Substr uitvoeren, dan de hele string-1 (- de komma)
zwobbel - 05/05/2005 16:16
PHP gevorderde
owkej merci nu doet hij alles perfect!
Thomas - 05/05/2005 16:17
Moderator
Die klopt niet helemaal, die onthoudt volgens mij alleen maar het laatst opgehaalde id.
zwobbel - 05/05/2005 16:20 (laatste wijziging 05/05/2005 16:21)
PHP gevorderde
Blijkbaar als er nu 2 fotos in de db zijn waarop je hebt gestemt werkt het weer niet geen error ofzo maar je kan terug vote op de eerste foto
Thomas - 05/05/2005 16:24 (laatste wijziging 05/05/2005 16:25)
Moderator
Dat zeg ik.
Regel 5:
$gestemd_id = $aRead['foto_ID'].",";
moet zijn
$gestemd_id .= $aRead['foto_ID'].",";
(let op de punt)
en $gestemd_id moet geinitialiseerd worden (voor de lus) met als waarde "" (de lege string).
Trouwens, als je de id's verzamelt in een array, en dan dat array implode op ",", ben je in één keer klaar.
Thomas - 05/05/2005 16:30 (laatste wijziging 05/05/2005 16:31)
Moderator
Nou jah, het doet hetzelfde als alles verzamelen in een string, maar het is wat minder geklooi.
<?php
$res = mysql_query("SELECT id FROM gestemd WHERE ...");
$ids = array();
while($row = mysql_fetch_row($res)) {
$ids[] = $row[0];
}
$gestemd_op = implode(", ", $ids);
// $gestemd_op bevat nu de string met de items waarop gestemd is
// bijvoorbeeld "1, 2, 5, 10"
?>
<?php
$res = mysql_query ( "SELECT id FROM gestemd WHERE ..." ) ;
$ids [ ] = $row [ 0 ] ;
}
// $gestemd_op bevat nu de string met de items waarop gestemd is
// bijvoorbeeld "1, 2, 5, 10"
?>
Rens - 05/05/2005 16:32 (laatste wijziging 05/05/2005 16:32)
Crew algemeen
$gestemd_id[] = $aRead['foto_ID'];
}
$gestemd_id_met_komma = implode(",", $gestemd_id);
$gestemd_id [ ] = $aRead [ 'foto_ID' ] ;
}
$gestemd_id_met_komma = implode ( "," , $gestemd_id ) ;
edit; Hmm, FangorN was eerder.^^
Gesponsorde links
Dit onderwerp is gesloten .