php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.06.2004, 12:08  
Gast
 
Beiträge: n/a
Standard [Erledigt] Tabellen miteinander verknüpfen

Tag zusammen,

ich habe ein Problem und weiß leider nicht, wie ich es lösen soll. Folgende Situation: Ich lese die Verbindungsdaten meiner Telefonanlage aus und speichere sie in einer Tabelle namens "log". In einer Spalte steht die Nummer des Teilnehmers (number). Nun habe ich eine zweite Tabelle (callers) mit zwei Spalten (person, number) angelegt, in welcher einige Rufnummern vorhanden sind.

Ich möchte das ganze nun so haben, dass ich bei der Ausgabe den Namen des Anrufenden dort mit stehen habe. Derzeit hab ich das so gelöst:

Code:
select log.id, log.date, log.time, log.number, log.msn, callers.person, callers.number where log.number = callers.number order by log.date")
Da es ja (leider ) auch Personen gibt, die ihre Nummer nicht senden, bleibe log.number bei einigen Einträgen leer und genau diese Erscheinen nicht in meiner Tabelle. Ist ja auch logisch denn in diesem Fall ist kann log.number ja nicht gleich callers.number sein, da log.number leer ist.

Wie löse ich das?

Viele Grüße

Christoph
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.06.2004, 13:23  
Gast
 
Beiträge: n/a
Standard

Lass 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")
  Mit Zitat antworten
Alt 09.06.2004, 13:33  
Gast
 
Beiträge: n/a
Standard

Aber 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?
  Mit Zitat antworten
Alt 09.06.2004, 13:52  
Gast
 
Beiträge: n/a
Standard

Das könntest Du beim Ausgeben durch eine PHP Schleife lösen.
  Mit Zitat antworten
Alt 09.06.2004, 13:56  
Gast
 
Beiträge: n/a
Standard

Die 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
  Mit Zitat antworten
Alt 09.06.2004, 14:30  
Gast
 
Beiträge: n/a
Standard

Bau 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>');
Poste doch bitte mal ob es funktioniert, habe es nämlich nicht getestet (wie auch, hab ja die Datenbank und die Werte nicht).

Viel Erfolg!

Gruß
MWingenbach
  Mit Zitat antworten
Alt 09.06.2004, 14:33  
Gast
 
Beiträge: n/a
Standard

Der erste Fehler ist mir schon aufgefallen:

Zitat:
while($row = mysql_fetch_array($result))
{
$telefonnummer = $row['number'];

echo ('<table>');
echo ('<tr>');
Das "echo ('<table>'); " ist zuviel. Es gehört vor die Schleife, also einfach wegdenken...
  Mit Zitat antworten
Alt 09.06.2004, 15:37  
Gast
 
Beiträge: n/a
Standard

Vielen 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?
  Mit Zitat antworten
Alt 09.06.2004, 15:52  
Gast
 
Beiträge: n/a
Standard

Sollte 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.
  Mit Zitat antworten
Alt 09.06.2004, 16:07  
Gast
 
Beiträge: n/a
Standard

Wofür sind eigentlich solche Sachen wie Primärschlüssel oder Index? Kann man das damit nicht irgendwie drehen?
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
löschen in mehreren Tabellen maeck Datenbanken 5 10.07.2008 23:19
Tabellen für Vokabeltrainer anlegen... anonym01 PHP Tipps 2008 9 03.03.2008 21:18
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
5 tabellen miteinander verknüpfen. miwo Datenbanken 2 22.09.2007 11:17
Tabellen Limit? thefaxx Datenbanken 2 02.10.2006 17:06
Volltext-Suche Problem - 2 verschiedene Tabellen Datenbanken 1 18.09.2006 16:32
Vergleich zweier Tabellen Mandalay Datenbanken 11 22.03.2006 06:32
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
einträge aus 2 tabellen sortieren Tschuu Datenbanken 11 20.12.2005 08:21
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
Quiz Tabellen wizzardxx Datenbanken 9 10.05.2005 11:24
sql über 2 tabellen PHP Tipps 2005 2 25.04.2005 21:26
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
Join aus 3 Tabellen mit nur einer Verknüpfung? Datenbanken 7 24.09.2004 18:25
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
numbers tabellen verknüpfen, tabellen miteinander verknüpfen, numbers zellen tweier tabellen verknüpfen, numbers zellen aus verschiedenen tabellen verknüpfen, \9\ tabellen miteinander verknüpfen, tabellen verknüpfen numbers, numbers tabellen miteinander verknüpfen, verküpfen von tabellen in numbers, numbers verknüpfung von tabellen, numbers tabellenseiten miteinander verlinken, tabelle verknupfung, tabellen verknüpfen in numbers, numbers tabelle verknüpfung, verknüpfung tabelle numbers, verknüpfen von tabellen numbers

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.