Seite 1 von 1

Umbauversuch Nickpageliste

Verfasst: Sa 28.Jan, 2006 08:19
von tom10
Ich möchte gie Nickpage-Liste für meine Liste umbauen.

Los gehts ich habe diesen Teil der Nickpage Liste:

Code: Alles auswählen

//
//Konfiguration einlesen
//
$sql = "SELECT registered_only FROM ".NICKPAGECONFIG_TABLE;
if(!$result = $db->sql_query($sql))
{
	message_die(CRITICAL_ERROR, "Konnte Querrie auf Allgemeine Nickpagemod Konfiguraionstabelle nicht ausführen!", "", __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$registered_only = $row['registered_only'];
Für meine Liste so umgebaut:

Code: Alles auswählen

//
//Konfiguration einlesen
//
$sql = "SELECT user_mod_engine FROM ".USERS_TABLE;
if(!$result = $db->sql_query($sql))
{
	message_die(CRITICAL_ERROR, "Konnte Querrie auf Allgemeine USERS 

Konfiguraionstabelle nicht ausführen!", "", __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$user_mod_engine = $row['user_mod_engine'];
Ist das so richtig?

Ich denke mal das ist eine Abfrage ob in der bestimmten tabelle ein Eintrag ist ?!? Oder wie muß man das verstehen ? :eek:

In der Nickpage_list ist dies mit drin:

Code: Alles auswählen

//
//Seitenanzeige
//
//zaehle alle np´s
$sql = "SELECT COUNT(b.uid) AS zaehle FROM ".USERS_TABLE." a, ".NICKPAGE_TABLE." b WHERE b.uid=a.user_id and b.status <> 1 ". $letter_sql;
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Konnte Nickpage´s nicht zählen!', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$anzahl = $row['zaehle'];
$ende = ceil($anzahl/$seiten_pro_seite);
if($anfang > 1 AND $ende > $anfang)
{
	$move = "<a href=?site=".($anfang -1)."&letter=".$by_letter."&mode=".$mode."&order=".$sort_order.">".$lang['NP_SITE_BEFORE']."</a>&nbsp;&nbsp;<a href=?site=".($anfang + 1)."&letter=".$by_letter."&mode=".$mode."&order=".$sort_order.">".$lang['NP_NEXT_SITE']."</a>";
}
elseif($anfang > 1 AND $ende = $anfang)
{
	$move = "<a href=?site=".($anfang -1)."&letter=".$by_letter."&mode=".$mode."&order=".$sort_order.">".$lang['NP_SITE_BEFORE']."</a>";
}
elseif($ende > $anfang)
{
	$move = "<a href=?site=".($anfang + 1)."&letter=".$by_letter."&mode=".$mode."&order=".$sort_order.">".$lang['NP_NEXT_SITE']."</a>";
}
Ich bekomme das aber nicht angepasst, weil ich nicht weis, welcht Tabellen da verglichen werden und wie die Bedingung da anzupassen ist.

Es müste ja eigentlich der Teil sein...

Code: Alles auswählen

$sql = "SELECT COUNT(b.uid) AS zaehle FROM ".USERS_TABLE." a, ".NICKPAGE_TABLE." b WHERE b.uid=a.user_id and b.status <> 1 ". $letter_sql;
if( !($result = $db->sql_query($sql)) )

Meine Liste sieht momentan so aus:
login / pass = phpBB
Hier lang !

Sie soll aber im Endeffect nur die User mit einem Eintrag in den Autorelevanten Tabellen zeigen. Daher hier mein versuch dazu.

Verfasst: Sa 28.Jan, 2006 11:07
von oxpus
Solange keiner erfährt, was in der Tabelle an Feldern existiert, ist es schwer, Deinen Code zu überprüfen ;)
Also die Tabellendefinition wäre schon nett :D

Verfasst: Sa 28.Jan, 2006 11:14
von tom10
Also ich hänge mal meine Versuchsdatei an....
Und auch ein Bild der tabellen.
Die mit blau markierten werden verwendet für die Liste. Die Übersicht ist aus der tabelle USERS.

Verfasst: Sa 28.Jan, 2006 11:27
von oxpus
Ach so!
Du willst die Nickpage nur der User anzeigen lassen, die in ihrem Profil Auto-Daten erfasst haben? Rchtig?

Verfasst: Sa 28.Jan, 2006 11:31
von tom10
Ja, genau das ....Nur die User die da was ausgefüllt haben. Die anderen nicht !

Verfasst: Sa 28.Jan, 2006 11:55
von oxpus
Okay, werde ich dann nachher mal versuchen...

Verfasst: Sa 28.Jan, 2006 13:36
von tom10
Oh, ja super... das wäre sehr nett !

Verfasst: Sa 28.Jan, 2006 16:02
von oxpus
Versuchs mal mit dieser:

[ Attachment gelöscht am Sa 28.Jan, 2006 19:53 von oxpus ]

Verfasst: Sa 28.Jan, 2006 16:06
von tom10
Leider werden noch alle user angezeigt.
Du, Oxpus... nimm mal lieber die Datei zum probieren die ist weniger vermüllt mit allem möglichen Versusprojekten von mir.

Verfasst: Sa 28.Jan, 2006 19:55
von oxpus
2. Versuch:

Verfasst: So 29.Jan, 2006 07:57
von tom10
Das hat nun schon einen ganz schönen Schritt nach vorne gemacht deine Arbeit. Danke schön.

Aaaaaaaber es werden noch ein paar User angezeigt, welche keinerlei Angaben zu den genannten Punkten gemacht haben.
Kannst Du noch raus bekommen warum die auch angezeigt werden obwohl die Felder nicht ausgefüllt wurden ?!? :eek:

Verfasst: So 29.Jan, 2006 10:44
von oxpus
Soll diese Liste auf ALLE Car-Fields prüfen? Oder gibts es Schlüsselfelder???
Das Script prüft aktuell nur auf 1 Feld...

Verfasst: So 29.Jan, 2006 11:11
von tom10
Ja es wäre besser die Schlüsselfelder prüfen zu lassen... sind ja nicht all zu viel.
Also user_car_model, user_car_engine, user_car_year .

Heist also, wenn da irgend was din steht dann rein in die Liste.
Was natürlich auch i.o. wäre ist wenn generell was in der Liste eingetragen wurde kommen die schon in die Liste, was noch besser wäre.

Verfasst: So 29.Jan, 2006 12:58
von oxpus
Ist einfach: Ich habe in der Abfrage (Sind 2: Einmal die Daten und einmal für den Seitenumbruch!) die Bedingung erweitert. Da pack einfach die Felder rein, frei nach dem Motto:
AND feld2 = wert2 AND...

Verfasst: So 29.Jan, 2006 14:49
von tom10
Also ich habs mal versucht.


Den 1ten Teil hab ich so erweitert:

Code: Alles auswählen

$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_car_model_choice,user_car_engine_choice, user_car_year_choice, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
        FROM " . USERS_TABLE . "
        WHERE user_id <> " . ANONYMOUS . "
        	AND (user_car_model_choice <> '' OR user_car_model_choice IS NOT NULL)
          AND (user_car_engine_choice <> '' OR user_car_engine_choice IS NOT NULL) 
          AND (user_car_year_choice <> '' OR user_car_year_choice IS NOT NULL)
        ORDER BY $order_by";
if( !($result = $db->sql_query($sql)) )
Ist das so korrekt ?


Den 2ten Teil hab ich nun so abgeändert, damit keine Fehlermeldung mehr kommt.

Code: Alles auswählen

         $sql = "SELECT count(*) AS total
                FROM " . USERS_TABLE . "
                WHERE user_id <> " . ANONYMOUS . "
			AND (user_car_model_choice <> '' OR user_car_model_choice IS NOT NULL)
		  AND (user_car_engine_choice <> '' OR user_car_engine_choice IS NOT NULL)
      AND (user_car_year_choice <> '' OR user_car_year_choice IS NOT NULL)";
        if ( !($result = $db->sql_query($sql)) )
Am 1ten Teil weis ich nicht genau ob das so richtig ist, denn es werden immer noch ein paar User wie schon gehabt angezeigt die da nichts eingetragen haben.... :(

Verfasst: So 29.Jan, 2006 18:48
von oxpus
Ist eben die Frage, ob es wirklich die richtigen Felder sind, die Du hier abfragst.
Aber ansonsten sind diese Abfragen korrekt.

Verfasst: Mo 30.Jan, 2006 06:20
von tom10
Du, Oxpus, wie kann ich denn genau prüfen ob ich auch wirklich die richtigen Felder abfrage?

Verfasst: Mo 30.Jan, 2006 11:56
von oxpus
In dem Du prüfst, welche Felder wirklich gefüllt sein müssen, damit auch nur die User angezeigt werden.
Wenn das andere Felder sind, die ja bei den "falschen" Usern leer sind, musst Du die (zusätzlich) mit in die Abfrage einbauen.

Verfasst: Mo 30.Jan, 2006 13:18
von tom10
Alles klar danke.

EDIT:

Weiteres Problem.

Wenn ein User nichts Einträgt, werden die vorselektierten Felder als Eingabe gewertet und somit angezeigt.

Was stimmte denn nun da wieder nicht ? :eek: ^2

Verfasst: Mo 30.Jan, 2006 18:57
von oxpus
Ja, welche Vorgaben denn?

Verfasst: Di 31.Jan, 2006 07:29
von tom10
Ja, sorry hier zur Erklärung.

Edit: ich hab mal die voreingetragenen Sachen raus genommen. Mal sehn ob das was bringt. :eek:

Verfasst: Di 31.Jan, 2006 08:30
von oxpus
Dann müsste man die abfangen, daß diese nicht gespeichert werden.
Also, wenn eben genau die Vorgaben vorhanden sind.
Oder man zeigt diese Texte als Erklärung hinter den Feldnamen an ;)

Verfasst: Di 31.Jan, 2006 08:47
von tom10
Habs anders glöst, siehe über dir...