Problem mit Abruch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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($zeitdat04);
                    
    $monat    substr($zeitdat52);
                    
    $tag    substr($zeitdat82);
                    
    $datum     $tag.'.'.$monat.'.'.$jahr;
                    
    // Zeit    
                    
    $stunde    substr($zeitdat112);
                    
    $minute    substr($zeitdat142);
                    
    $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.

  • #2
    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 [COLOR=black]empty($variable)[/COLOR]. 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
    Zuletzt geändert von DaBasha; 12.11.2010, 12:51.

    Kommentar


    • #3
      ista nicht empty - das checkt nämlich nur ob die Variable '' enthält - sondern isset( )
      [font=Verdana]
      Wer LESEN kann, ist klar im Vorteil!
      [/font]

      Kommentar


      • #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($zeitdat04);
                        
        $monat    substr($zeitdat52);
                        
        $tag    substr($zeitdat82);
                        
        $datum     $tag.'.'.$monat.'.'.$jahr;
                        
        // Zeit    
                        
        $stunde    substr($zeitdat112);
                        
        $minute    substr($zeitdat142);
                        
        $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

        Kommentar


        • #5
          Fehler gefunden. Trotzdem Danke für die hilfe.

          Kommentar


          • #6
            Ok doch nicht war ein denk fehler von mir steh immer noch an dem Punkt.

            Kommentar


            • #7
              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
              [font=Verdana]
              Wer LESEN kann, ist klar im Vorteil!
              [/font]

              Kommentar


              • #8
                @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!

                Kommentar


                • #9
                  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?

                  Kommentar

                  Lädt...
                  X