VBler Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 Hallo an alle Ich hoffe das ihr mir helfen könnt. folgendes Problem: Ich bekomme das ergebnis einer Datanbankabfrage (mysql) das ich mit PHP ausgeben möchte. Das klappt auch. Nun versuche ich einen Wert aus jededem Datensatz herauszunehmen, diesen zu bearbeiten und danach in die Tabelle zurück zu schreiben. Bisher sieht mein PHP wie folgt aus: $datensatz = mysql_fetch_array($trefferliste); if ($i%2) $zeit=$datensatz['jahre'] $zeit=$zeit-10(*1500) { echo "<tr style=\"background:#00FFFF\";> <td>".$datensatz['nachname']."</td> <td>".$datensatz['vorname']."</td> <td>".$datensatz['jahre']."</td> <td>$zeit</td></tr>"; } else Mein Problem liegt in der Zeile mit "$zeit".Dort soll eine Berechnung stattfinden. Wie stelle ich es an, das mir das gelingt. Danke im voraus vbler Zitieren
disarstar Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 Kann es sein das es an den fehlenden semikolons liegt? $datensatz = mysql_fetch_array($trefferliste); $zeit=$datensatz['jahre']; $zeit=$zeit-10(*1500); if ($i%2) Zitieren
VBler Geschrieben 7. Februar 2008 Autor Geschrieben 7. Februar 2008 Hallo disarstar Daran liegt es nicht. vbler Zitieren
flashpixx Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 Hi, mysql_fetch_array liefert, wie der Name sagt, ein Array, das Du auch durchlaufen musst. Bitte einmal erste Bsp auf PHP: mysql_fetch_array - Manual anschauen Zitieren
disarstar Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 hmm muss nicht bei mysql_fetch_array eigentlich mit ner while schleife gearbeitet werden? $datensatz = mysql_fetch_array($trefferliste); while ($datensatz) { $zeit=$datensatz['jahre']; $ergebnis=$zeit-10(*1500); } echo $ergebnis; sorry bin leider aus php etwas raus, vielleicht hilft es Zitieren
VBler Geschrieben 7. Februar 2008 Autor Geschrieben 7. Februar 2008 Danke aber das klappt nicht. Der Fehler wird für die berechnungszeile ausgegeben. Ich befürchte das ich die berechnung im SQL-Statement durchführen muß. Zitieren
Crash2001 Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 Ja muss man normalerweise - zumindest, wenns nicht nur ein Datensatz ist, der dabei rauskommt. @VBler: Was gibt deine Berechnung denn momentan aus und was steht in dem Feld des Arrays mit dem du rechnen willst drin? Und vor allem: Was soll das mit dem $zeit=$zeit-10(*1500); überhaupt machen? Also jetzt speziell das (*1500). :confused: Das ist falsche Syntax und kann nicht funktionieren. Soll das $zeit = ($zeit-10)*1500; heissen oder was? Zitieren
VBler Geschrieben 7. Februar 2008 Autor Geschrieben 7. Februar 2008 In dem Feld jahre steht eine Zahl drin, größer als 11. Dies wird in der Abfrage gefiltert. Nun soll ausgerechnet werden, das für jedes Jahr das mehr als 10 ist, eine Prämie von 1500.-€ ausgezahlt werden soll. Dies macht die berechnung. Zitieren
Gast freescale Geschrieben 7. Februar 2008 Geschrieben 7. Februar 2008 Try this Und wenn's funktioniert, "danke" sagen <? // Beispiel-SQL, sollte dem Problem naheliegen $sql = ' SELECT vorname, nachname, jahre FROM mitarbeiter WHERE angestellt = 1 AND jahre > 11 '; $query = mysql_query($sql); $result = array(); $praemie = 1500; // Euro if(mysql_num_rows($query) > 0) { while($row =mysql_fetch_assoc($query); // WICHTIG: assoc, *NICHT* array - siehe php.net/mysql_fetch_assoc { $praemienjahre = max(0, intval($row['jahre']) - 10); // Info: Durch das max() bekommen wir immer Null oder größer, aber nie Minuswerte $row['praemie'] = $praemienjahre * $praemie; // Theoretisch wird das WHERE jahre > 11 obsolet. $result[] = $row; } } ?> <h1>Praemienuebersicht</h1> <table> <tr> <th>Vorname</th> <th>Nachname</th> <th>Jahre</th> <th>Praemie</th> </tr> <? if(sizeof($result) > 0) { foreach($result as $person) { ?> <tr> <td><?= $person['vorname'] ?></td> <td><?= $person['nachname'] ?></td> <td><?= $person['jahre'] ?></td> <td><?= $person['praemie'] ?></td> </tr> <? } } else { ?> <tr> <td colspan="4">Keine Daten vorhanden</td> </tr> <? } ?> </table> [/PHP] Grüße, freescale Zitieren
VBler Geschrieben 8. Februar 2008 Autor Geschrieben 8. Februar 2008 Danke freescale Ich habe es probiert, aber es kommt immer eine Fehlermeldung bei der zeile: while($row =mysql_fetch_assoc($query); vbler Zitieren
Toothrot Geschrieben 8. Februar 2008 Geschrieben 8. Februar 2008 Ich habe es probiert, aber es kommt immer eine Fehlermeldung bei der zeile: while($row =mysql_fetch_assoc($query); Da fehlt eine schließende Klammer. nach while ist ein semikolon zuviel. Das außerdem. Zitieren
Amstelchen Geschrieben 8. Februar 2008 Geschrieben 8. Februar 2008 nach while ist ein semikolon zuviel. s'Amstel Zitieren
Gast freescale Geschrieben 8. Februar 2008 Geschrieben 8. Februar 2008 Für "from brain to hand" find ich 2 Fehler eigentlich noch ganz ok Zitieren
VBler Geschrieben 9. Februar 2008 Autor Geschrieben 9. Februar 2008 Ich danke euch. Es klappt. Vbler Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.