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)
[Variablen] Eintrag wird doppelt angezeigt [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 :
[Variablen] Eintrag wird doppelt angezeigt


 
alexa
21-02-2005, 17:12 
 
hallo leute,

heute habe ich ein schwieriges Problem zu lösen...

ich habe ein Formular ,in welches Daten eingegeben und in eine DB gespeichert werden, das klappt auch einwandfrei

Lass ich mir jetzt aber eine Übersichtsseite mit den Einträgen anzeigen, dann bekomme ich alle Einträge 3x angezeigt, obwohl der Eintrag nur einmal in der DB steht.

woran könnte das liegen ?

hier ein Ausschnitt aus dem Übersichtsscript

$sql = "SELECT * FROM vorfall v,mitarbeiter m,
einsatzstelle e WHERE v.mitarbeiterID = m.mitarbeiterID ORDER BY ".$sort."";


//echo $sql;
$result = mysql_query($sql);

while($row = mysql_fetch_object($result))
{
$class = ($class=='row0') ? 'row1' : 'row0';
echo "<tr class='".$class."'>
<td><span class='bez'>".$row->m_name."</span></td>
<td><span class='bez'>".$row->vorfall_text."</td><td>".date_mysql2german($row->date_added)."</td>";
echo "<td>
<a href=".$_SERVER['PHP_SELF']."?site=VorfallUebersicht&action=del&id=".$row->vorfallID.">".
"<img src=images/b_drop.png alt=löschen border=0>
</td>";
}

echo "</tr></table>";


liegt der Fehler ev. an meiner SQL-Abfrage ? wenn ja, wie muss ich Daten aus 2 tabellen abfragen ?

 
penizillin
21-02-2005, 17:16 
 
http://www.php-resource.de/forum/showthread.php?s=&threadid=50454
unbedingt beachten!

wozu dann in einer schleife auslesen, wenn du es nur 1 mal brauchst?

 
alexa
21-02-2005, 17:25 
 
unbedingt beachten!

erledigt ?

wozu dann in einer schleife auslesen, wenn du es nur 1 mal brauchst? [/B]

das script soll die mitarbeiter anzeigen und einen link anbieten zum löschen, deshalb die tabellarische Übersicht...

ich muss doch das resultset in einer Schleife auslesen, damit ich alle Daten bekomme ? oder verstehe ich da etwas nicht richtig ?

 
penizillin
21-02-2005, 17:30 
 
ich muss doch das resultset in einer Schleife auslesen, damit ich alle Daten bekomme? schleife erübrigt sich, wenn du nur ein ergebnis erwartest (was mit LIMIT noch zu unterstreichen wäre).

 
alexa
21-02-2005, 17:33 
 
Original geschrieben von penizillin
schleife erübrigt sich, wenn du nur ein ergebnis erwartest (was mit LIMIT noch zu unterstreichen wäre).

nein, ich erwarte eine liste mit Mitarbeitereinträgen.

d.h. Mitarbeiter1
darunter Mitarbeiter 2 usw.

und die zeigt er auch an, nur eben 3x den gleichen eintrag und darunter 3x den nächsten eintrag

 
penizillin
21-02-2005, 17:35 
 
aah.. gut. vergiss das mit dem LIMIT nicht!

dann teste mal die query mit phpmyadmin oder so.

 
wahsaga
21-02-2005, 17:48 
 
Original geschrieben von alexa
liegt der Fehler ev. an meiner SQL-Abfrage ?
natürlich, stichwort kreuzprodukt.

wenn ja, wie muss ich Daten aus 2 tabellen abfragen ?
bspw. per JOIN

 
alexa
21-02-2005, 18:18 
 
genau wahsaga, das war das stichwort,
jetzt habe ich den Query so umgeschrieben, dass er mir einen Datensatz nur noch 2x ausgibt ;)

$sql = "SELECT * FROM vorfall
LEFT JOIN mitarbeiter
ON vorfall.mitarbeiterID = vorfall.mitarbeiterID
LEFT JOIN einsatzstelle
ON mitarbeiter.einsatzID = einsatzstelle.einsatzID


meine 3 tabellen:
1.einsatzstelle

einsatzID int(4) Nein auto_increment
einsatzstelle varchar(50)
zusatz varchar
---------------------------------
2. mitarbeiter
mitarbeiterID int(4) auto_increment
einsatzID int(4) Nein 0 // FK Tabelle 1
m_name
----------------------------------------
3. Vorfall
vorfallID int(4) Nein auto_increment
mitarbeiterID int(4) FK
vorfall_text varchar



als ergebnis möchte ich alle mitarbeiter mit einem Vorfall haben...

 
alexa
21-02-2005, 19:25 
 
ok, hab jetzt den join hinbekommen:


SELECT * FROM vorfall
LEFT JOIN mitarbeiter
ON mitarbeiter.mitarbeiterID = vorfall.mitarbeiterID
LEFT JOIN einsatzstelle
ON mitarbeiter.einsatzID = einsatzstelle.einsatzID


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