Archiv verlassen und diese Seite im Standarddesign anzeigen : [MySQL 3.23.X] JOINS_Abfrage mit PHP
Hallo,
mein Problem:
Wie kann ich NUR die $rnr auslesen? Jetzt werden ALLE Einträge aufgelistet...
if ($rnr != "")
{
$sql = "SELECT
PASS,
Anrede,
Name,
Vorname,
rnummer
FROM
kunden,
rnummer
WHERE
KID=kunden.ID";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
$PASS = $row["PASS"];
$anrede = $row["Anrede"];
$name = $row["Name"];
$vorname = $row["Vorname"];
$rnummer = $row["rnummer"];
}
}
VIELEN DANK SCHON MAL!
(Wie mach ich das eigentlich mit dem Darstellen des farbigen Codes hier im Forum?)
Jörg
php.tags by Abraxax
ps. code formatiert
sag uns doch mal, wie deine tabellen aussehen.
um es farbig zu machen musst du einfach php und /php in eckige klammern schreiben, daziwschen dein php-code
Original geschrieben von WUZL
Wie kann ich NUR die $rnr auslesen? Jetzt werden ALLE Einträge aufgelistet...ich weiss jetzt auch nciht genau was du willst.... aber das $rnr sollte durchaus in der WHERE-clauses verwendet werden, wenn du die such einschränken willst.
ausserdem würde ich einen JOIN verwenden, um die tabellem zu verbinden. nur mit deiner query ist das etwas schwierig rauszufinden, was du eigentlich willst. ich weiss nicht, welches feld zu welcher tabelle gehört.
...ok-Danke.
Tabelle "rnummer":
ID, rnummer, KID
Tabelle "kunden":
ID, PASS, Anrede, Name, eMail,...
KID von "rnummer" und ID von "kunden" sind gleich.
Ich möchte die rnummer auslesen und an die eMail verschicken.
In einem Formular wird nur die rnummer abgefragt.
Ich hoffe, ich habs einigermassen erklärt...
Jörg
$sql = "SELECT
PASS,
Anrede,
Name,
Vorname,
rnummer
FROM
kunden K
INNER JOIN
rnummer R on(K.ID = R.KID)
WHERE
R.rnummer = ".$rnr;
@graf
punkt vor $rnr eingefügt... :p
Abraxax
mukraker 04-09-2003, 10:41 hey kann mir einer mal erklären wir das mit inner und left join geht, irgendwie raff ich das in den ganzen tuts nicht!
...UND:
Wie krieg ich das in ein "echo" rein? Was muss ich da reinschreiben?
Vielen Dank schonmal :-)
Jörg
...muss ich da eine while-Schleife einbauen?
Jörg
du weisst schon, wie man mit php und mysql arbeitet?
du hast es ja in deinem script auch unter beweiss gestellt. daher verstehe ich deine frage nicht.
if ($rnr != "")
{
$query = "SELECT_PASS, Anrede, Name, Vorname, rnummer
_FROM kunden K
INNER JOIN
rnummer R on(K.ID = R.KID)
WHERE R.rnummer = ".$rnr;
while ($row = mysql_fetch_array($query))
{
$PASS = $row["PASS"];
$anrede = $row["Anrede"];
$name = $row["Name"];
$vorname = $row["Vorname"];
$rnummer = $row["rnummer"];
echo "$rnummer<br>$PASS<br>$name<br>";
}
Fehler in Zeile 25 (while...)
Sorry - so 100%ig weiss ich das nicht. Mache gerade seit 2 Wochen mySQL...
Die "$rnr" ist das der Name des Eingabefeldes im Formular. Ich brauch aber die Daten in den Tabellen. BITTE HELFT MIR :-)
Jörg
du hast noch was entscheidendes vergessen:
$query = mysql_query($sql) or die(mysql_error());
You have an error in your SQL syntax near 'INNER JOIN rnummer R on(K.ID = R.KID) WHERE R.rnummer = 8' at line 1
Ist die Antwort...
$sql = "SELECT_PASS, Anrede, Name, Vorname, rnummer
_FROM kunden K
INNER JOIN
rnummer R on(K.ID = R.KID)
WHERE R.rnummer = ".$rnr;
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
$PASS = $row["PASS"];
$anrede = $row["Anrede"];
$name = $row["Name"];
$vorname = $row["Vorname"];
$rnummer = $row["rnummer"];
echo "$rnummer<br>$PASS<br>$name<br>";
}
Erbarmt sich keiner?
$sql = "SELECT
K.ID, K.PASS, K.Anrede, K.Name, K.Vorname, K.rnummer
FROM kunden K
INNER JOIN
rnummer R on(K.ID = R.KID)
WHERE R.rnummer = ".$rnr;
was kommt da raus?
Das:
You have an error in your SQL syntax near 'INNER JOIN rnummer R on(K.ID = R.KID) WHERE R.rnummer = 6' at line 1
sind die feldnamen korrekt? und sind sie korrekt über die tabelle angesprochen?
Original geschrieben von WUZL
Tabelle "rnummer":
ID, rnummer, KID
Tabelle "kunden":
ID, PASS, Anrede, Name, eMail,...
KID von "rnummer" und ID von "kunden" sind gleich.
Ich möchte die rnummer auslesen und an die eMail verschicken.
Jörg
nimm mal bitte ", K.rnummer" aus dem statement raus (oder mach daraus ",R.rnummer").
You have an error in your SQL syntax near 'INNER JOIN rnummer R on(K.ID = R.KID) WHERE R.rnummer = 6' at line 1
K.rnummer aus SELECT entfernt...
ok, machen wir es uns mal einfach:
$sql = "SELECT
K.*, R.*
FROM kunden K
INNER JOIN
rnummer R on (K.ID = R.KID)
WHERE R.rnummer = ".$rnr;
You have an error in your SQL syntax near 'INNER JOIN rnummer R on (K.ID = R.KID) WHERE R.rnummer = 6' at line 1
Die Antwort...
Müssen die Felder in der Tabelle (ID, KID) irgendwie besonders sein?
kannst du mal bitte einen dump deiner tabellen posten (phpMyAdmin)
das sollte zB so aussehen:CREATE TABLE schachtel (
id int(11) NOT NULL auto_increment,
menuid int(11) NOT NULL default '0',
...
...
PRIMARY KEY (id)
) TYPE=MyISAM;
Hab ich gemacht.
Hat neue tabelle erstellt - was wolltest Du jetzt da wissen?
*grmpf*
du solltest mit dem beispiel KEINE neue tabelle bei dir erstellen :goth:
ich will DEINE tabellen sehen. die ausgabe da oben ^^ war für dich als muster gedacht
Tschuldigung - aber wie mach ich einen "dump"?
phpmyadmin => datenbank auswählen => tabelle auswählen
auf der seite findest du im unteren teil einen punkt
(bei neueren versionen steht da "EXPORT" o.ä. als menüpunkt
Dump (Schema) der Tabelle anzeigen
- darunter ist eine tabelle mit check-/radioboxen
- nur "struktur" auswählen
- button "ok" anklicken
CREATE TABLE kunden (
ID int(11) unsigned DEFAULT '0' NOT NULL,
Datum datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PASS varchar(15) NOT NULL,
Anrede varchar(4) NOT NULL,
Firma varchar(30) NOT NULL,
Name varchar(30) NOT NULL,
Vorname varchar(30) NOT NULL,
KName varchar(30) NOT NULL,
GebDatum varchar(10) NOT NULL,
Strasse varchar(50) NOT NULL,
StrasseNr varchar(7) NOT NULL,
PLZ mediumint(5) unsigned DEFAULT '0' NOT NULL,
Wohnort varchar(50) NOT NULL,
Telefon varchar(30) NOT NULL,
Telefax varchar(30) NOT NULL,
eMail varchar(50) NOT NULL,
Homepage varchar(50) NOT NULL,
Referenz varchar(40) NOT NULL,
UNIQUE dopp (Name, Vorname, GebDatum)
);
CREATE TABLE rnummer (
ID int(11) DEFAULT '0' NOT NULL auto_increment,
rnummer int(11) DEFAULT '0' NOT NULL,
KID int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (ID),
UNIQUE rnummer (rnummer)
);
DANKE!
code.tags by Abraxax
hmm irgendwie kommen "_" in die syntax. hab das ganze mal getestet:
sql:$sql = "SELECT K.*, R.* FROM kunden K INNER JOIN rnummer R on (K.ID = R.KID) WHERE R.rnummer = ".$rnr." ";
die tabellen (etwas geändert in kunden)
CREATE TABLE kunden (
ID int(11) NOT NULL auto_increment,
Datum datetime NOT NULL default '0000-00-00 00:00:00',
PASS varchar(15) NOT NULL default '',
Anrede varchar(4) NOT NULL default '',
Firma varchar(30) NOT NULL default '',
Name varchar(30) NOT NULL default '',
Vorname varchar(30) NOT NULL default '',
KName varchar(30) NOT NULL default '',
GebDatum varchar(10) NOT NULL default '',
Strasse varchar(50) NOT NULL default '',
StrasseNr varchar(7) NOT NULL default '',
PLZ mediumint(5) NOT NULL default '0',
Wohnort varchar(50) NOT NULL default '',
Telefon varchar(30) NOT NULL default '',
Telefax varchar(30) NOT NULL default '',
eMail varchar(50) NOT NULL default '',
Homepage varchar(50) NOT NULL default '',
Referenz varchar(40) NOT NULL default '',
PRIMARY KEY (ID)
) TYPE=MyISAM;
CREATE TABLE rnummer (
ID int(11) NOT NULL auto_increment,
rnummer int(11) NOT NULL default '0',
KID int(11) NOT NULL default '0',
PRIMARY KEY (ID),
UNIQUE KEY rnummer (rnummer)
) TYPE=MyISAM;
es läuft so fehlerfrei (bei mir). wie gesagt, achte darauf, dass sich in die syntax
keine "_" einschleichen.
You have an error in your SQL syntax near 'INNER JOIN rnummer R on (K.ID = R.KID) WHERE R.rnummer = 6 ' at line 1
Sollte ich vielleicht auch die kunden-Tabelle ändern? Was hast Du denn geändert - ich seh nix...
# meine tabelle
CREATE TABLE kunden (
ID int(11) NOT NULL auto_increment,
...
PRIMARY KEY (ID)
) TYPE=MyISAM;
# deine tabelle
CREATE TABLE kunden (
ID int(11) unsigned DEFAULT '0' NOT NULL,
...
UNIQUE dopp (Name, Vorname, GebDatum)
);
hier sind die abweichenden zeilen
du hast bei phpMyAdmin auch die möglichkeit, eine abfrage direkt abzusetzen.
über dem eingabefeld steht "SQL Befehl(e) ausführen ..."
da gibst du nur zum test malSELECT K.*, R.* FROM kunden K INNER JOIN rnummer R on (K.ID = R.KID) WHERE R.rnummer = 6ein und klickst auf OK
noch was: dein plz-feld solltest du nicht als "mediumint" definieren sondern als "varchar". plz aus dem osten sind sonst nur 4-stellig durch die 0 am anfang.
#1064 - You have an error in your SQL syntax near 'INNER JOIN rnummer R ON ( K.ID = R.KID )
WHERE R.rnummer = 6 LIMIT 0, 30' at line 3
Danke für den Tipp. Weisst Du eine Alternative?
Jörg
ich muss das alles nicht verstehen :confused:
das läuft bei mir ebenfalls problemlos:SELECT kunden.*, rnummer.* FROM kunden , rnummer where kunden.ID = rnummer.KID and rnummer.rnummer = 6
- tabelle kunden hast du aber geändert, oder?
- welche mysql-version hast du ? höher als "3.23.17"
- wenns immer noch nicht klappt, mach einen dump der inhalte der beiden tabellen
- lösch die tabellen
- spiel meinen tabellen-dump mal ein
- spiel deine daten wieder ein
- teste die abfrage
Das wird das Problem sein...
Bei Strato gehostet:
Verschachtelte Abfragen nach dem Muster "SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);" sind nicht möglich
Views, in denen eine SELECT-Anweisung gespeichert werden kann, sind derzeit noch nicht möglich (vom Hersteller aber geplant)
SELECT... INTO TABLE ist nicht möglich
...oder seh ich das falsch?!
Jörg
...ES LAG NICHT AN STRATO SONDERN AN DER mySQL-VERSION:
ES GEHT!!!!!!
BIN TOTAL HAPPY - VIELEN DANK!!!!!!!!!!!
Jörg
|
-
- |