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 :)
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.