Ankündigung

Einklappen
Keine Ankündigung bisher.

Code review

Einklappen

Neue Werbung 2019

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

  • Code review

    Hallo zusammen

    Ich habe letztes Jahr einen Code hier gepostet, weil ich eine Frage hatte. Über die Beatwortung der Frage hinaus haben sich aber auch Leute von hier viel Zeit genommen und mir Mängel in meinem Script aufgezeigt (vielen Dank nochmals!). Ich habe seither viel an meinen Grundlagen gearbeitet und bin (so denke ich) ein ganzes Stück weiter gekommen. So habe ich zur Zeit eigentlich auch keine Frage, sondern eher eine Bitte: Würde sich noch einmal jemand Zeit nehmen, meinen Code anzuschauen und mir vorhandene Mängel aufzeigen?

    Hier exemplarisch das script zum Editieren von Einträgen (Bild in Filesystem + Text aus DB) und die Vollbild-Ansicht eines Bildes.

    modify.php
    PHP-Code:
    <?php
        $root 
    $_SERVER['DOCUMENT_ROOT'];
        require_once (
    $root."/config.php");
        
    $imgpath "/gallery/upimg/"// Pfad zum Bild
        
    $imgpathphp = ($root."/gallery/upimg/");
        
    $allowedimgtype = array(IMAGETYPE_GIF,IMAGETYPE_JPEG,IMAGETYPE_PNG,IMAGETYPE_SWF,IMAGETYPE_PSD,IMAGETYPE_BMP,IMAGETYPE_TIFF_II,IMAGETYPE_TIFF_MM,IMAGETYPE_JPC,IMAGETYPE_JP2,IMAGETYPE_JPX,IMAGETYPE_JB2,IMAGETYPE_SWC,IMAGETYPE_IFF,IMAGETYPE_WBMP,IMAGETYPE_XBM,'IMAGETYPE_ICO'); 
        
        if (isset(
    $_POST['send'])) : //prüft, ob das script oder das Formular angezeigt werden soll
            
    $id = (int) $_POST['id'];
            if(!empty(
    $_FILES['imgdata']['name'])) : //prüft, ob ein Bild ausgewählt wurde
                                
                
    if(!in_array(exif_imagetype($_FILES['imgdata']['tmp_name']),$allowedimgtype,true)) : //prüft, ob die Startbits einem der in $allowedimgtype genannten Bildtypen entsprechen
    ?>
                    <div class="messages">            
                        <span class="messages selfcreatedicons webicon-attention">!</span>            
                        <span class="messages messagescontent">Die von Ihnen ausgew&auml;hlte Datei wurde nicht als Bild eines g&uuml;ltigen Formates erkannt. Falls Sie ein Bild ausgew&auml;hlt haben und diese Fehlermeldung trotzdem erscheint, &ouml;ffnen Sie das Bild bitte in einem Bildbearbeitungs-Programm und speichern es nochmals als Bild ab.<br>G&uuml;ltige Formate sind GIF, JPEG, SWF, PSD, BMP, TIFF, JPC, JP2, JPX, JB2, SWC, IFF, WBMP, XBM, ICO.</span><br>            
                    </div>
    <?php
                
    else :
                
                
                    
    // Datei löschen, falls vorhanden
                    
    $query "SELECT name FROM gallery WHERE id =?";
                    
    $stmt mysqli_stmt_init($verbindung);
                    if (
    mysqli_stmt_prepare($stmt$query)) :
                        if (!
    $stmt) :
                            die(
    'mysqli error: '.mysqli_error($verbindung));
                        endif;
                        
    mysqli_stmt_bind_param($stmt"i"$id);
                        
    mysqli_stmt_execute($stmt);
                        
    mysqli_stmt_bind_result($stmt$filetodelete);
                        
    mysqli_stmt_fetch($stmt);    
                    endif;
                    
                    if (
    file_exists($imgpathphp.$filetodelete)) :
                        if (!
    unlink($imgpathphp.$filetodelete)) :
    ?>
                            <div class="messages">            
                                <span class="messages selfcreatedicons webicon-attention">!</span>            
                                <span class="messages messagescontent">Die Datei konnte nicht vom Dateisystem gel&ouml;scht werden.</span><br>            
                            </div>
    <?php
                        
    else :
    ?>
                            <div class="messages">            
                                <span class="messages selfcreatedicons webicon-success">s</span>            
                                <span class="messages messagescontent">Die Datei wurde erfolgreich vom Dateisystem gel&ouml;scht.</span><br>            
                            </div>
    <?php
                        
    endif;
                    else:
    ?>
                        <div class="messages">            
                            <span class="messages selfcreatedicons webicon-attention">!</span>            
                            <span class="messages messagescontent">Die Datei, welche Sie zu l&ouml;schen versuchen, existiert als Datei nicht mehr auf dem Server.</span><br>            
                        </div>
    <?php
                    
    endif;            
                    
                    
                    
    // Hochzuladende Datei umbenennen
                    
    $fileinfo pathinfo($_FILES['imgdata']['name']); // Dateiinfos auslesen
                    
    $fileextension $fileinfo['extension']; //File-Extension herausfinden
                    
    $imgnamenew md5(time()); //Der Datei einen "zufälligen" Namen geben
                    
    $imgnamenew substr($imgnamenew, -7).".".$fileextension//Dateinamen verkürzen und Extension anhängen
                    
                    
                    // Datei hochladen
                    
    if (!move_uploaded_file($_FILES['imgdata']['tmp_name'], $imgpathphp.$imgnamenew)) :
    ?>
                        <div class="messages">            
                            <span class="messages selfcreatedicons webicon-attention">!</span>            
                            <span class="messages messagescontent">Beim Upload der Datei ist ein Fehler aufgetreten.</span><br>            
                        </div>
    <?php
                    
    else:
    ?>
                        <div class="messages">            
                            <span class="messages selfcreatedicons webicon-success">s</span>            
                            <span class="messages messagescontent">Der Upload der Datei war erfolgreich.</span><br>            
                        </div>
    <?php
                    
    endif;    
                    
                    
    // Meta-Daten des Bildes in der DB updaten
                    
    $filetype $_FILES['imgdata']['type'];
                    
    $filesize $_FILES['imgdata']['size'];
                    
    $imgname_tmp $_FILES['imgdata']['tmp_name'];
                    
    $query "UPDATE gallery SET name =?, name_tmp =?, filetype =?, filesize =? WHERE id =?";
                    
    $stmt mysqli_stmt_init($verbindung);
                    
    mysqli_stmt_prepare($stmt$query);
                    
                    if ( !
    $stmt ) :
                        die(
    'mysqli error: '.mysqli_error($verbindung));
                    endif;
                    
                    
    mysqli_stmt_bind_param($stmt"sssii"$imgnamenew$imgname_tmp$filetype$filesize$id);
                    
                    if(!
    mysqli_stmt_execute($stmt)):
                        die( 
    'stmt error: '.mysqli_stmt_error($stmt));
                    endif;
                    
                    if (
    mysqli_stmt_affected_rows($stmt) == 0): //überprüft, ob ein Datenbank-Eintrag hinzugefügt wurde
    ?>
                        <div class="messages">            
                            <span class="messages selfcreatedicons webicon-info">i</span>            
                            <span class="messages messagescontent">Es wurden keine &Auml;nderungen an der Datenbank vorgenommen.</span><br>            
                        </div>
    <?php
                    
    else :
    ?>
                        <div class="messages">            
                            <span class="messages selfcreatedicons webicon-success">s</span>            
                            <span class="messages messagescontent">Die Datenbankeintr&auml;ge wurden erfolgreich ge&auml;ndert.</span><br>            
                        </div>
    <?php
                    
    endif;    
                endif;
            else:
    ?>
                <div class="messages">            
                    <span class="messages selfcreatedicons webicon-info">i</span>            
                    <span class="messages messagescontent">Die Datei wurde nicht ge&auml;ndert.</span><br>            
                </div>
    <?php
            
    endif;    
            
            
            
    // Bild-unabhängige Formulardaten in der Datenbank ändern
            
    $query "SELECT alttext FROM gallery WHERE id =?";        
            
    $stmt mysqli_stmt_init($verbindung);
            if (
    mysqli_stmt_prepare($stmt$query)) :
                if (!
    $stmt) :
                    die(
    'mysqli error: '.mysqli_error($verbindung));
                endif;
                
                
    mysqli_stmt_bind_param($stmt"i"$id);
                
    mysqli_stmt_execute($stmt);
                
    mysqli_stmt_bind_result($stmt$alttextdb);
                
    mysqli_stmt_fetch($stmt);
            endif;
            
            
    //$alttextdb = $row['alttext'];
            
    $alttextpost $_POST['alttext'];
            
    $query2 "UPDATE gallery SET alttext =? WHERE id =?";
            
    $stmt mysqli_stmt_init($verbindung);
            
    mysqli_stmt_prepare($stmt$query2);
                    
            if (!
    $stmt ) :
                die(
    'mysqli error: '.mysqli_error($verbindung));
            endif;
            
            
    mysqli_stmt_bind_param($stmt"si"$alttextpost$id);
            
            if(!
    mysqli_stmt_execute($stmt)):
                die( 
    'stmt error: '.mysqli_stmt_error($stmt));
            endif;
            
            if (
    mysqli_stmt_affected_rows($stmt) == 0): //überprüft, ob ein Datenbank-Eintrag hinzugefügt wurde
    ?>
                <div class="messages">            
                    <span class="messages selfcreatedicons webicon-info">i</span>            
                    <span class="messages messagescontent">Sie haben keine von Ihrem Bild unabh&auml;ngigen Daten ge&auml;ndert.</span><br>            
                </div>
    <?php
            
    else :
    ?>
                <div class="messages">            
                    <span class="messages selfcreatedicons webicon-success">s</span>            
                    <span class="messages messagescontent">Die &Auml;nderungen Ihrer vom Bild unabh&auml;ngigen Datenbankeintr&auml;gen waren erfolgreich.</span><br>            
                </div>
    <?php
            
    endif;


            
    // Bietet Möglichkeit auf Admin-Seite zurückzukehren
            
    echo '<br><a href="/admin/gallery.html.php">Zur&uuml;ck zur Administrations-Seite</a>';    
        else :
    ?>
    <html>
        <head>
            <meta charset="utf8"> 
            <title>
                Test-Formular
            </title>
        </head>

        <body>
        <?php
        
            
    // lädt ein abgefülltes Formular, wenn die Seite nicht über POST['send'] aufgerufen wurde
            
    $id = (int) $_GET['id'];
            
    $query "SELECT alttext, name FROM gallery WHERE id =?";
            
    $stmt mysqli_stmt_init($verbindung);
            if (
    mysqli_stmt_prepare($stmt$query)) :
                if (!
    $stmt) :
                    die(
    'mysqli error: '.mysqli_error($verbindung));
                endif;
                
                
    mysqli_stmt_bind_param($stmt"i"$id);
                
    mysqli_stmt_execute($stmt);
                
    mysqli_stmt_bind_result($stmt$alttext$imgname);
                
    mysqli_stmt_fetch($stmt);
            endif;

        
    ?>        
            <form enctype="multipart/form-data" action="" method="post">
                <input  type ="hidden" name="id" value="<?=$id?>" /><br>
                <input name="alttext" value="<?=$alttext?>" maxlength="70" size="30" /><br>
                aktuelles Bild:<br>
                <img style="max-height:200px; max-width:200px;" src="<?=$imgpath.$imgname?>" /><br>
                neues Bild, sofern Sie das Bild &auml;ndern m&ouml;chten:<br>
                <input name="imgdata" type="file" size="40"><br>
                <input name="send" type="submit" value="modify" />
            </form>
    <?php
        
    endif;
        
        
    /*
        ToDo:
        - Fehlermeldung, wenn man ein Bild in .jpg umbenennt und hochzladen versucht, 
        wird nicht richtig dargestellt (zu lang, bzw. Zeilenumbrüche werden nicht richtig dargestellt)
        */
    ?>


    fullscreen.php
    PHP-Code:
    <?php
        $root 
    $_SERVER['DOCUMENT_ROOT'];
        require_once (
    $root.'/config.php');
        
    $imgpath '/gallery/upimg/'// Pfad zum Bild
        
    if( isset($_GET['id'])) :
            
    $id = (int)$_GET['id'];
        else :
            if (isset(
    $_GET['nextid'])) :
                
    $id = (int)$_GET['nextid'];
            else :
                
    $id = (int)$_GET['backid'];
            endif;
        endif;
        
        
    /*** Foto zum Anzeigen abfragen ***/
        
    $query "SELECT name, datetime FROM gallery WHERE id =?";
        
        
    $stmt mysqli_stmt_init($verbindung);
        if (
    mysqli_stmt_prepare($stmt$query)) :
            if (!
    $stmt) :
                die(
    'mysqli error: '.mysqli_error($verbindung));
            endif;
            
            
    mysqli_stmt_bind_param($stmt"i"$id);
            
    mysqli_stmt_execute($stmt);
            
    mysqli_stmt_store_result($stmt);
            
    mysqli_stmt_bind_result($stmt$imgname$thisdatetime);
            
    mysqli_stmt_fetch($stmt);
            
    mysqli_stmt_free_result($stmt);
        endif;

        
    /*** Element mit nächst kleinerem Datum bestimmen ***/
        
    $backquery "SELECT id FROM gallery WHERE `datetime` < (SELECT `datetime` FROM gallery WHERE id =?) ORDER BY `datetime` DESC LIMIT 1";
        
    $backstmt mysqli_stmt_init($verbindung);
        if(
    mysqli_stmt_prepare($backstmt$backquery)) :
            if (!
    $backstmt) :
                die(
    'mysqli error1: '.mysqli_error($verbindung));
            endif;
            
    mysqli_stmt_bind_param($backstmt"i"$id);
            
    mysqli_stmt_execute($backstmt);
            
    mysqli_stmt_store_result($backstmt);
            
    mysqli_stmt_bind_result($backstmt$backid);
            
    mysqli_stmt_fetch($backstmt);
        else :
            die(
    'mysqli error6: '.mysqli_error($verbindung));
        endif;

        
    $nextquery "SELECT id FROM gallery WHERE `datetime` > (SELECT `datetime` FROM gallery WHERE id =?) ORDER BY `datetime` ASC LIMIT 1";
        
    $nextstmt mysqli_stmt_init($verbindung);
        if (
    mysqli_stmt_prepare($nextstmt$nextquery)) :
            if (!
    $nextstmt) :
                die(
    'mysqli error: '.mysqli_error($verbindung));
            endif;        
            
    mysqli_stmt_bind_param($nextstmt"i"$id);
            
    mysqli_stmt_execute($nextstmt);
            
    mysqli_stmt_store_result($nextstmt);
            
    mysqli_stmt_bind_result($nextstmt$nextid);
            
    mysqli_stmt_fetch($nextstmt);
            
        endif;

        if (
    $backid != 0) :
    ?>
            
            <div style="float:left;">
                <a href="fullscreen.html.php?id=<?=$backid?>">
                    back
                </a>
            </div>
    <?php
        
    endif;
        
        if (
    $nextid != 0) :
    ?>
            <div style="float:right;">
                <a href="fullscreen.html.php?id=<?=$nextid?>">
                    next
                </a>
            </div>
    <?php
        
    endif;
    ?>
            <div class="fullscreen">
                <a href ="<?=$imgpath.$imgname?>">
                    <img class="fullscreen" src="<?=$imgpath.$imgname?>" />
                </a>
            </div>
    Vielen Dank schon mal im Voraus.

  • #2
    Warum benutzt du dieses Schreibweise
    PHP-Code:
                if (!$stmt) : 
                    ...
                endif; 
    statt
    PHP-Code:
                if (!$stmt) {
                    ...
                }; 
    bei durchgängigem PHP-Code? Hat das einen bestimmten Grund?

    PHP-Code:
    require_once ($root."/config.php"); 
    Bei Strings, die mit " umschlossen werden, entpackt PHP etwaige Variablen. Daher nutzt man ' statt ", wenn ein String keine Variablen beinhaltet und somit auch nicht daraufhin untersucht werden soll.

    Statt
    PHP-Code:
    <?=$backid?>
    wären zusätzliche Leerzeichen schöner:
    PHP-Code:
    <?=backid ?>
    Ich habe das unbestimmte Gefühl - in mysqli bin ich nicht sonderlich fit - dass du unheimlich viele Redundanzen in deinem DB-Code hast. So etwas hier kann doch niemals die kürzeste Möglichkeit sein:
    PHP-Code:
          mysqli_stmt_bind_param($stmt"i"$id); 
            
    mysqli_stmt_execute($stmt); 
            
    mysqli_stmt_store_result($stmt); 
            
    mysqli_stmt_bind_result($stmt$imgname$thisdatetime); 
            
    mysqli_stmt_fetch($stmt); 
            
    mysqli_stmt_free_result($stmt); 
    Solltest du das nicht mindestens in eine Methode (oder Funktion) auslagern? Denn du scheinst dieses Konstrukt mehrfach zu verwenden. Allgemein würde es wohl dem Code zu gut kommen, mehr mit Methoden (oder Funktionen) zu arbeiten.

    PHP-Code:
     die('mysqli error: '.mysqli_error($verbindung)); 
    Eine ziemlich radikale Art der Fehlerbehandlung. Zum einen ist fragwürdig, ob der Endbenutzer derartig "technische" Fehlerbeschreibungen überhaupt sehen soll und zum anderen ob die Meldung nicht besser auf einer Fehlerseite präsentiert werden sollte - zum Beispiel so wie GitHub das macht.

    Kommentar


    • #3
      PHP-Code:
       $imgnamenew md5(time()); //Der Datei einen "zufälligen" Namen geben 
      Davon würde ich persönlich abraten. Es ist zwar unwahrscheinlich, aber es kann passieren das der Dateiname zweimal generiert wird und dann überschrieben wird, vor allem weil du anschließend noch die letzten 7 Zeichen abschneidest. uniqid ist da meiner Meinung nach besser. Und, nur zur Sicherheit solltest du dennoch prüfen ob die Datei bereits vorhanden ist.
      - Laravel

      Kommentar


      • #4
        Zitat von tera3yte Beitrag anzeigen
        PHP-Code:
         $imgnamenew md5(time()); //Der Datei einen "zufälligen" Namen geben 
        uniqid ist da meiner Meinung nach besser.
        Aufpassen! Gleichzeitig laufende Scripte können die gleiche uniqid erzeugen. Das hat mich vor Jahren mal einen Tag gekostet.

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen
          Aufpassen! Gleichzeitig laufende Scripte können die gleiche uniqid erzeugen. Das hat mich vor Jahren mal einen Tag gekostet.
          Zitat von tera3yte Beitrag anzeigen
          Und, nur zur Sicherheit solltest du dennoch prüfen ob die Datei bereits vorhanden ist.
          - Laravel

          Kommentar


          • #6
            Der Zusammenhang wird nicht automatisch klar. No intent to offend.

            Kommentar


            • #7
              danke euch allen schon mal.

              Zitat von monolith Beitrag anzeigen
              Warum benutzt du dieses Schreibweise
              PHP-Code:
                          if (!$stmt) : 
                              ...
                          endif; 
              statt
              PHP-Code:
                          if (!$stmt) {
                              ...
                          }; 
              bei durchgängigem PHP-Code? Hat das einen bestimmten Grund?
              Ich wollte nur nicht mischen... Hat diese Schreibweise denn einen Nachteil?

              So etwas hier kann doch niemals die kürzeste Möglichkeit sein:
              PHP-Code:
                    mysqli_stmt_bind_param($stmt"i"$id); 
                      
              mysqli_stmt_execute($stmt); 
                      
              mysqli_stmt_store_result($stmt); 
                      
              mysqli_stmt_bind_result($stmt$imgname$thisdatetime); 
                      
              mysqli_stmt_fetch($stmt); 
                      
              mysqli_stmt_free_result($stmt); 
              Das ist auch eine der Stellen, die ich gerne von einem Experten betrachet hätte Was meint ihr? Geht das schöner?


              Die anderen Hinweise werde ich mir unkommentiert zu Herzen nehmen, vielen Dank

              Kommentar


              • #8
                Ich wollte nur nicht mischen
                Wenn nicht dabei, warum denn generell?! Stichwort EVA!
                Mir gefällt das hin und her zwischen PHP und HTML gar nicht.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von Arne Drews Beitrag anzeigen
                  Wenn nicht dabei, warum denn generell?! Stichwort EVA!
                  Mir gefällt das hin und her zwischen PHP und HTML gar nicht.
                  generell mache ich das eben wegen den Unterbrüchen in php

                  Was wäre denn die Alternative? Den Fehler-/Infotext komplett unformatiert über echo zurückschicken?

                  Kommentar


                  • #10
                    Was wäre denn die Alternative?
                    E.V.A
                    Den Fehler-/Infotext komplett unformatiert über echo zurückschicken?
                    Was heißt unformatiert? Du kannst die Ausgaben bspw. in Views vorhalten und entsprechend dem EVA-Prinzip für die Ausgabe vorbereiten.
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      E.V.A
                      Was heißt unformatiert? Du kannst die Ausgaben bspw. in Views vorhalten und entsprechend dem EVA-Prinzip für die Ausgabe vorbereiten.
                      Vielen Dank erstmal für deinen Hinweis. Ich habe inzwischen verstanden, wie das mit EVA funktionieren soll. In Kombination mit Views habe ich jedoch noch keine genaue Vorstellung, wie das zu Bewerkstelligen ist, ohne dass ich die Mischung aus HTML und PHP in der Ausgabe verwenden muss (ich denke da an das Schreiben der Info-/Errormitteilungen in Variabeln während der Verarbeitung und das Prüfen der Variabeln in der Ausgabe).

                      Kannst du mir vielleicht ein einfaches Beispiel zeigen, wie das richtig geht?

                      Kommentar


                      • #12
                        ich denke da an das Schreiben der Info-/Errormitteilungen in Variabeln während der Verarbeitung und das Prüfen der Variabeln in der Ausgabe
                        In der Ausgabe eben nicht. Die Prüfung kommt auch in die Verarbeitung, denn die Ausgabe richtet sich ja nach dem Ergebnis der Prüfung.

                        Nur mal ein kurzes schnelles Beipiel ohne groß auf Templating etc. einzugehen:
                        Die Prüfung/Verarbeitung läuft ganz einfach
                        PHP-Code:
                        // Eine Variable für die Verarbeitung (E)
                        $bAusgangsVariable true;

                        // Variable prüfen und Ausgabe in $sAusgabe speichern (V)
                        if ( $bAusgangsVariable ) {

                            
                        $sAusgabe 'Jawoll, supi!';

                        } else {

                            
                        $sAusgabe 'Mist, doch nicht!';


                        Das sind grob betrachtet die Elemente E und V des E.V.A. Prinzips.
                        Um die generierte Ausgabe nun in Dein Dokument zu bekommen, gibt es verschiedene Wege, ich bevorzuge Platzhalter:
                        Code:
                        // so sähe Dein HTML dann an der Stelle bspw. aus
                        <p>{AUSGABE}</p>
                        Den Inhalt Deiner Variablen bekommst Du nun bspw. so in die Ausgabe hinein:
                        PHP-Code:
                        $sHtmlContent file_get_contents'htmldatei.html' );
                        echo 
                        str_replace'{AUSGABE}'$sAusgabe$sHtmlContent ); 
                        Das ist nur ein kleines ganz einfaches Beispiel, bei größeren Projekten macht echtes Templating absolut Sinn, aber das wäre hier etwas überzogen, denke ich.

                        Was Du für E.V.A. immer bedenken solltest, egal auf welche Weise Du es angehst:
                        Es kommt immer zuerst die Verarbeitung, dann die Ausgabe. In der Ausgabe sollte keine weitere Verarbeitung stattfinden.
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Aber klappt das nicht nur bei fixem Inhalt? Die Anzahl an Infomessages ist ja nicht vordefiniert, es können ja beliebig viele Meldungen erscheinen... Wenn ich einfach alle auszugeben versuche, dann kommen ja Fehler wegen undefinierten Variabeln.... wie zeige ich nur die relevanten Mitteilungen an, ohne Bedingungen in die Ausgabe zu schreiben?

                          Kommentar


                          • #14
                            Dann sammelst Du die Info-Messages und machst das genauso!
                            PHP-Code:
                            $aInfoMessages = array();
                            // ...
                            $aInfoMessages[] = 'erste info';
                            // ...
                            $aInfoMessages[] = 'zweite Info';
                            // usw. 
                            Wenn bspw. jede Message ein eigenes P-Tag haben soll, machste einfach sowas hier:
                            PHP-Code:
                            $sAusgabe '<p>' implode'</p><p>'$aInfoMessages ) . '</p>'
                            Das sind aber nun wirklich alles absolute Grundlagen.
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Hallöchen,

                              Zitat von kammerjaeger Beitrag anzeigen
                              Aber klappt das nicht nur bei fixem Inhalt? Die Anzahl an Infomessages ist ja nicht vordefiniert, es können ja beliebig viele Meldungen erscheinen... Wenn ich einfach alle auszugeben versuche, dann kommen ja Fehler wegen undefinierten Variabeln.... wie zeige ich nur die relevanten Mitteilungen an, ohne Bedingungen in die Ausgabe zu schreiben?
                              Es ist kein Problem eine Schleife innerhalb deines Templates zu verwenden. "Verarbeitung" bedeutet hierbei nicht, dass dein Template per se nicht dynamisch sein darf. Du solltest dort nur keine Geschäftslogik abbilden.

                              Viele Grüße,
                              lotti
                              [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                              Kommentar

                              Lädt...
                              X