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)
problem mit count - ich kriegs einfach nicht hin [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
problem mit count - ich kriegs einfach nicht hin


 
Thommy
21-02-2002, 10:25 
 
hi,

also ich bin mal wieder am verzweifeln. Und zwar hab ich eine Tabelle in welcher Jobangebote gespeichert werden sowie eine andere Tabelle in der die zu den Jobs ein gehenden Bewerbungen gespeichert werden.

Ich möchte nun auf einer Seite alle Jobs zeigen welcher in der DB sind und die Anzahl der zu diesen einzelnen Jobs eingegangenen Bewerbungen. Bis hier hin ist das auch kein Problem. Ich möchte nun aber noch anzeigen, wenn neue (noch ungesehene Bewerbungen) unter den Bewerbungen des jeweiligen Jobs dabei sind. Dazu hab ich in der Bewerbungen - Tabelle eine Spalte (gesehen), welche bei jeder gesichteten Bewerbung den Wert 1 und bei ungesichteten Bewerbungen den Wert 0 hat.

Die normale Anzeige aller Jobs mit den dazu eingegangenen Bewerbungen funktioniert mit folgender Abfrage:

$sql="SELECT j.job_id, j.titel_intern, j.referenznr_intern, j.bew_formular, j.status, b.bew_id, b.gesehen,
COUNT(b.bew_id) AS anzahl
FROM jobs j, jobs_bewerbungen b
WHERE j.unt_user_id=$unt_session[unt_user_id] AND b.job_id = j.job_id
GROUP BY j.job_id";

Wie mach ich dem Computer am besten klar, dass eine Markierung mach soll, wenn bei allen für den speziellen Job eingegangenen Bewerbungen eine dabei ist wo die Spalte b.gesehen den Wert 0 hat????


Gruss und wie immer Vielen Dank

Thommy

 
schmalle
21-02-2002, 14:15 
 
einfach ne if() schleife ...


while($row = mysql_fetch_array($sql)) {
if($row[b.geshen] == 0) {
echo "<font color=\"FF0099\">";
} else {
echo "<font color=\"000000\">;
}
}


... oder hab ich dich jetzt nicht verstanden?

 
Thommy
21-02-2002, 15:18 
 
hi schmalle

ja, aber das Problem ist das ich alle gefundenen Datensätze per group by (GROUP BY j.job_id) gruppieren muss. Und innerhalb dieser Gruppe können sich sowohl Bewerbungen mit "gesehen" = 1 bzw 0 befinden.

Und dann funzt das mit "if($result['gesehen'] != '0')" glaube nicht mehr.

oder hab ich hier irgendeinen Denkfehler???

Gruss

thommy

 
schmalle
21-02-2002, 15:26 
 
warum sollte das nicht gehen? probiers doch ersteinmal ...

 
Thommy
21-02-2002, 18:27 
 
nee funzt leider nicht

wenn beispeilsweise 8 Bewerbungen auf einen Job eingegangen sind, dann hat er ja normalerweise 8 * $job[gesehen], welche irgendwie gruppiert werden (weil gruppiert wird ja nach j.job_id (muss auch so sein wegen der Ausgabe, der Jobs)). Aber welchen der 8 * $job[gesehen] er in den gruppierten Datensatz nimmt weiss ich nicht.

Naja und afgrund dessen funzt der Rest halt nicht

 
MelloPie
21-02-2002, 21:05 
 
mach mal group by jobID, gesehen
dann haste auch ein Unterschied zwischen gesehen und nicht gesehen

 
Thommy
22-02-2002, 14:30 
 
stimmt das könnt klappen!

hab aber noch ein Problem: und zwar wenn zu einem Job noch keine Bewerbung eingegangen ist, dann ziegt er bei meiner Abfrage ja diesen Job überhaupt nicht an, weil ja die Bedingung

b.job_id = j.job_id

nicht erfüllt ist.

Kann ich dem das irgendwie in sql klar machen, dass er den Datensatz der job-Tab trotzdem lesen soll??


Danke euch

 
MelloPie
22-02-2002, 17:18 
 
jo mit left join im select statement

 
Thommy
22-02-2002, 18:32 
 
Hey Danke für die Hilfe !!!!!!!!

 
Thommy
22-02-2002, 20:50 
 
Also doch noch n kleines Problemchen.

Das mit dem groupby j.job_id, b.gesehen ist ne super id - ich weiss bloss nicht rich wie ichs für die Ausgabe aufbereiten muss.

Also ich geb alle DS (sprich alle Jobs) mit ner foreach Schleife aus:

$sql="SELECT j.job_id, j.titel_intern, j.referenznr_intern, j.bew_formular, j.status, b.bew_id, b.gesehen,
COUNT(b.bew_id) AS anzahl
FROM jobs j
LEFT JOIN jobs_bewerbungen b ON b.job_id = j.job_id
WHERE j.ordner_id=$ordner_id AND j.status != 3
GROUP BY j.job_id, b.gesehen";

$result=mysql_query($sql);
$ret = array();
while ($job=mysql_fetch_array($result))
array_push( $ret, $job );

ungefähr so

foreach ( $ret as $job )
{
print "$job[titel_intern]";
print "$job[anzahl]";
etc
}

nun würde er ja alle jobs, welche Bewerbungen haben die gesehen und auch Bewerbungen haben welche nicht gesehen wurden - 2 mal ausgeben.

wenn ich ne if Bedingung davorhänge

foreach ( $ret as $job )
{
if ($job[gesehen]=="1")
{
print "$job[titel_intern]";
print "$job[anzahl]";
etc..
}
}

tut er das zwar nicht, er zeigt mir aber ne falsche Anzahl an Bewerbungen welche gesamt (gesehen/ungesehen)eingegangen sind.

Naja und eigentlich möchte ich ja für jeden Job anzeigen lassen (ob neue Bewerbungen dabei sind bzw wieviel gesamt/ wieviel neue)

Hat eine ne Idee wie ich die beiden arrays verknüpfen könnte ??

Gruss und Danke!!

Thommy

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:01 Uhr.