Ankündigung

Einklappen
Keine Ankündigung bisher.

For schleife beenden

Einklappen

Neue Werbung 2019

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

  • For schleife beenden

    Hallo ihr PHP Profis ^^

    Ich habe ein Problem bei einem Kontaktformular. Eigentlich funktioniert ja alles, jedoch wiederholt sich eine For schleife immer wieder und ich weiss nicht, wie ich diese Beenden kann, ohne die anderen Sachen zu beenden.

    Die For schleife sieht so aus:

    PHP-Code:

    if ($interessen != "") {
        
            for (
    $x 0$x count($interessen); ++$x)
            {
                 
    $text .= "Interessert sich für: ".key($interessen)."\n\nvalue: ".current($interessen)."\n\n".$text;
                 
            }
            
        } 
    Danke für die Hilfe

    Gruss Toby


    EDIT: Jetzt ist mir noch ein Problem aufgefallen.. Es gibt mir immer nur das erste zurück, was angekrezt war (also bei den checkboxen).
    Wie kann ich es machen, dass es mir alle, einigermassen aufgefäumt, zurückgibt?
    codestyle.ch
    ----------------------------

  • #2
    Sorry, ich versteh das Problem nicht ganz.

    Er beendet doch deine for-Schleife, nachdem $x größer oder gleich der Anzahl der Werte in dem Array $interessen ist.

    Falls du manuell noch raus springen willst, also zum Beispiel if($irgendwas == $anderes), dann kannst du das mit einem break; machen.

    Ansonsten nochmal bitte genau erklären, wie es gerade ist und wie du es gerne haben willst bzw machen willst.

    Grüße
    Da Psy
    [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

    Kommentar


    • #3
      Das Problem ist ja, dass ich das alles nich so genau versteh..
      Ich will einfach den Array $interessen ausgeben und der Variable $text anhängen. Jedoch vervielfacht sich alles, was in der Varieblen $text drin ist auch! Es sollte sich jedoch nur das im $interessen drin vermehren!!

      Also nochmals einwenig Code, damit Sie sich das besser vorstellen können (In der zwischenzeit sieht der einwenig anders aus):

      PHP-Code:

          
      if ($name != ""$mail_name=$name; else $mail_name="unbekannt";
          if (
      $vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
          if (
      $subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
          if (
      $email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
          if (
      $interessen != "") {
          
              for (
      $x 0$x <= count($interessen); $x++)
              {
                   
      $text .= "Interessert sich für: ".key($interessen)."\n\nvalue: ".current($interessen)."\n\n".$text;
                   
              }
              
          } 
      So sehen übrigens die Checkboxes aus (das Stimmt schon, oder?):

      Code:
        <p><input type="checkbox" name="interessen[]" value="mitgliedschaft">Mitgliedschaft</p>
        <p><input type="checkbox" name="interessen[]" value="sponsor">Sponsor</p>
        <p><input type="checkbox" name="interessen[]" value="bannerwerbung">Werbung</p>
      Danke für die Hilfe

      Gruss Toby

      EDIT: Ich muss noch hinzufügen, dass es jetzt nur immer einen Wert aus dem Array anzeigt. Immer nur den ersten und das, wie schon gesagt, mehrfach und samt dem anderen Text. Es sollten jedoch jeder Wert im Array $interessen ausgegeben werden und der ganze andere Text nur einmal!

      Momentan sieht die Mail die ich bekomme in etwa so aus:

      Code:
      Name: testname
      
      testestestInteressert sich für: 0
      
      value: diverses --> Diverses sind die Interessen
      
      Name: testname
      
      testestestInteressert sich für: 0
      
      value: diverses
      
      Name: testname
      
      testestestInteressert sich für: 0
      
      value: diverses
      
      Name: testname
      
      testestest  -> Das ist der Nachrichtentext
      So, jetzt hab ich mir gedach ich mache es mit ner Foreach schleife.. doch auch das hat nich funktioniert.
      Diese sieht jetzt so aus:

      PHP-Code:

              
      foreach ($interessen as $wert)
              {
                  
      $text .= "Interessiert sich für: ".$wert."\n".$text;
              } 
      codestyle.ch
      ----------------------------

      Kommentar


      • #4
        Das liegt daran, dass du ja nie den internen Array-Zeiger von $interessen veränderst. Dann gibt key() auch immer das selbe zurück.

        Schau dir mal die Array-Funktionen key(), current(), next(), each() usw an (am besten im PHP Manual) und erkundige dich auch mal über foreach(). Das ist am besten geeignet, wenn man ein komplettes Array durcharbeiten will.

        Kommentar


        • #5
          Deine Checkboxen stimmen soweit. Informier dich ein wenig über Arrays:

          #php/QuakeNet Tutorial - Array

          PHP-Code:
          <?php
            
          /* Nachname */
            
          if($name != "") {
              
          $mail_name $name
            } else {
              
          $mail_name "unbekannt";
            }
            
          /* Vorname */
            
          if($vorname != "") {
              
          $text "Name: "$name ." "$vorname ."\n\n";
            }
            
          /* Betreff */
            
          if($subject != ""
              
          $mail_subject $subject
            } else {
              
          $mail_subject "kein Betreff";
            }
            
          /* E-Mail */
            
          if($email != ""
              
          $mail_email $email
            } else {
              
          $mail_email "email@unknown.xyz";
            }
            
          /* Interessen auflisten */  
            
          $text .= "Interessert sich für: \n";
            if(
          count($interessen)>0) {
              foreach(
          $interessen AS $interesse) {
                
          $text .= "  "$interesse ."\n";
              }
            } else {
              
          $text .= "  Keine Interessen\n";
            }
          ?>
          Dieser Codeschnipsel dürfte vielleicht ein wenig weiter helfen

          Grüße
          Da Psy

          Edit:

          Zeig dir auch mal deine Variablen etc an (besonders das Array) um das besser verstehen zu können:

          PHP-Code:
          <?php
            
          echo "<pre>\n";
            
          print_r($interessen);
            echo 
          "</pre>\n";
          ?>
          bzw


          PHP-Code:
          <?php
            
          echo "<pre>\n";
            
          print_r($_POST);
             echo 
          "</pre>\n";
          ?>
          [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

          Kommentar


          • #6
            Yees, das hat schon fast funktioniert.. Nur noch einige kleinigkeiten mit der Position und dem Text usw.. aba das sollte ich hinkriegen!

            Dankeschööön!!

            EDIT:

            Oh, dankeschön!
            Achja, ich habe noch eine Frage für den Lerneffekt: Was war den jetzt an deiner foreach schleife anders als bei meiner? Also ich versteh das noch nich ganz mit dieser Schleife, aber bei deiner hats funktioniert und bei meiner nich..?
            Wenn du keine Zeit hast ists auch egal, dann schau ich heute Abend nach, aba ansonsten wär ich echt froh ^-^

            Danke
            codestyle.ch
            ----------------------------

            Kommentar


            • #7
              Hmm, grad keine Lust so viel zu schreiben, aber es freut mich, dass du auch Lernen willst und nicht nur haben wie manch andere Daumen hoch, dran bleiben!

              Öhm jo, lag irgendwo sicherlich an deim key() und current(), aber damit arbeitete ich noch nie.

              Ich vermute, das ganze geht nur mit einer while schleife, in der du den Array nach und nach durcharbeitest (der Zeiger immer eins weitergesetzt wird wie mit next()).

              Anstatt:
              key($interessen)
              current($interessen)

              hättest du
              $x = also der aktuelle Key
              $interessen[$x] = value des Inhaltes mit dem Key $x


              Deine foreach-schleife sollte eigentlich so geklappt haben. Evtl lags wo davor (if ($interessen != "") {). Ansonsten, ka, es geht ja nun

              Sind nur Spekulationen

              Noch hier zum Lernen

              For-Schleife:
              -> #php/QuakeNet Tutorial - Schleifen

              Foreach-Schleife:
              -> #php/QuakeNet Tutorial - Array

              Grüße
              Da Psy
              [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

              Kommentar


              • #8
                Warum Deine key/current Schleife nicht funktioniert, hat Montellese bereits geschrieben
                Zitat von Montellese Beitrag anzeigen
                Das liegt daran, dass du ja nie den internen Array-Zeiger von $interessen veränderst. Dann gibt key() auch immer das selbe zurück.
                Aber die foreach Schleife ist eh besser. Schon allein, weil Du Dich um diese Art von Fehlerquelle nicht kümmern musst.

                Kommentar


                • #9
                  Select Option mit array?

                  Tut mir leid, dass ich das Thema nochmals hochschiebe.. jedoch habe ich noch eine Frage, die ganz gut auch noch hier rein passt!

                  Das Problem von vorhin ist zwar gelöst (danke), jedoch habe ich jetzt eigentlich das selbe Problem, einfach das es sich jetzt in folgendem Tag befindet:

                  PHP-Code:
                  <select name="sel_thema" size="6" tabindex="2" multiple="multiple">
                    <option value="opt1" <?php if(isset($thema[])) echo "selected='selected'"; else echo ""?>>Opt1</option>
                  Ich will, dass das, was angewählt wurde bleibt, wenn nach dem Absenden eine Fehlermeldung kommt. Blöderweise funktioniert der Array nich so ganz oder besser gesagt gar nicht.

                  Muss ich bei dieser Formularart bei select name das [] machen??

                  Nachher habe ich probiert es folgendermassen auszugeben, was eigentlich richtig sein sollte:

                  PHP-Code:
                      if    (count($thema)>0) {
                      
                  $text .= "\n\nInteressiert sich für folgende Themen:\n";
                          foreach (
                  $thema as $key)
                          {
                              
                  $text .= "-"$key ."\n";
                          }
                      } 
                  Thx for help
                  MFG Toby
                  codestyle.ch
                  ----------------------------

                  Kommentar


                  • #10
                    PHP-Code:
                    <select name="sel_thema" size="6" tabindex="2" multiple="multiple">
                      <option value="opt1"<?php if($thema == 'opt1') echo ' selected="selected"'?>>Opt1</option>
                    </select>
                    Musst nur prüfen, ob der abgesendete Wert, der Wert aus der Value ist und wenn ja, selected="selected" hinschreiben, ansonsten (else-Zweig) wird nicht gebraucht (leere ausgaben wie echo ""; ist unschön und unnötig )

                    Grüße
                    Da Psy
                    [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

                    Kommentar


                    • #11
                      Hmm... danke hat so halb funktioniert ^^
                      Nur, dass es nur eine option auf einmal abspeichern tut.. wie kann ich machen, dass das Ding jetzt wirklich soviele, wie gewählt sind abspeichert??
                      Müsste doch eig. funktionieren, oda nich?


                      danke mfg Toby
                      codestyle.ch
                      ----------------------------

                      Kommentar


                      • #12
                        Öhm, in einem Dropdownfeld kannst du nur eins markieren O_o oder hast du mehrere Drop Down Felder, die den selben Namen haben?
                        [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

                        Kommentar


                        • #13
                          Nee, man kann doch das mit Multiple so machen, dass man mehrere Wählen kann... Es is dann einfach kein Dropdown mehr sondern so wie ne Liste oda so ähnlich!
                          codestyle.ch
                          ----------------------------

                          Kommentar


                          • #14
                            PHP-Code:
                            <select multiple name="dropdown[]">...</select
                            Das Attribute multiple bewirkt, dass man mehrere Einträge markieren kann und damit auch alle übertragen werden, muss der Name in Array-Form (sprich mit []) geschrieben werden.

                            Kommentar


                            • #15
                              Ich hab echt das Gefühl, ich mach imma die gleichen Fehler xD
                              Iwi geht was nich.. es hat zwar so geklappt (naja so halb), jedoch schreibt es mir immer gleich alle optionen die Ausgewählt sind auf 0,1,2 usw und nicht die Array Nr. die sie ja eig. sind..

                              Also wenn ich zB. hab (jetzt ma nich multiple aba is ja egal):

                              Code:
                                  <select name="gender[]">
                                  <option value="choose">--Please Choose--</option> 
                                  <option value="male">Male</option>
                                  <option class="female">Female</option>
                                  </select>
                              Dann kommt geht zwar die überprüfung mit isset, jedoch is dann immer das, was ausgewählt ist 0.
                              Also so:

                              ( [0] => male )

                              anstatt:

                              ( [1] => male )

                              Dankeschööön
                              codestyle.ch
                              ----------------------------

                              Kommentar

                              Lädt...
                              X