| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

12-11-2010, 12:39
|
|
malus
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 4
|
|
Problem mit Abruch
Also Leute ich möchte Kommentare ausgeben von einem Main Text. Alles kein ding Bloß wenn nix in der DB steht Bricht der das Script ab. Nun meine Frage wie kann ich das machen das der vorher Prüft ob was da ist oder nicht und wenn nix da ist einfach lässt estwas ausugeben.
Das ist die Ausgabe
PHP-Code:
$k = new Kommentar(); $k->getAllAsObjekt($ticket_id); $kommentar_all = $k -> getAllAsObjekt($ticket_id); foreach ($kommentar_all AS $key => $kommentar) { //echo $ticket->getDatum(); $zeitdat = $kommentar->getDatum(); // Datum $jahr = substr($zeitdat, 0, 4); $monat = substr($zeitdat, 5, 2); $tag = substr($zeitdat, 8, 2); $datum = $tag.'.'.$monat.'.'.$jahr; // Zeit $stunde = substr($zeitdat, 11, 2); $minute = substr($zeitdat, 14, 2); $zeit = $stunde.':'.$minute; echo ' <table border="1"> <tr> <td width="180px">'.$kommentar->getUser_id().'<br>'.$datum.", ".$zeit.'</td> <td width="320px">'.$kommentar->getInhalt().'</td> </tr> </table> '; }
In die Funtion dazu:
PHP-Code:
public function getAllAsObjekt($ticket_id){
$sql = "SELECT id,ticket_id,inhalt,datum,user_id FROM kommentar WHERE ticket_id=".$ticket_id; $result = mysql_query($sql); if (!$result) { echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error(); exit; }
if (mysql_num_rows($result) == 0) { echo "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch"; exit; } $kommentar_all = array(); while ($row = mysql_fetch_assoc($result)) { //neues Schuelerobjekt $k = new Kommentar(); $k->setKommentar_id($row["id"]); $k->setTicket_id($row["ticket_id"]); $k->setInhalt($row["inhalt"]); $k->setDatum($row["datum"]); $k->setUser_id($row["user_id"]); $k->setLoesch_status($row["loesch_status"]); array_push($kommentar_all, $k); } mysql_free_result($result); //print_r($menu_all); Return $kommentar_all;
}
Ich hoffe ihr könnt mir helfen.
|

12-11-2010, 12:48
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
Also wenn ich das richtig verstanden hab, dann ziehst du Daten aus der DB und steckst sie in eine Variable. Wenn nichts in der DB steht, bleibt die entsprechende Variable undeklariert und das führt zu nem Fehler, sehe ich das richtig?
da gibts was vorimplementiertes, und zwar empty($variable). Dies gibt ein TRUE zurück wenn die Variable undeklariert, also "leer" ist. D.h. mit ner einfachen if(empty($variable)) kannst du abfragen ob die Variable undeklariert oder belegt ist.
Dazu das Man: http://php.net/manual/de/function.empty.php
Geändert von DaBasha (12-11-2010 um 12:51 Uhr)
|

12-11-2010, 13:04
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
ista nicht empty - das checkt nämlich nur ob die Variable '' enthält - sondern isset( )
__________________
Wer LESEN kann, ist klar im Vorteil!
|

12-11-2010, 13:14
|
|
malus
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 4
|
|
Ich habe es so schon mal versucht:
PHP-Code:
$k = new Kommentar(); $k->getAllAsObjekt($ticket_id); $kommentar_all = $k -> getAllAsObjekt($ticket_id); if(isset($kommentar)){ foreach ($kommentar_all AS $key => $kommentar) { //echo $ticket->getDatum(); $zeitdat = $kommentar->getDatum(); // Datum $jahr = substr($zeitdat, 0, 4); $monat = substr($zeitdat, 5, 2); $tag = substr($zeitdat, 8, 2); $datum = $tag.'.'.$monat.'.'.$jahr; // Zeit $stunde = substr($zeitdat, 11, 2); $minute = substr($zeitdat, 14, 2); $zeit = $stunde.':'.$minute; echo ' <table border="1"> <tr> <td width="180px">'.$kommentar->getUser_id().'<br>'.$datum.", ".$zeit.'</td> <td width="320px">'.$kommentar->getInhalt().'</td> </tr> </table> '; } }
Aber dann mach er den Abruch trotzdem
|

12-11-2010, 13:17
|
|
malus
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 4
|
|
Fehler gefunden. Trotzdem Danke für die hilfe.
|

12-11-2010, 13:18
|
|
malus
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 4
|
|
Ok doch nicht war ein denk fehler von mir steh immer noch an dem Punkt.
|

12-11-2010, 14:24
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
hast du ja auch falsch herum geschrieben
so herum gehört das
PHP-Code:
foreach ($kommentar_all AS $key => $kommentar) { if(isset($kommentar)){
du kannst doch nicht $kommentar abfragen, bevor du es aus $kommentar_all in der foreach-Schleife erzeugt hast
__________________
Wer LESEN kann, ist klar im Vorteil!
|

12-11-2010, 14:30
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
@eagle: Die if-Bedingung wird immer wahr. Würde es mal nicht wahr werden, hieße das, es gäbe ein Element in dem Array, welches nicht definiert ist. Das ist ein Widerspruch in sich.
Zum Problem: Wenn es in der DB keine Daten gibt bzw. die Methode getAllAsObjekt() keine Daten liefert, dann gibt sie ein leeres Array zurück. Die Foreach-Schleife wird dann niemals durchlaufen. Insofern dürfte das eigentlich gar kein Problem sein. Ich verstehe nicht, was der TO mit "bricht das Script ab" meint.
Noch etwas: Die zweite Zeile im ersten Code-Schnipsel dieses Threads ist Unfug!
|

12-11-2010, 14:59
|
|
2Bad4You
Registrierter Benutzer
|
|
Registriert seit: Jun 2007
Beiträge: 101
|
|
Ist nicht diese Zeile aus dem 2ten Codeabschnitt dafür verantwortlich dass das Script immer abbricht oder liege ich da jetzt falsch?
PHP-Code:
if (mysql_num_rows($result) == 0)
{
echo "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch";
exit;
}
Wenn die Abfrage leer ist dann wird doch per echo was ausgegeben und anschließend kommt exit. Wäre da nicht ein return false eher angebracht welches man dann prüfen kann im ersten Code Abschnitt?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|