18. oktober 2005 - 01:59Der er
30 kommentarer og 2 løsninger
Vis brugere der er online øverst
Hey :D
jeg har tabellen online der indeholder bruger_id for den bruger der er logget ind
Så har jeg en anden tabel friend hvor der ser sådan her ud:
CREATE TABLE `friend` ( `id` int(11) NOT NULL auto_increment, `fra` int(11) NOT NULL default '0', `til` int(11) NOT NULL default '0', `godkendt` set('yes','no') NOT NULL default '', PRIMARY KEY (`id`) )
Og jeg kan godt finde ud af at udskrive vennerne fra et $_GET[id] :D men vil gerne have at hvis de er på online listen skal de vises øverst og der skal stå ON uden foran deres navn :)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Den viser alle brugerens venner, dem der er online enten øverst eller nederst - Jeg kan ikke lige huske hvilken, men det kan vendes om ved at ændre ORDER BY o.bruger_id til ORDER BY o.bruger_id DESC hvis den viser det forkert...
evt efter if ( mysql_num_rows( $conn ) > 0 ) skriv: echo 'Er inde i if-sætningen'; eller sådan noget - forskellige steder så vi kan se hvor den kommer omkring :PO
Og her har vi den kode der bare ikke viser noget :P :
<?php
$coll1 = mysql_query("SELECT * FROM venneliste WHERE (to_user = '".$_GET['id']."' OR from_user = '".$_GET['id']."') AND godkendt = 'yes' ORDER BY id DESC");
if(mysql_num_rows($coll1) == 0) { print "<br /><center><b>$rs3[brugernavn] har desværre ingen venner :-(.</b><br /> Men du kunne jo blive det første ? ;-)</center>"; } else {
$conn = mysql_query("SELECT * FROM users WHERE brugernavn = '$_SESSION[brugernavn]'"); $rs = mysql_fetch_array($conn);
$sql = " SELECT f.* ,o.user_id FROM venneliste f LEFT OUTER JOIN online_profiles o ON f.id = o.user_id WHERE (f.to_user = '".$_GET['id']."' OR f.from_user = '".$_GET['id']."') AND f.godkendt = 'yes' ORDER BY o.user_id ,f.id DESC LIMIT $vis_fra, $pr_side"; ?>
$sql = " SELECT f.* ,o.user_id FROM venneliste f LEFT OUTER JOIN online_profiles o ON f.id = o.user_id WHERE (f.to_user = '".$_GET['id']."' OR f.from_user = '".$_GET['id']."') AND f.godkendt = 'yes' ORDER BY o.user_id ,f.id DESC LIMIT $vis_fra, $pr_side";
laves:
$qh = mysql_query( $sql ) or die( mysql_error() );
Hmm lyder underligt, prøve lige dette - jeg har fjernet to unødvendige queries og integreret dem i den anden:
<?php
$coll1 = mysql_query("SELECT * FROM venneliste WHERE (to_user = '".$_GET['id']."' OR from_user = '".$_GET['id']."') AND godkendt = 'yes' ORDER BY id DESC");
if(mysql_num_rows($coll1) == 0) { print "<br /><center><b>$rs3[brugernavn] har desværre ingen venner :-(.</b><br /> Men du kunne jo blive det første ? ;-)</center>"; } else {
$conn = mysql_query("SELECT * FROM users WHERE brugernavn = '$_SESSION[brugernavn]'"); $rs = mysql_fetch_array($conn);
$sql = " SELECT f.* ,t.brugernavn as tilbruger ,fra.brugernavn as frabruger ,o.user_id FROM venneliste f INNER JOIN users t ON f.to_user = t.id INNER JOIN users fra ON f.from_user = fra.id LEFT OUTER JOIN online_profiles o ON f.id = o.user_id WHERE (f.to_user = '".$_GET['id']."' OR f.from_user = '".$_GET['id']."') AND f.godkendt = 'yes' ORDER BY o.user_id ,f.id DESC LIMIT $vis_fra, $pr_side"; $qh = mysql_query( $sql ) or die( mysql_error() );
$sql = " SELECT f.* ,t.brugernavn as tilbruger ,fra.brugernavn as frabruger ,IF( o.user_id IS NULL, 0, 1 ) as online FROM venneliste f INNER JOIN users t ON f.to_user = t.id INNER JOIN users fra ON f.from_user = fra.id LEFT OUTER JOIN online_profiles o ON f.id = o.user_id WHERE (f.to_user = '".$_GET['id']."' OR f.from_user = '".$_GET['id']."') AND f.godkendt = 'yes' ORDER BY online ,f.id DESC LIMIT $vis_fra, $pr_side";
Hvis du har brugt SQL'en fra 18/10-2005 19:03:55 skal den skrive NULL for "o.user_id" feltet hvis brugeren ikke er online... Har du brugt SQL'en fra 18/10-2005 22:36:11 skal den aldrig skrive NULL men enten 0 eller 1 i "online" feltet...
Næh, ikke hvis det jeg har lavet, ikke virker som det skal - Også selvom mine små optimeringer måske er lidt værd ;) Tag dem bare selv, hvis der ikke er andre der kommer med løsningen...
Tak igen :), jeg prøver bare et oprette et nyt og håbe på det kan blive løst :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.