Neue DB-Struktur, altes Problem!

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Benutzeravatar
fasse
Administrator
Beiträge: 6228
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

In der Fehlermeldung steht
Not unique table/alias: 'row7id10'
Das heißt du hast irgendwas doppelt mit row7id10.
Schaut man dann in dein SQL-Statement so sind folgende Zeilen 2x darin vorhanden:

Code: Alles auswählen

LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10 
Das ist 1x zuviel.
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Danke, jetzt kommt eine deutlich kleinere Gruppe zum Vorschein, aber leider immer noch nicht die, welche ich gerne hätte. Er bringt mir jetzt auch Mitglieder die 1950 eingetreten sind. Ich brauche aber diejenigen, die zwischen 15 und 19 Jahren im Verein sind. Danach die 20 -25; 26-30; usw.

Wie erhalte ich die jetzt? Und wie erhalte ich ein deutsches Datum?

Gruß
Gerhard
Benutzeravatar
fasse
Administrator
Beiträge: 6228
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Na, dann musst du mit der Zeile

Code: Alles auswählen

AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -15 year) 
herumspielen.

Du brauchst direkt darunter dann eine Kopie dieser Zeile mit ein paar Änderungen:
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -20 year)
Diese beiden Stellen musst du dann entsprechend anpassen und das Statement müsstest du dann für jede Gruppe absetzen.
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Super die Ausgabe klappt, leider aber noch immer mit amerikanischem Datum
Bxxxx, Anja seit 1993-01-01
Schöner wäre:
Bxxxx, Anja seit 01.01.1993
Wie kriege ich das jetzt geändert?

Gruß
Gerhard



[/quote]
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Hi Gerhard,

Du hast in Deiner Abfrage den folgenden Code zur Ausgabe dieser Zeile:

Code: Alles auswählen

if(between(15, $intra_day))
{
echo $user->getValue("Nachname").", ".$user->getValue("Vorname")." seit ".$intra_day;
echo "<br>";
} 
Du kannst das Datum umformatieren mit der date() Funktion von php:

Code: Alles auswählen

if(between(15, $intra_day))
{
echo $user->getValue("Nachname").", ".$user->getValue("Vorname")." seit ".date('d.m.Y', strtotime($intra_day));
echo "<br>";
}
Müsste m.E. so passen... :wink:

Gruss,
Matze
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Hallo Matze,

bist einfach ein Genie! Danke, so passt das.

Ohne jetzt aber gierig zu sein: Noch ein Problem
Gögxxx, S. seit 12.05.1992
Grünxx, P. seit 05.05.1993
Häubxxx, N. seit 10.02.1993
Kühxxx, A. seit 24.05.1992
Kühxxx, M. seit 01.12.1990
Schärxx, Y. seit 20.04.1993
Ich mein, ich weis ja wie die Leutchen heißen, aber doof sieht es schon aus. Wie krieg ich das jetzt geändert?

Ich habe mich schon durchs Netz geklickt und bin dann hier hängengeblieben:

http://phpforum.de/forum/showthread.php?t=217877

Und das habe ich dann eingebaut:
header('Content-type: text/html; charset=utf-8');
Ändert aber nix!

Hast Du eine Idee?

Gruß
Gerhard
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Hast Du Deine Datei als UTF-8 gespeichert? Also nicht nur die Header-Angabe sondern auch die Datei selbst? Lässt sich z.B. mit notepad++ machen...
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Nein, keine Ahnung wie das geht. :( Ich habe die Abfrage in ein Table gepackt und fertig. Von "in Utf8" packen hat mir bisher noch niemand was gesagt. Wie geht das?

Gruß
Gerhard
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

OK, vergiss das "Wie geht das". Ich habe Notepad++ installiert, die Datei jetzt damit aufgerufen und mit utf8 abgespeichert. Jetzt flutscht das Ganze.
Allerdings muss ich sagen, dass ich nicht sehe, wo der Unterschied zur alten Datei ist.

Daher: Was macht Notepad++ ???

Danke
Gerhard
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

OK, noch ne Frage. Ich komme mit der Abfrage einfach nicht klar.

Ich möchte jetzt alle Mitglieder ausgeworfen haben, die im aktuellen Jahr geehrt werden sollen. Und zwar sortiert nach 15, 25 und 50jähriger Vereinszugehörigkeit. Ich habe mir jetzt das bisherige Statement genommen und war der Meinung, dass ich es einfach abändern kann indem ich hier das "<" durch ein "=" ersetze:
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -15 year)
und die folgende, einschränkende Zeile
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -19 year)
weglasse. Irrtum! Geht nicht. Kommt gar nichts mehr raus!

Hier jetzt mal das, was ich "gebastelt" habe:
<table width="400" cellspacing="0" cellpadding="5" border="0" bordercolor = "red" borderstyle="solid" align="center">
<tbody>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
include_once($_SERVER['DOCUMENT_ROOT']. "/XXXX/adm_program/system/common.php");

//dieses Jahr
$this_year = date("Y");

function more_than_years($years, $intra_day)
{
$intra_year = substr($intra_day,0,4);
if($this_year - $intra_year < $years)
{
return true;
}
else
{
return false;
}
}

$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -15 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Im Jahr $jahr seit 15 Jahren im Verein</font></u><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -25 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Seit 25 Jahren im Verein</font></u><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -50 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Seit 50 Jahren im Verein</font></u><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
</tbody>
</table>
Ergebnis:
Im Jahr 2008 seit 15 Jahren im Verein


Seit 25 Jahren im Verein


Seit 50 Jahren im Verein

Leere! Warum?????

Ich kapier das einfach nicht. Wenn ich doch sage:

Ich will alles was dieses Jahr minus 15 Jahren ist sollte das doch so gehen:

AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -15 year)

Wo liegt mein Denkfehler??

Danke und einen guten Rutsch!
Gerhard
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Erledigt!!

Ich habe die Lösung:
<table width="400" cellspacing="0" cellpadding="5" border="0" bordercolor = "red" borderstyle="solid" align="center">
<tbody>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$jahr = date("Y");
echo "<u><strong><font size=\"+2\" color = \"red\">Im Jahr $jahr zu Ehren</font></u></strong><br><br>";
?>
</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
include_once($_SERVER['DOCUMENT_ROOT']. "/xxxxx/adm_program/system/common.php");

//dieses Jahr
$this_year = date("Y");

function more_than_years($years, $intra_day)
{
$intra_year = substr($intra_day,0,4);
if($this_year - $intra_year < $years)
{
return true;
}
else
{
return false;
}
}

$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -15 year)
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -16 year)

WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

echo "<u><strong><font size=\"+1\" color = \"red\">Seit 15 Jahren im Verein</font></u></strong><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -25 year)
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -26 year)

WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

echo "<u><strong><font size=\"+1\" color = \"red\">Seit 25 Jahren im Verein</font></u></strong><br><br>";

while($row = $g_db->fetch_array($result))

{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -50 year)
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -51 year)

WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

echo "<u><strong><font size=\"+1\" color = \"red\">Seit 50 Jahren im Verein</font></u></strong><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>

</td>
</tr>
</tbody>
</table>
Manchmal ist man doch blind! Ich habe die zweite Zeile wieder eingebaut und dann einfach als Begrenzung ein Jahr höher gewählt - und passt!

Gruß
Gerhard
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Doch noch eine Frage:

Ich möchte, dass mir die Abfrage bei einer leeren Ausgabe den Satz: "Keine Mitglieder vorhanden." ausgibt.

Ich habe das jetzt so versucht:
.....
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);

$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Im Jahr $jahr seit mind. 60 Jahren im Verein</font></u><br><br>";

while($row = $g_db->fetch_array($result))
{
//Kleine erkl峵ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen &#56394;&#56690; den User hat
$user = new User($g_db, $row['usr_id']);

//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen

if ($user == 0) {
echo "<b>Keine Mitglieder vorhanden.</b>";
}


if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}

?>
Klappt aber nicht. Kann es sein, dass da kein "0" ausgegeben wird? Wenn ja, was dann?

Gruß
Gerhard
Andreas_Lang
Beiträge: 30
Registriert: 14. Jan 2009, 13:40
Wohnort: Nennslingen
Kontaktdaten:

statistiken

Beitrag von Andreas_Lang »

Hallo,

ich bin kein Entwickler habe aber das gleiche Problem und mir ein Brücke gebaut. Ich glaube da kannst du relativ schnell dein Problem lösen und die Entwickler von Admidio habe für andere Dinge Zeit die möglicherweise wichtiger und allgemeinbedeutender sind. Also meine Anregung lautet:

Lege im profil deine gewünschten Daten an (Alter ist ja schon vorhanden) ich legte mir z.B eine Kategorie sonstiges an und darin einen Profilfeld "Vereinseintritt". Dieses Feld habe ich als Datum definiert. jetzt nehme ich die Exportfunktion und exportiere z.B. aus Rolle Alle Mitglieder Name, Vorname und Vereinseintritt. Nach dem Export der Daten ziehe ich mir diese in Excel und kann dann mit ein paar Klicks entweder die Anzahl selektieren oder sogar eine grafische Auswertung erfolgen lassen. Wenn dir Acess geläufig ist kannst du die komplexeren Abfragen auch darüber laufen lassen. Bei mir klappt dies mit der Exportfunktion super

Andreas
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Beitrag von Gerhard0964 »

Hallo Andreas,

die Idee ist ja grundsätzlich nicht schlecht - aber leider nicht für meine Zwecke geeignet. Ich brauche die Daten für die Vereinswebseite - und das stets aktuell(!) - das geht nicht mit Excel.
Wenn da eine Datenbank mit den erforderlichen Daten ist, dann gibt es auch Wege diese auszulesen und zu interpretieren. Leider bin ich halt nicht das SQL Genie um mir diese Abfrage selbst zu bauen. Die sind einfach zu komplex für mich. :cry:

Daher geht meine Bitte an die Entwickler des Systems, oder an einen User, der sich damit auskennt und mir unter die Arme greifen kann.

Aber dennoch vielen Dank für den Tipp. Ich bin sicher, dass es einige gibt die damit zurecht kommen.

Gruß
Gerhard
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Hallo Gerhard,

ich gehe mal davon aus, dass Dein offenes Problem noch das Handling mit leeren Abfragen ist. Du kannst das so lösen (basierend auf Deinem Code von oben, habe ich leicht abgeändert):

Code: Alles auswählen

.....
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";

$result = $g_db->query($sql);
$num_rows = mysql_num_rows($result);

$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Im Jahr $jahr seit mind. 60 Jahren im Verein</font></u><br><br>";

if($num_rows == 0)
{
	echo "<b>Keine Mitglieder vorhanden.</b>";
}
else
{
	while($row = $g_db->fetch_array($result))
	{
	//Kleine erkl?ng
	//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
	$user = new User($g_db, $row['usr_id']);

	//Jetzt wird z.B. das Eintrittsdatum abgefragt
	$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen


	if(more_than_years(15, $intra_day))
	{
	echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
	echo "<br>";
	}
	}
}

?>
Damit sollte bei leeren Abfragen eine entsprcehende Ausgabe kommen, die entscheidene Zeile ist:
$num_rows = mysql_num_rows($result);

$num_rows enthält die Anzahl der Zeilen, die die Abfrage ergeben hat. Bei leeren Abfragen ist sie 0, damit kannst Du dann alles machen...

Hoffe es hilft!

Gruss,
Matze
Antworten