Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 3.23.X] JOINS_Abfrage mit PHP [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 3.23.X] JOINS_Abfrage mit PHP


 
WUZL
04-09-2003, 10:03 
 
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

 
graf
04-09-2003, 10:09 
 
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

 
Abraxax
04-09-2003, 10:18 
 
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.

 
WUZL
04-09-2003, 10:23 
 
...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

 
graf
04-09-2003, 10:27 
 
$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!

 
WUZL
04-09-2003, 10:59 
 
...UND:
Wie krieg ich das in ein "echo" rein? Was muss ich da reinschreiben?

Vielen Dank schonmal :-)
Jörg

 
WUZL
04-09-2003, 11:16 
 
...muss ich da eine while-Schleife einbauen?

Jörg

 
Abraxax
04-09-2003, 11:29 
 
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.

 
WUZL
04-09-2003, 11:46 
 
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

 
Wurzel
04-09-2003, 11:49 
 
du hast noch was entscheidendes vergessen:

$query = mysql_query($sql) or die(mysql_error());

 
WUZL
04-09-2003, 11:55 
 
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...

 
WUZL
04-09-2003, 12:16 
 
$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?

 
Wurzel
04-09-2003, 12:37 
 
$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?

 
WUZL
04-09-2003, 12:41 
 
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

 
Abraxax
04-09-2003, 12:43 
 
sind die feldnamen korrekt? und sind sie korrekt über die tabelle angesprochen?

 
WUZL
04-09-2003, 12:47 
 
Ja, sind sie.

 
Wurzel
04-09-2003, 12:47 
 
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").

 
WUZL
04-09-2003, 12:52 
 
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...

 
Wurzel
04-09-2003, 12:59 
 
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;

 
WUZL
04-09-2003, 13:08 
 
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?

 
Wurzel
04-09-2003, 13:25 
 
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;

 
WUZL
04-09-2003, 13:31 
 
Hab ich gemacht.
Hat neue tabelle erstellt - was wolltest Du jetzt da wissen?

 
Wurzel
04-09-2003, 13:35 
 
*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

 
WUZL
04-09-2003, 13:42 
 
Tschuldigung - aber wie mach ich einen "dump"?

 
Wurzel
04-09-2003, 13:49 
 
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

 
WUZL
04-09-2003, 13:57 
 
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

 
Wurzel
04-09-2003, 14:25 
 
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.

 
WUZL
04-09-2003, 14:41 
 
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...

 
Wurzel
04-09-2003, 14:59 
 
# 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.

 
WUZL
04-09-2003, 15:12 
 
#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

 
Wurzel
04-09-2003, 15:35 
 
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

 
WUZL
04-09-2003, 17:00 
 
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

 
WUZL
04-09-2003, 19:03 
 
...ES LAG NICHT AN STRATO SONDERN AN DER mySQL-VERSION:

ES GEHT!!!!!!

BIN TOTAL HAPPY - VIELEN DANK!!!!!!!!!!!

Jörg

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:36 Uhr.