php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 4 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 07-02-2008, 20:06
a3frankfurt
 Newbie
Links : Onlinestatus : a3frankfurt ist offline
Registriert seit: Feb 2008
Beiträge: 3
a3frankfurt ist zur Zeit noch ein unbeschriebenes Blatt
Standard Join mit leerer Tabelle

Hallo erstmal.

Ich sitze im Moment daran ein Projekt für meine Schule fertig zu coden und bin ziemlich gestresst, weil ich 50% nochmal neu schreiben darf und selber nicht der php/mysql overskiller bin.


Habe im Moment folgendes Problem:

Ich habe 3 Tabellen.
In der 1. Tabelle sind allgemeine Userdaten gespeichert.
In der 2. und 3. Tabelle jeweils zusätzliche, optionale Informationen.

Ich will, dass man nachträglich optionale Informationen editieren kann.
Das Problem ist, dass wenn ich die 3 Tabellen joine, nichts mehr angezeigt wird. Bin recht ratlos....

Das ganze sieht so aus: (bisschen gekürzt)

PHP-Code:
<?
$lID
=$_GET['id'];

$sql "SELECT * FROM
                eh_schueler, eh_1, eh_2 WHERE eh_schueler.id=$lID
AND eh_1.id=$lID AND eh_2.id=$lID"
;
    
$result mysql_query($sql) OR die(mysql_error());
    if(
mysql_num_rows($result)) {
        while(
$row mysql_fetch_assoc($result)) {

echo 
"<b>Editieren</b>";
echo
"<form action=userupdate.php?ID=";
echo 
"$lID";
echo 
" method=post class=formular>

<TABLE BORDER=0 WIDTH=100%>
       <TR>
       <TD>Vorname: </TD>
       <TD><INPUT TYPE=text NAME=v_name VALUE="
;
echo 
$row['v_name'];

echo
" ></TD>
       </TR>
</table>"
?>
Gruß a3frankfurt
Mit Zitat antworten
  #2 (permalink)  
Alt 07-02-2008, 20:18
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zeig mal alle drei Tabellen mit dem Datensatz, den du dir erwartest.

Würde dir gerne auch noch diesen Thread ans Herz legen:
JOINS - das leidige Thema (mehrere Tabellen abfragen)

Schau dir insbesondere mal ON, bzw USING() an.

BTW: Warum wird der driss überhaupt in drei Tabellen abgelegt? Übernormalisiert?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 07-02-2008, 21:47
a3frankfurt
 Newbie
Links : Onlinestatus : a3frankfurt ist offline
Registriert seit: Feb 2008
Beiträge: 3
a3frankfurt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ganze wird eine Db wo sich ehemalige Schüler eintragen können.
Die schule ist in 2 stufen unterteil, mittelstufe (eh_2) und oberstufe (eh_1). Deshalb 3 Tabellen.

habe die tabellen nicht zur hand, poste sie morgen.

danke trotzdem schonmal!
Mit Zitat antworten
  #4 (permalink)  
Alt 07-02-2008, 21:53
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

1) Das DB-Layout ist mit ziemlicher Sicherheit Müll
2) Stimmt es, dass beim JOIN immer nur eine der beiden Tabellen gefüllt ist? Dann ist dein INNER JOIN per definition ja schon total fehl am Platz. Probiers mit nem OUTER JOIN und alles wird gut. Hättest du aber auch mal vernünftig hinschreiben können und nicht nur nebenbei im Titel erwähnen... Naja.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 08-02-2008, 00:02
a3frankfurt
 Newbie
Links : Onlinestatus : a3frankfurt ist offline
Registriert seit: Feb 2008
Beiträge: 3
a3frankfurt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mh... will irgendwie nicht funktionieren.

mit
PHP-Code:
$sql "SELECT * FROM
                eh_schueler 
LEFT OUTER JOIN eh_1.id ON eh_1.id=eh_schueler.id
RIGHT OUTER JOIN eh_2.id ON eh_2.id=eh_schueler.id
WHERE eh_schueler.id=$lID"

bekomme ich die fehlermeldung:
SELECT command denied to user 'xxx'@'xxx' for table 'id'


ich darf die db leider nicht verändern...

will den dreck nur zum laufen bringen um in informatik ne gute note fürs abi rauszuholen
Mit Zitat antworten
  #6 (permalink)  
Alt 08-02-2008, 10:52
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Von dem von dir gezeigten Code kann diese Meldung nicht stammen. Aber selbst wenn das Zeugs laufen sollte, gehört dem Lehrer, der dir dafür eine gute Note gibt, eins hinter die Löffel. Einfach so ein paar Hinweise
  • SELECT * FROM ist nicht nur schlecht, es behindert auch diejenigen, die dir helfen wollen
  • Formatier mal dein Zeugs anständig und konsistent, Anregungen dazu findest du z.B. bei Kropff
  • HTML-Tags werden klein geschrieben, nicht mal so und mal so
  • Die Abfrage auf mysql_num_rows() ist völlig überflüssig, da dann die Schleife einfach nicht durchlaufen wird und ja kein else-Teil vorhanden ist
  • Klammern fehlen
  • ...
Wenn deine Abfrage anständig formatiert ist, sieht sie etwa so aus, und funktioniert auch (auch wenn die JOINS in diesem Fall natürlich keinen Sinn machen):
PHP-Code:
$sql "SELECT 
            v_name
        FROM
            eh_schueler 
        LEFT  JOIN 
            eh_1.id ON eh_schueler.id = eh_1.id
        LEFT JOIN 
            eh_2.id ON eh_schueler.id = eh_2.id
        WHERE 
            eh_schueler.id = $lID"

__________________
Gruss
H2O

Geändert von H2O (08-02-2008 um 10:55 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:30 Uhr.