PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleine Mysql Frage (Closed)



Masterphil
14.04.2007, 16:10
Ich dacht ja ich bekomms selbst hin, dem ist aber nicht so.

Es geht um folgenden SQL-Befehl:


$werberlos = db_query("SELECT * FROM ".$db_prefix."_werberdaten where werber = '0'");

Damit wird letztendlich ne Liste der Werberlosen User angezeigt.
(Mehr Code kann ich leider nicht posten, ist aber auch nicht notwendig dafür)

Ich denke mal man muss einfach nur um die Ecke denken, aber naja.

Wie kann ich das hinbekommen, das zusätzlich (wahrscheinlich vorher) überprüft wird, ob die User gesperrt sind oder nicht ?

Soll heißen das $werberlos dann die Informationen der Werberlosen und Freigeschalteten User enthält, nicht nur die der Werbelosen, wie es jetzt ist.

Danke schonmal für Hilfe.

MfG

DimpleX
14.04.2007, 16:28
das kannst du mit and/or bedingung machen,
werberlos='0' or irgendwas='xx'

oder

werberlos='0' and irgendwas='xx'


hoffe hilft dir ein wenig weiter

mfg
DimpleX


edit : hier noch link mit ner erklärung
http://sql.1keydata.com/de/sql-and-or.php

NightX
14.04.2007, 16:45
edit

DimpleX
14.04.2007, 16:55
wenn es in anderen tabellen steht kann man das ja mit joint machen, aber ich wollte nicht zuweitausholen da ich die basis kenntnisse des beitrag erstellers nicht kenne

DimpleX

Gremlin
14.04.2007, 18:27
SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'


So sollte es funzen, ansonsten hab ich bockmist gebaut ;) wenn es nicht klappt sag mal die FEhlermeldung (mysql_error() )

Masterphil
15.04.2007, 23:32
Erstmal danke für die Antworten.

Ich hab es leider micht hinbekommen.

Habe aus dem Code oben mit Gremlins vorschlag folgendes draus gemacht:


$werberlos = SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1');

Leider kommt nichts,die Seite wird insgesammt nicht angezeigt, auch keine Fehlermeldung...

Also hab ich gebastelt, weil es auch so komisch aussah und das draus gemacht:


$werberlos = db_query("SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'");

Nun wird die Seite wieder angezeigt, aber die User nicht gelistet...

Was könnte falsch sein ?
Was kann ich noch machen?

Danke schonmal für Antwort.

MfG und gute nacht.

Hardy
15.04.2007, 23:37
$werberlos = db_query("SELECT uid FROM ".$db_prefix."_werberdaten"
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'");

hast " vergessen in der ersten zeile

Gremlin
15.04.2007, 23:45
Original von hardliner


$werberlos = db_query("SELECT uid FROM ".$db_prefix."_werberdaten"
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'");

hast " vergessen in der ersten zeile

nein da muss keins hin. Bekommst du eine Fehlermeldung mit mysql_error()

Hardy
15.04.2007, 23:57
Tja das ist natürlich doof wenn man die datenbankstruktur nicht kennt aber ich würde es mal als left join probieren

Masterphil
16.04.2007, 00:27
Also ich hab den Code von Hardliner mal probiert, da kommt das raus was bei meinem ersten versuch rauskam, die Seite wird gar nicht mehr richtig angezeigt...


@Gremlin und Harliner: Danke für die Hilfe euch beiden...

@Gremlin: Mein es kommt keine Fehlermeldung. Die Seite wird angezeigt aber es werden keine User gelistet, so wie es ja sein soll.

Mit dem origakl Code werden User angezeigt, aber leider auch gesperrte...

Bitte helft mir...

MfG und nochmal gute nacht.

plopp
16.04.2007, 10:50
Versuch doch mal, die sql-anweisung erstmal im phpmyadmin zum laufen zu bringen.
Bei evtl. Fehlern bei sql und/oder php zeigt vms meistens keine Fehlermeldung an, da kann man dann lange suchen.
Bei phpmyadmin bekommst du eine sql-fehlermeldung wenn es nicht funzt, womit man dann die Fehlerursache finden kann.

Masterphil
16.04.2007, 11:36
So war eben in phpMyAdmin, dabei kam folgendes raus.

Mache ich dort:


SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'


kommt folgende Fehlermeldung:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '".$db_prefix." _werberdaten JOIN ".$db_prefix." _kontodaten ON ".$db_prefix." ' at line 1


Mach ich dort:


db_query("SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'");

kommt folgende Fehlermeldung:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'db_query("SELECT uid FROM ".$db_prefix."_werberdaten
JOIN ".$db_prefix."_kontod' at line 1

Mach ich dort:


db_query("SELECT uid FROM ".$db_prefix."_werberdaten"
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'");

Kommt folgende Fehlermeldung:

Fehler
Es scheint einen Fehler in Ihrer MySQL-Abfrage zu geben. Die MySQL-Fehlerausgabe, falls vorhanden, kann Ihnen auch bei der Fehleranalyse helfen.

ERROR: Nicht geschlossene Anführungszeichen @ 236
STR: "
SQL: db_query("SELECT uid FROM ".$db_prefix."_werberdaten"
JOIN ".$db_prefix."_kontodaten
ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid
WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'")


SQL-Befehl:

db_query("SELECT uid FROM ".$db_prefix."_werberdaten" JOIN ".$db_prefix."_kontodaten ON ".$db_prefix."_werberdaten.uid = ".$db_prefix."_kontodaten.uid WHERE ".$db_prefix."_werberdaten.werber = '0' && ".$db_prefix."_kontodaten.status='1'")

MySQL meldet:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'db_query("SELECT uid FROM ".$db_prefix."_werberdaten"
JOIN ".$db_prefix."_konto' at line 1


Hoffe nun kann einer komnkret helfen...

MfG

NightX
16.04.2007, 12:02
edit

Gremlin
16.04.2007, 15:20
NightX er möchte nur die User auslesen, welche WERBERLOS und FREIGESCHALTET sind, wenn du das mit einer zweiten While abfrage löst, dann geht das aber umständlich. Man kann es auch mit einer Abfrage lösen!



So war eben in phpMyAdmin, dabei kam folgendes raus.
In phpMyAdmin musst du ".$db_prefix." jeweils durch vms ersetzen ;)

Masterphil
16.04.2007, 21:31
Ich wollt mal sagen da mir der Vorschlag von NightX bisher am meisten bringt.

Es werden alle Werbelosen User angezeigt und dann steht jeweils da ob er aktiv oder gesperrt ist.

Das kommt den ganzen schon sehr nahe.


Nur wollte ich keine neue Tabelle, sondern das eben die im ersten Post gezeigte Zeile erweitert wird.

Mann könnte es doch bestimmt so ähnlich wie NightX vorgeschlagen hat hinbekommen.

Das Problem ist das das ganze über die variable $werberlos laufen soll.

Bitte helft mir.

MfG und gute nacht.

Masterphil
19.05.2007, 13:35
Hier kann geschlossen werden, bekomme nun hilfe über ICQ...

MfG

breaker
20.05.2007, 19:18
Original von Masterphil

$werberlos = db_query("SELECT * FROM ".$db_prefix."_werberdaten where werber = '0'");

Wie kann ich das hinbekommen, das zusätzlich (wahrscheinlich vorher) überprüft wird, ob die User gesperrt sind oder nicht ?
MfG



$user_gesamt = 0;
$user_gesperrt = 0;
$user_nicht_gesperrt = 0;

$werberlos = db_query("SELECT * FROM ".$db_prefix."_werberdaten where werber = '0'");
while($res1=sql_fetch_array($werberlos)) {
switch($res1['sperre']) {
case 0: $user_nicht_gesperrt++; break;
case 1: $user_gesperrt++; break;
}
$user_gesamt++;
}

So sollte es wohl gehen ;)

Die Variable für "sperre" mußt du noch anpassen ;)

// Edit .....ok, hab den Thread nicht gelesen.....aber als Performance-Beispiel lasse ich es mal stehen ;)

Masterphil
14.06.2007, 12:46
Wie schon gesagt habe ich Hilfe in ICQ bekommen und alles funzt so wie es soll.

Mein dank nochmal an Ostsan...

Hier kann geschlossen werden...

Danke...

MfG

[Edit vom 12.05.08]
Habe eben diesen Threat von mir entdeckt und mache nun zu, da ich dies ja selbst wollte.

MfG