Ankündigung
Einklappen
Keine Ankündigung bisher.
Tabellen miteinander verknüpfen
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ein Gast antworteteWofür sind eigentlich solche Sachen wie Primärschlüssel oder Index? Kann man das damit nicht irgendwie drehen?
-
Ein Gast antworteteSollte eigentlich keine Rolle spielen. Große Websites wie Amanzon oder ebay gleichen oft hunderttausende (oder noch viel mehr) einträgen ab. Ausserdem hast Du doch sicherlich ein oder zwei Sekunden Zeit bis das Ergebnis erscheint.
Es könnte evtl daran liegen, dass die Variable $telefonnummer innerhalb der zweiten Schleife keine Gültigkeit hat. Schau doch mal in einem PHP-Handbuch nach. Es gibt einen kleinen Code-Zusatz um dies zu gewährleisten (weiss ihn leider nicht auswendig, sorry).
Ansonsten solltest Du vielleicht noch die ein oder andere "or exit ('Abruch an Stelle XY')" einbauen um zu sehen wo der Fehler genau liegt.
Einen Kommentar schreiben:
-
Ein Gast antworteteVielen Dank für Deine Hilfe. Leider bleibt das Feld leer. Woran könnte das liegen?
BTW: Beansprucht es nicht zu viel Rechenzeit, bei jedem von ca 2000 Einträgen, noch mal ca 400 Telefonnummern vorbeilaufen zu lassen?
Einen Kommentar schreiben:
-
Ein Gast antworteteDer erste Fehler ist mir schon aufgefallen:
while($row = mysql_fetch_array($result))
{
$telefonnummer = $row['number'];
echo ('<table>');
echo ('<tr>');
Einen Kommentar schreiben:
-
Ein Gast antworteteBau einfach innerhalb der Schleife die die Tabelle ausgibt an der Stelle die den Namen ausgibt eine weitere Schleife ein, die solange die Werte von log.number mit caller.number vergleicht bis sie fündig geworden ist und dann abbricht. Sollte kein Eintrag übereinstimmen (wenn die Nummer unterdrückt wurde) soll sie ebenfalls nichts hinneinschreiben.
Das ganze könnte ungefähr so aussehen:
Code:$result = mysql_query('SELECT id, date, time, number, msn FROM log ORDER BY date'); echo ('<table>'); while($row = mysql_fetch_array($result)) { $telefonnummer = $row['number']; echo ('<table>'); echo ('<tr>'); echo ('<td>'.$row['date'].'<td>'); echo ('<td>'.$row['time'].'<td>'); echo ('<td>'.$row['number'].'<td>'); $abgleichen = mysql_query('SELECT person, number FROM callers ORDER BY person'); while($row = mysql_fetch_array($result)) { if ($telefonnummer = $row['number']) { echo ('<td>'.$row['person'].</td>'); } else { } echo ('</tr>'); } echo ('</table>');
Viel Erfolg!
Gruß
MWingenbach
Einen Kommentar schreiben:
-
Ein Gast antworteteDie PHP Schleife, die das alles in eine Tabelle schreibt ist ja auch schon vorhanden. Nur wie mache ich es, dass der zur Nummer passende Name in der Tabelle auftaucht?
Derzeit wird ja nur gelesen:
2004-06-09 | 13:55:23 | 4711
Aus der zweiten Tabelle kommt:
Fritz | 4711
Wie mach ich es jetzt, dass die Ausgabe so aussieht:
2004-06-09 | 13:55:23 | 4711 | Fritz
Einen Kommentar schreiben:
-
Ein Gast antworteteDas könntest Du beim Ausgeben durch eine PHP Schleife lösen.
Einen Kommentar schreiben:
-
Ein Gast antworteteAber wie kriege ich es dann hin, dass die Namen in der Tabelle in der richtigen Spalte auftauchen? So lese ich ja nur den Log und die Liste der Anrufer. Das muss doch noch irgendwie miteinander verknüpft werden. Oder geschieht das im Hintergrund automatisch?
Einen Kommentar schreiben:
-
Ein Gast antworteteLass doch einfach die WHERE Abfrage weg. Dann erhälst Du alle Datensätze (auch die, bei denen log.nummer = "").
Code:("SELECT log.id, log.date, log.time, log.number, log.msn, callers.person, callers.number ORDER BY log.date")
Einen Kommentar schreiben:
Einen Kommentar schreiben: