SQL - username anhand post_id auslesen
SQL - username anhand post_id auslesen
Hallo
Ich bastle gerade an einer neuen Seite, die sich Daten aus der Tabelle "BENZINPREISE_TABLE" holt. In dieser Tabelle speichere ich die user_id als poster_id.
Ich bekomme es aber nicht hin den usernamen richtig aus der Tabelle "users_table" mit der poster_id der Tabelle "BENZINPREISE_TABLE" auszulesen.
Ich kann zwar Daten aus dem users_table holen aber diese werden nicht richtig zugewiesen.
Was habe ich an meiner zweiten SQL vermukst ?
Meine php
Zudem Funktioniert das Sortieren der Liste nicht richtig.
Z.B.: Es wird die Zahl "8915" kleiner eingestuft als "987"
Thx.
Ich bastle gerade an einer neuen Seite, die sich Daten aus der Tabelle "BENZINPREISE_TABLE" holt. In dieser Tabelle speichere ich die user_id als poster_id.
Ich bekomme es aber nicht hin den usernamen richtig aus der Tabelle "users_table" mit der poster_id der Tabelle "BENZINPREISE_TABLE" auszulesen.
Ich kann zwar Daten aus dem users_table holen aber diese werden nicht richtig zugewiesen.
Was habe ich an meiner zweiten SQL vermukst ?
Meine php
Zudem Funktioniert das Sortieren der Liste nicht richtig.
Z.B.: Es wird die Zahl "8915" kleiner eingestuft als "987"
Thx.
Gruß Markus
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Entweder du richtest einen Cron Job ein der alle x Stunden/Minuten/Tage aufgerufen wird und dann die entsprechenden Deletes durchführt (DELETE FROM ... WHERE x, das wäre dann natürlich nicht exakt nach der festgelegten Zeit sondern erst ein wenig später) oder du baust in das Skript direkt eine Abfrage ein die das erledigt. Dafür brauchen deine Datensätze einen Timestamp (sonst weiß man ja nicht wann man sie löschen darf) und dann etwas in dieser Art:
86400 ist dabei die Zeit in Sekunden die seit Erstellung des Eintrags vergangen sein müssen damit er gelöscht wird.
Code: Alles auswählen
$sql = "DELETE FROM tabelle WHERE timestamp < " . (time() - 86400);
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Oh weh.
Dadurch wird ja die ganze Zeile aus dem Table gelöscht.
[EDIT]
Da ich nur einzelne Zellen einer Zeile löschen möchte und andere Zellen noch brauche habe ich die update Funktion genommen und schreibe einfach ein Leerzeichen rein.
Nur hab ich jetzt ein Problem.
Die Seite wird aufgebaut und wirft alle, auch die alten Daten aus weil das überschreiben alter Werte hinter dem Seitenaufbau stattfindet. Die Werte werden zwar beim Aufrufen der Seite gelöscht, aber das sieht man erst wenn man die Seite aktualisiert. mist
Kann ich das irgendwie umgehen ?
Oder muss ich eine weitere sql davor erstellen hinter die ich das purning mache und dann erneut mit dem bisherigem sql query die Daten nochmal hole. Wenn ich das überhaupt hin bekomme.
Neuer Code
Dadurch wird ja die ganze Zeile aus dem Table gelöscht.
[EDIT]
Da ich nur einzelne Zellen einer Zeile löschen möchte und andere Zellen noch brauche habe ich die update Funktion genommen und schreibe einfach ein Leerzeichen rein.
Nur hab ich jetzt ein Problem.
Die Seite wird aufgebaut und wirft alle, auch die alten Daten aus weil das überschreiben alter Werte hinter dem Seitenaufbau stattfindet. Die Werte werden zwar beim Aufrufen der Seite gelöscht, aber das sieht man erst wenn man die Seite aktualisiert. mist

Kann ich das irgendwie umgehen ?
Oder muss ich eine weitere sql davor erstellen hinter die ich das purning mache und dann erneut mit dem bisherigem sql query die Daten nochmal hole. Wenn ich das überhaupt hin bekomme.
Neuer Code
Gruß Markus
Zwischenfrage: Wieso möchtest Du denn prunen? Sammle die Preise doch und dann kannst Du es über (meinethalben) ein Jahr auswerten.
Die Abfrage beschränkst Du dann eben auf die Zeit ->
Oder Du suchst nur immer die neuesten Preise raus. Also aus jeder Sparte.
Die Abfrage beschränkst Du dann eben auf die Zeit ->
Code: Alles auswählen
SELECT * FROM table WHERE timestamp > (UNIXTIMESTAMP() - 86400);
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Ich wollte es möglichst einfach und klein halten um die Datenbank nicht unnötig zu füllen. War für mich auch einfacher zu machen die Preise immer in die gleiche Zeile zu schreiben. Sonst müsste ich ja bei jedem senden die id erweitern und mit sql insert arbeiten.
So habe ich jetzt nur eine Tabelle mit 11 Spalten und 12 Zeilen in denen sich alles abspielt.
So habe ich jetzt nur eine Tabelle mit 11 Spalten und 12 Zeilen in denen sich alles abspielt.
Gruß Markus
Wie kann ich dann die time Abfrage in meine einbauen.
So funktioniert es nicht. Da springt er sofort auf die message_die
So funktioniert es nicht. Da springt er sofort auf die message_die
$sql = "SELECT a.*, b.*
FROM ".USERS_TABLE." a, ".BENZINPREISE_TABLE." b
WHERE b.poster_id = a.user_id
AND b.post_time > (UNIXTIMESTAMP() - $purne_time);
ORDER BY $order_by";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Fehler bei der Usernamen Bestimmung', '', __LINE__, __FILE__, $sql);
}
Gruß Markus
Wenn das der Code ist, den Du verwendest, dann kann er meiner Meinung nach auch nicht funktionieren... Zumindest nicht so, wie Du es haben willst.
Du hast ein paar SELECTS drin und ein UPDATE auf ein paar Zeilen der Tabelle.
Aber das eine UPDATE "löscht" alle Daten.
Oder habe ich da was falsch gelesen?
Du hast ein paar SELECTS drin und ein UPDATE auf ein paar Zeilen der Tabelle.
Aber das eine UPDATE "löscht" alle Daten.
Oder habe ich da was falsch gelesen?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Ne. Das update löscht mir nur 8 Zellen in Jeder Zeile wo das Datum älter als $purne_time ist. Die Tabelle hat jedoch 11 Spalten. So bleiben mir also in jeder Zeile nach dem update meine wichtigen Daten in den anderen 3 Zellen stehen.
Der code funktioniert ansich nicht schlecht. Nur müsste jeder der die Seite aufruft sofort einen refresh machen um die Änderungen des purne bzw sql update zu sehen.
Hab schon überlegt einen refresh einzubauen. Aber dadurch wird die Seite endlos geladen. Auch nicht das wahre. Zudem würde man das alte noch 10 Sekunden sehen und dann ist es weg. Ist für den user etwas verwirrend.
Deine Idee, die Daten wo älter als die purne_time sind erst garnicht zu holen ist sehr gut. Nur wie mit meinem $sql = "SELECT a.*, b.* kombinieren ?
Habe nochmal den aktuellen Stand hochgeladen (Siehe mein 3. Beitrag)
Der code funktioniert ansich nicht schlecht. Nur müsste jeder der die Seite aufruft sofort einen refresh machen um die Änderungen des purne bzw sql update zu sehen.
Hab schon überlegt einen refresh einzubauen. Aber dadurch wird die Seite endlos geladen. Auch nicht das wahre. Zudem würde man das alte noch 10 Sekunden sehen und dann ist es weg. Ist für den user etwas verwirrend.
Code: Alles auswählen
$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="10"; URL=' . append_sid("http://phpbb root url/viewonline.php", true) . '">')
);
Habe nochmal den aktuellen Stand hochgeladen (Siehe mein 3. Beitrag)
Gruß Markus