kEv*: Ich verstehe das return nicht

Hallo liebe SELFHTMLer,

ich habe ine Function mit folgendem Inhalt:

  
function MAINMENU (){  
  $sql = mysql_query ('SELECT url,name FROM MAINMENU');  
  
  while ($res = mysql_fetch_array ($sql)){  
    echo "<li><a href=\"".$res['url']."\" target=\"_self\">".$res['name']."</a></li>";  
 }  
}  

Prima ist, das es funktioniert. Nun möchte ich aber das echo nicht in der Function haben, sondern würde das gern mit return machen wollen.
Soweit ich weiß, beendet die function return die schleife sofort.
Ich versteh das return einfach nicht.
Ich weiß es funktioniert ja so wie oben beschrieben, nur wie gesagt, ich würde gern das Ergebniss von return zurückgeben lassen.

Ich weiß nur nicht wie. Hat wer einen Tip für mich?
Ich wäre Euch sehr verbunden.

LG,
Vielen Dank
LG
--
kEv*
----

--
kevin
Kevin
geboren am: o8.o7.2oo6
Gewicht: 3660g
---
SELFCODE:
---
sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
---
  1. echo $begrüßung;

    while ($res = mysql_fetch_array ($sql)){
        echo "<li><a href="".$res['url']."" target="_self">".$res['name']."</a></li>";
    Prima ist, das es funktioniert. Nun möchte ich aber das echo nicht in der Function haben, sondern würde das gern mit return machen wollen.

    Baue einen String zusammen und gib den im Anschluss an die Schleife zurück.

    echo "$verabschiedung $name";

    1. Hallo,

      Baue einen String zusammen und gib den im Anschluss an die Schleife zurück.

      Ich bekomme es einfach nicht hin. Bin ich zu blöd für den Code, oder habe ich im Moment nur eine Gehirnblockade?

      LG,
      Vielen Dank
      LG
      --
      kEv*
      ----

      --
      kevin
      Kevin
      geboren am: o8.o7.2oo6
      Gewicht: 3660g
      ---
      SELFCODE:
      ---
      sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
      ---
      1. echo $begrüßung;

        Baue einen String zusammen und gib den im Anschluss an die Schleife zurück.

        Ich bekomme es einfach nicht hin. Bin ich zu blöd für den Code, oder habe ich im Moment nur eine Gehirnblockade?

        Einen String erzeugen:

        $einString = 'Initialisierung';

        und zwei Möglichkeiten, ihn zu erweitern:

        $einString .= ' das wird angefügt';
          $einString = $einString . ' und das auch';

        echo "$verabschiedung $name";

        1. Hallo,

          vermutlich ist es die Schleife die mir Kopfzerbrechen bereit, und bei welcher ich keinen ansatz zur Lösung finde.
          Ohne Schleife würde es so aussehen, oder?

            
          function MAINMENU (){  
            
            $sql = mysql_query ('SELECT url,name FROM MAINMENU');  
            $res = mysql_fetch_array ($sql);  
            
           $temp = '<li><a href="'.$res['url'].'" target="_self">'.$res['name'].'</a></li>';  
           return $temp;  
          }  
          
          

          Bei der Schleife bricht in meinem Kopf irgendetwas weg.
          Vielen Dank
          LG
          --
          kEv*
          ----

          --
          kevin
          Kevin
          geboren am: o8.o7.2oo6
          Gewicht: 3660g
          ---
          SELFCODE:
          ---
          sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
          ---
          1. Hallo,

            ich habe die Lösung, verstanden habe ich es aber nicht. Den Operator habe ich verstanden. Irgendwie steig ich trotzdem nicht dahinter warum das so ist, wie es ist.

              
            function MAINMENU (){  
              $sql = mysql_query ('SELECT url,name FROM MAINMENU');  
              while($res = mysql_fetch_array ($sql)){  
                $temp .= '<li><a href="'.$res['url'].'" target="_self">'.$res['name'].'</a></li>';  
             $temp = $temp;  
             }  
             return $temp;  
            }  
            
            

            Vielen Dank
            LG
            --
            kEv*
            ----

            --
            kevin
            Kevin
            geboren am: o8.o7.2oo6
            Gewicht: 3660g
            ---
            SELFCODE:
            ---
            sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
            ---
            1. echo $begrüßung;

              ich habe die Lösung, verstanden habe ich es aber nicht.

              Beispiel: Du möchtest einen String haben, der aus den Ziffern von 0 bis 9 besteht.
              Klar, das geht am einfachsten so:

              $string = '0123456789';

              aber wir wollen ja eine Schleife mit ins Spiel bringen.

              Zuerst initialisieren wir die Variable mit einem definierten Wert, damit nicht irgendwelche Überreste anderer Operationen drin stehen:

              $string = '';

              Nun kommt die Schleife:

              for ($i = 0; $i < 10; $i++) {

              in deren Inneren wird an den jeweils bisherigen Wert von $string der Inhalt der Laufzeitvariablen $i angehängt:

              $string .= $i;

              Um zu zeigen, was passiert kommt noch eine Kontrollausgabe hinzu:

              echo "$i=$i - $string=$string<br>";
                }

              Das Ergebnis

              echo "Ergebnis: $string";

              kann dann mit return aus der Funktion zurückgegeben werden, oder sonstwie weiterverarbeitet werden.

              echo "$verabschiedung $name";

              1. Hallo,

                vielen lieben Dank delfix.
                Jetzt hab ich das auch verstanden. Hätte ich ja mir viel Arbeit bei früheren Dingen ersparen können.

                LG,
                Vielen Dank
                LG
                --
                kEv*
                ----

                --
                kevin
                Kevin
                geboren am: o8.o7.2oo6
                Gewicht: 3660g
                ---
                SELFCODE:
                ---
                sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
                ---
  2. Hi kEv*,

    ich habe ine Function mit folgendem Inhalt:

    function MAINMENU (){
      $sql = mysql_query ('SELECT url,name FROM MAINMENU');

    while ($res = mysql_fetch_array ($sql)){
        echo "<li><a href="".$res['url']."" target="_self">".$res['name']."</a></li>";
    }
    }

      
    Du kannst innerhalb der Schleife deine echos in einer Variable speichern. z.B. $text .= "blubber"; [1]  
    Das return machst du natürlich ausserhalb der Schleife. "return $text";  
      
    Ich hoffe ich habe dich richtig verstanden!?  
      
    [1] Du kannst natürlich noch geeignete Trennzeichen etc. verwenden.  
    ciao  
    romy
    
    -- 
    [Sie haben Tiere? Sie haben Fragen?](http://forum.findeltiere.de/)  
    [Sie möchten einem Tier ein neues zu Hause geben?](http://www.findeltiere.de/index.php?navi=abzugeben)  
      
    ![](http://www.romy-b.de/Zeug/gans.jpg)
    
    1. Hallo,

      ... $text .= ...

      Was ist das .=?
      Das habe ich vorher noch nie gesehen?
      Langsam habe ich das Gefühl ich bin wirklich zu blöd zum programmieren.

      LG,
      Vielen Dank
      LG
      --
      kEv*
      ----

      --
      kevin
      Kevin
      geboren am: o8.o7.2oo6
      Gewicht: 3660g
      ---
      SELFCODE:
      ---
      sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
      ---
      1. Hallihallo!

        Hallo,

        ... $text .= ...

        Was ist das .=?
        Das habe ich vorher noch nie gesehen?

        Das bedeutet im Klartext:
        "Hänge an den bisherigen Inhalt der Variablen $text das Folgende an."

        Der Punkt ist ein sog. "Vereinigungs- Zuweisungs- Operator". Erklärt wird er hier im Manual

        Viele liebe Grüße,
        Der Dicki

  3. Moin!

    while ($res = mysql_fetch_array ($sql)){
        echo "<li><a href="".$res['url']."" target="_self">".$res['name']."</a></li>";
    }

    Prima ist, das es funktioniert. Nun möchte ich aber das echo nicht in der Function haben, sondern würde das gern mit return machen wollen.

    Gut. Ein sehr guter Vorsatz, Funktionen so zu gestalten, dass man sie flexibel verwenden kann. Heute möchtest du das, was die Funktion ermittelt, direkt mit echo ausgeben, morgen vielleicht in eine Datei schreiben, und nächste Woche womöglich nur nach einem bestimmten Muster durchsuchen.

    Soweit ich weiß, beendet die function return die schleife sofort.

    Nein, return ist keine Funktion. Und ja, return beendet sofort beim ersten Vorkommen die Schleife und die gesamte Funktion, in der es steht.

    Du musst also das, was du bisher mit dem echo ausgibst, stattdessen als String in einer lokalen Variablen aufsammeln. Wenn die Schleife bis zum Ende durchgelaufen ist, gibst du den Variableninhalt komplett mit return zurück an das aufrufende Programm.

    Ciao,
     Martin

    --
    Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
    Die Zivilisation hatte begonnen.