php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.09.2007, 11:41  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard 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?

Geändert von Toby (26.09.2007 um 11:53 Uhr).
Toby ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.09.2007, 13:13  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

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
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 26.09.2007, 13:43  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

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;
        } 

Geändert von Toby (26.09.2007 um 14:15 Uhr). Grund: Genauere Problemerklährung
Toby ist offline  
Alt 26.09.2007, 14:13  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

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.
Montellese ist offline  
Alt 26.09.2007, 14:19  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

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";
?>
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 26.09.2007, 14:28  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

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

Geändert von Toby (26.09.2007 um 14:43 Uhr).
Toby ist offline  
Alt 26.09.2007, 16:09  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

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
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 26.09.2007, 16:45  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Warum Deine key/current Schleife nicht funktioniert, hat Montellese bereits geschrieben
Zitat:
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.
David ist offline  
Alt 02.10.2007, 11:50  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard 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
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 02.10.2007, 13:36  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

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
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

Geändert von PsychoEagle (02.10.2007 um 13:42 Uhr).
PsychoEagle ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session beenden andrew22 PHP Tipps 2008 4 08.02.2008 01:54
Bildschirmschoner auf dem Client beenden superbike PHP-Fortgeschrittene 11 31.10.2006 19:54
Session beenden wenn nach ...min Browser inaktiv TailerD PHP Tipps 2006 5 07.07.2006 14:49
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
session nach 15 Minuten automatisch beenden ckrentel PHP Tipps 2006 8 04.03.2006 12:22
Verbindung des Browsers beenden aber Script soll weiterlaufe PHP-Fortgeschrittene 7 22.02.2006 13:34
substr -> html-tags beenden? Unbekanntes_Pferd PHP Tipps 2006 1 16.02.2006 16:56
session nach 15 Minuten automatisch beenden ckrentel PHP-Fortgeschrittene 17 12.12.2005 14:57
Programm starten und sich selbst beenden. DerDesian PHP Tipps 2005-2 0 20.09.2005 12:32
Systemprozesse beenden PHP Tipps 2005-2 3 12.08.2005 06:52
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
[Erledigt] session beenden und eingabefeld pruefen PHP Tipps 2005 2 10.02.2005 20:20
function per function beenden - JavaScript HTML, Usability und Barrierefreiheit 1 21.09.2004 17:41
Beenden einer Session Beatbox PHP Tipps 2004 1 11.09.2004 11:26
Suchfunktion-Resultat bei Leerzeichen beenden PHP Tipps 2004 12 29.06.2004 22:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
for schleife abbrechen, for schleife beenden, for schleife stoppen, for schleife unterbrechen, schleife beenden, http://www.php.de/php-tipps-2008/165-schleife-beenden.html, php aus foreach rausspringen, php for schleife abbrechen, schleife abbrechen, aus foreach rausspringen, php foreach rausspringen, php forschleife abbrechen, php foreach schleife verlassen, php for schleife beenden, for-schleife abbrechen, php for-schleife abbrechen, schleife stoppen, for schleife abrechen, php for schleife stoppen, forschleife stoppen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum