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)
Wo ist der Fehler ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wo ist der Fehler ?


 
speeedy018
09-08-2007, 17:12 
 
Hallo,

ich habe da ein kleines Problem mit meinem Script.
Wenn ich die DB auslese zeigt er mir aus irgendwelchen Gründen nicht alle Termine.


auslesen der DB:

$rs_termine = mysql_query("SELECT tid, personalid, kundennummer,memo,unix_timestamp(start) as start,
unix_timestamp(ende) as ende, (unix_timestamp(ende) - unix_timestamp(start))/$sec_per_row as dauer FROM termine");

indexieren der Daten:

while ($termin = mysql_fetch_array($rs_termine))
{
$termine[$termin['start']] = $termin;
}

anzeigen der Daten:

elseif ((isset($termine[$Uhrzeit]) && $termine[$Uhrzeit]['personalid'] == $mitarbeiter['personalid']))
{
$last_termin = $Uhrzeit;
echo '<td style="background-color:#ff122f;" rowspan="'.$termine[$Uhrzeit]['dauer'].'">';
$kunde = mysql_fetch_array(mysql_query("SELECT kid,vorname, nachname FROM kunden
WHERE kid = '".$termine[$Uhrzeit]['kundennummer']."'"));
$memo = $kunde['nachname'].','.$kunde['vorname'].'('.$kunde['kid'].')<br>'.$termine[$Uhrzeit]['memo'];
echo '<script type="text/javascript">
function terminanlegen (url) {
fenster = window.open("index.php?id=terminanlegen&tid='.$termine[$Uhrzeit]['tid'].'",
"termine", "width=400, height=300, left=200, top=200, resizeable=no, scrollbars=no");
fenster.focus();
}
</script>';
echo '<a href="index.php?id=terminanlegen&tid='.$termine[$Uhrzeit]['tid'].'"
onclick="terminanlegen(index.php?id=terminanlegen&tid='.$termine[$Uhrzeit]['tid'].'); return false">';
echo $memo;
echo '</a></td>';
}


Wenn ich die Daten mit "WHERE personalid='1,2 oder 3'" auslese, bekomme ich alle Termine angezeigt. sonst ein paar aber nicht alle

Sieht jemand den Fehler ?

 
ministry
09-08-2007, 17:29 
 
vielleicht gibt es mehrere Termine mit gleichem Startdatum?

 
onemorenerd
09-08-2007, 17:32 
 
Kann es sein, dass mehrere Datensätze den gleichen Wert fürs Attribut start haben? Dann überschreibt nämlich der jeweils letzte Datensatz alle anderen in deiner While-Schleife.
Durch das Einschränken der Ergebnismenge mit WHERE ... hast du evtl. nur unterschiedliche Datensätze (bzgl. start) und deshalb kommt es dir so vor, als würde es dann klappen.

 
speeedy018
09-08-2007, 17:33 
 
du meinst gleiche startzeit ($Uhrzeit), nein die gibt es nicht, die starten alle unterschiedlich und enden auch bevor der nächste Termin startet

 
TobiaZ
09-08-2007, 17:45 
 
was passiert, wenn du die query in phpmyadmin ausführst? kommen dann alle?

 
speeedy018
09-08-2007, 17:47 
 
ja, es werden dann alle Datensätze angezeigt, sowohl mit als auch ohne personalid-Einschränkung.

 
onemorenerd
09-08-2007, 17:52 
 
Dann mach mal ein var_dump($termine) nach der While-Schleife.
Wenn da schon was fehlt, mach mal var_dump($termin) als ersten Befehl in der Schleife. Irgendwo muß ja was verloren gehen.

(Ich tippe immernoch auf Überschreiben ...)

 
speeedy018
09-08-2007, 17:57 
 
var_dump hatte ich auch schon geschaut, da sind die Termine aber auch schon NICHT drin ($termine). Ich würde es euch gern ersparen var_dump zu posten, den das ist ein bischen was an text.

edit:
var_dump ($termin); bringt "bool(false)"

 
TobiaZ
09-08-2007, 18:01 
 
edit:
var_dump ($termin); bringt "bool(false)"IN der Schleife? Das dürfte mal unwahrscheinlich bis unmöglich sein

 
speeedy018
09-08-2007, 18:07 
 
sorry, ich hatte das in die Whileschleife am ende eingesetzt (wurde hier nicht gepostet), jetzt habe ich es in die While Schleife (welche hier gepostet wurde) gesetzt und da ist der Termin vorhanden.

jetzt weis ich aber immer noch nicht warum das dann nicht angezeigt wird, warscheinlich wird es irgendwo überschrieben, aber wo ?

 
onemorenerd
09-08-2007, 18:08 
 
Na wo denn wohl? Hast ja nicht so viel Code in der Schleife. ;)

 
TobiaZ
09-08-2007, 18:09 
 
mehr als raten, oder deinen code komplett nachvollziehen können wir auch nicht, mit den spärlichen infos, die du lieferst. ;)

 
speeedy018
09-08-2007, 19:08 
 
ja er zeigt die termine nicht an, wo ein anderer Termin schon mal angefangen hat. das heist ich muss es nur anders indexieren. Danke, manchmal sieht man den Wald vor lauter Bäumen nicht.

gruß

speeedy018

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:50 Uhr.