Archiv verlassen und diese Seite im Standarddesign anzeigen : ein paar Fragen...
Hallo, langsam hab ich keinen Bock, mehr es geht mal wieder nichts...
Naja, also zweierlei.
1. Ich bin dabei, eine Anzeige zu realisieren, die besagt, auf welcher Seite welcher User gerade ist, oder eben in den letzten 10 Sek war.
Hm, jetzt will ich die Seitenid in die Tabelle eintragen lassen, alle Seiten haben eine Kennung (mit ?page="kennung") wird der Inhalt der HP ermittelt) und eine seitenid. Diese sind in einer weiteren Tabelle vorhanden.
Ich habe jetzt das Prob, dass bei seitenid in der Tabelle in der die aktuellen User sind (www_aktuellon) immer 1 eingetragen wird. Bei einem Testscript allerdings wird die korrekte seitenid angezeigt.
Hier der code:
$seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
$db->query("UPDATE www_aktuellon SET seitenid='".$seiten[seitenid]."', time='".time()."' WHERE userid='".$user_id."'");
2. Jetzt will ich schauen, welche User gerade online sind, und das dann auch ausgeben.
Ich hab dazu ne Funktion gemacht:
function getonlinelist() {
// datenbank classe machen und connecten
$db = new db;
$db->connect();
$db->select_db("wiewowarum");
$result = $db->query("SELECT A.userid, A.time, U.nick, S.name FROM www_aktuellon A LEFT JOIN www_user U USING(userid) LEFT JOIN www_seiten S USING(seitenid)");
while($row = $db->fetch_array())
{
eval ("\$useronlinebit .= \"".gettemplate("useronlinebit")."\";");
}
}
Geht natürlich nicht. Weiß jemand wo der Fehler sein könnte?
was steht denn in $seiten drin? schon mal mit print_r() ausgegeben?
Hm, bei einem Testscript war $seiten[seitenid] richtig, also 6 nicht 1.
Original geschrieben von OliOli
Hm, bei einem Testscript war $seiten[seitenid] richtig, also 6 nicht 1. war das meine frage?
da hier keiner die verwendete klasse sehen kann, wäre es schön, den rückgabewert zu kennen => print_r() oder echo ;)
Array ( [0] => 6 [seitenid] => 6 )
ALso korrekt...
wie siehts damit aus:
$seiten['seitenid']
$seiten[0]
hallo, bin nicht dazu gekommen, weiterzuarbeiten...
Also die stimmen beide auch...
$db->query("UPDATE www_aktuellon SET seitenid='".$seiten[0]."', time='".time()."' WHERE userid='".$user_id."'");
// oder
$db->query("UPDATE www_aktuellon SET seitenid='".$seiten['seitenid']."', time='".time()."' WHERE userid='".$user_id."'");
und, mal probiert ?
Ja, den zweiten Code hab ich ja so.
HIer, das muss doch gehen:
$seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
$db->query("UPDATE www_aktuellon SET seitenid='".$seiten['seitenid']."', time='".time()."' WHERE userid='".$user_id."'");
echo $seiten['seitenid'];
echo $seiten[0];
echo $anzahl;
So. die Echos sind richtig, es kann doch nicht sein, dass er dann was anderes in die DB einträgt!
Und bei einem anderen Testscript, wo ich nur diesen Code habe, klappt es einwandfrei! Aber die Tabelle wird sonst nirgendwo angesprochen, die Variablen sind auch noch nicht belegt oder sowas!
Verflucht! :mad:
:confused:
mal aufdröseln:
$jetzt = time();
$sql="UPDATE www_aktuellon SET seitenid='".$seiten['seitenid']."', time='".$jetzt."' WHERE userid='".$user_id."'";
echo $sql;
$db->query($sql);
lol.... Er gibt aus: UPDATE www_aktuellon SET seitenid='5', time='1057674543' WHERE userid='1'
UNd trotzdem immer noch 1 in der DB
*mühsam_ernährt_sich_das_eichhörnchen*
wird das update überhaupt ausgeführt ? => was ist mit "time", ändert sich da was?
*grrr* "TIME" als spaltenbezeichnung könnte der fehler sein
setz den mal in backticks => `time`='$jetzt'
wird ausgeführt, die Zeit ändert sich genau wie sie soll....
muss ich das verstehen?? langsam gehen mir die ideen aus.
letzter versuch:
wie sieht denn die tabelle aus, poste doch mal nen dump der struktur.
#
# Tabellenstruktur für Tabelle `www_aktuellon`
#
CREATE TABLE www_aktuellon (
userid int(3) NOT NULL default '0',
seitenid int(3) NOT NULL default '0',
time int(32) NOT NULL default '0',
UNIQUE KEY userid (userid)
) TYPE=MyISAM;
Hm, bei dem Testscript ging es aber...
ich verstehs nicht.
versuchs mal mit dem testscript (das, wo's lief) ... wer weiss, was sich im laufe der evolution da geändert hat ... ansonsten check die klasse, ob dort irgendwo die "1" reinrutscht.
mehr fällt mir dazu auch nicht mehr ein :dontknow:
Also...
Ich habe jetzt eine Funktion draus gebastelt.
function setonlinelist($page,$user_id) {
$db = new db;
$db->connect();
$db->select_db("wiewowarum");
$seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
$anzahl = $db->num_rows("SELECT userid FROM www_aktuellon WHERE userid='".$user_id."'");
if($anzahl == "0")
{
$seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
$db->query("INSERT INTO www_aktuellon (userid, seitenid, time) VALUES ('".$user_id."','".$seiten['seitenid']."','".time()."')");
}
else
{
$seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
$db->query("UPDATE www_aktuellon SET seitenid='".$seiten['seitenid']."', time='".time()."' WHERE userid='".$user_id."'");
}
$gesamt = $page."->".$seiten[seitenid]."|".$user_id;
return $gesamt;
}
Ok. Wenn ich die Funktion in meiner Page aufrufe, dann wird wieder 1 eingetragen, wenn ich sie aber im Testscript aufrufe, dann stimmts!
Kombiniere: In der Page wird irgendwo $page wieder auf 1 gesetzt, bevor er das update ausführt, obwohl ich nicht weiß wo.
Das Ergebnis der Funktion, $gesamt, ist auch so, wie es soll.
Hallo!
Ähm Wurzel.. Kann ich vielleicht mal die bisherige HP anhängen, (mit SQL dump) so dass du so schauen kannst?
Wär sehr nett, wenn du das tun könntest...
da brauchst du doch nicht zu fragen ... hier ist mit sicherheit jeder bereit, komplette HP's auf fehler zu überprüfen.
Original geschrieben von OliOli
In der Page wird irgendwo $page wieder auf 1 gesetzt, bevor er das update ausführt, obwohl ich nicht weiß wo. wenn du den fehler soweit schon eingekreist hast ... wo ist das problem. also bei mir liegt die suche im editor unter "F3".
Original geschrieben von OliOli
Kann ich vielleicht mal die bisherige HP anhängen, (mit SQL dump) so dass du so schauen kannst?poste deinen code lieber hier. ich glaube nicht, dass du meinen stundensatz lieben wirst ;)
@graf
:grin:
... Haha.. Wär schön wenn die HP komplett wäre..
Ich bin gerade dabei, das Usersystem zu machen, und damit hab ich angefangen... Aber wies aussieht wird die Seite wohl erst ende 2014 fertig sein... :)
Jippi, dann darf ich alles auf php23 umstellen...
Naja, es ist zuviel code um es hier zu posten, und meine Vermutung hat sich nicht bestätigt.... :dontknow:
Hm, tja...
|
-
- |