[PHP] Komfortabler programmieren?

UnBreakable

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
477
Folgendes:

ich habe ein Formular (Radio Buttons und Texteingaben). Die fragen dafür (sowie logischerweise die antworten) sind in Variablen gespeichert und werden nach kompletter beantwortung mit dem mail befehl mit PHP versand.

Nun meine frage, kann ich dies irgendwie besser lösen als so:

1 $frage1 <br>
yes <input type=\"radio\" name=\"antwort_frage1\" value=\"yes\">
no <input type=\"radio\" name=\"antwort_frage1\" value=\"no\"><br><br>

.
.
.


so sieht das formualr aus! Bloß mit fragben bis 23 oder so!


der mail befehl so:

$message = "$frage1 : $antwort_frage1 \n \n $frage2 : $antwort_frage2 \n \n $frage3 : $antwort_frage3 \n \n $frage4 : \n $frage5 : $antwort_frage5 \n $frage6 : $antwort_frage6 \n $frage7 : $antwort_frage7 \n \n $frage8 : $antwort_frage8 \n \n $frage9 : $antwort_frage9 \n \n $frage10 : $antwort_frage10 \n \n $frage11 : $antwort_frage11 \n \n $frage12 : $antwort_frage12 \n \n $frage13 : $antwort_frage13 \n \n $frage14 : $antwort_frage14 \n \n $frage15 : $antwort_frage15 \n \n $frage16 : $antwort_frage16 \n \n $frage17 : $antwort_frage17 \n \n $frage18 : $antwort_frage18 \n \n $frage19 : $antwort_frage19 \n \n $frage20 : $antwort_frage20 \n \n $frage21 : $antwort_frage21 \n \n $frage22 : $antwort_frage22 \n \n $frage23 : $antwort_frage23 \n \n $frage24 : $antwort_frage24 \n \n $frage25 \n \n $antwort_frage25 \n \n ";

mail($empfaenger2,$subject,$message,"From: $email");


kann ich das irgendwie besser lösen? es geht mir jetzt rein um darum in die variable $message das besser reinzubringen um änderungen usw. besser vorzunehmen, der rest interessiert jetzt nicht, ob ich da jetzt anstatt " vielleicht ' verwende oder soswas!
 
AW: [PHP] Konfortabler Programmieren?

PHP:
for($i=1;$i<23;$i++)
{
    $message .= $frage$i." : ".$antwort_frage$i." \n \n";
}
 
AW: [PHP] Konfortabler Programmieren?

ah ok, mit ner schleife...
nur das problem ist, das zwischen manchen fragen mehr zeilenumbrüche bzw. weniger sein sollen...

und was bedeutet der "." vor dem "="?
Das er die variable ned überschreibt sondern das hinzufügt?
 
AW: [PHP] Konfortabler Programmieren?

ich empfehle dir eh ein Array zu machen

PHP:
for($i=1;$i<23;$i++)
{
    $message .= $frage[$i]." : ".$antwort_frage[$i].$abstand_frage[$i];
}

dann kannst z.B. in $abstand_frage die Zeilenumbrüche definieren. und das .= bedeutet, dass zur Variable $message immer wieder neuer Inhalt hinzukommt und nicht jedes mal ersetzt wird.
 
AW: [PHP] Konfortabler Programmieren?

Wenn nach manchen Fragn mehr Zeilenumbrüche kommmen..... dann mach halt 2 for()-Schleifen?

oder lass eine variable hochzählen mach ne if-Abfrage undob sie zb. größer 2 ist, wenn ja setzte die wieder auf 0 und sachst mach mal nen Zeilenumbruch mehr. k?
 
AW: [PHP] Konfortabler Programmieren?

ok danke!
Ich denke die beste lösung ist ein array!

Könnte mir jetzt noch einer erklären, was die punkte hinter den variablen bedeuten?
Also warum ist bei GeYe hinter $frage[$i] ein Punkt?

oder diese punkte:

".$antwort_frage[$i].$abstand_frage[$i];
 
AW: [PHP] Konfortabler Programmieren?

Die . fügen die Variablen zusammen.
 
AW: [PHP] Konfortabler Programmieren?

Damit du ncih immer ein neues echo mahcen musst

Beispiel:


echo "Hallo ";
echo $name;

ist die Variante ohne Punkte

mit Punkten:


echo "Hallo ".$name;



Macht längeren Quelltext etwas übersichtlicher wenn man es effektiv nutzt
:cool_alt:
 
AW: [PHP] Konfortabler Programmieren?

aber es funktioniert ja auch mit echo "hallo $name"; ???

aber nun zu meinem problem:

also wenn ich $frage$i
mach funktioniert das nicht! dann steht da 1 2 3 4 usw.!
aber das ist auch egal weil ichs mitm array macha und das funktionert so:
$frage[$i];

das funktioniert!

mein problem aber:

wie übergeb ich ausm formular das in ein array?

denn so funktionierts nicht:

yes <input type=\"radio\" name=\"antwort_frage[1]\" value=\"yes\">
 
Probiers mal mit

PHP:
echo 'yes <input type="radio" name="'.$antwort_frage[1].'" value="yes" />';
 
Wenn ichs so mach, bekomm ich folgenden fehler:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /usr/local/httpd/htdocs/1250/1207/mosi/leo2/fragen.php on line 61
 
Wieso funktioniert es so nicht, kommt nix an ?
<input type=\"radio\" name=\"antwort_frage[1]\" value=\"yes\">

lass mal die 1 weg oder gleich das [1].
Das ist ja ne Radiobox und keine checkbox, da kommt ja eh immer nur 1 unterschiedlicher Wert bei gleicher Variable an oder eben nix bei 0/ leer bei False/Nein!

Ich weiss jetzt nicht wie Du genau machen willst. Aber auf jedenfall würde ich nicht die Antwort selber als Name der Radiobox übergeben, sondern nur den Wert.
Denn HTML-Sachen wie Name sollten keine Leerzeichen enthalten.


Edit:
Dann würde ich das so machen:

<input type=\"radio\" name=\"antwort_frage[0]\" value=\"yes\">
<input type=\"radio\" name=\"antwort_frage[0]\" value=\"\">
<input type=\"radio\" name=\"antwort_frage[1]\" value=\"yes\">
<input type=\"radio\" name=\"antwort_frage[1]\" value=\"\">

im php dann das mit den Antwortentext vordefinierte array $antwort abfragen/ eintragen.

PHP:
for($i=0; $< 23; $i++){
if($antwort_frage[$i] == 'yes'){
$message .= $frage[$i].": ".$antwort[$i]."\n"; # Antwort ist richtig blabla
}
else{
# Antwort ist falsch blabla
}
}
 
Zuletzt bearbeitet:
ich hab jetzt gerade keein lust mir da obe nalles geschrieben durch zu lesen aber ich schreib einfach mal was hier rien wo ich denke das es richtig ist
PHP:
<?php
$frage=array('Schöner Tag?','Scheiss laune?','Tot?');
$anzahl=count($frage);
$ausgabe='<form method="post" target="mail.php">';
for($x='0';$x<$anzahl;$x++){
$ausgabe.='yes<input type="radio" name="antwort['.$x.']" value="yes">';
$ausgabe.='no<input type="radio" name="antwort['.$x.']" value="no"><br><br>';
}
$ausgabe.='</form>';
echo $ausgabe;
?>
So könntes du das formular aussehen lassen..
wen du xhtml benutzt du beim hinteren > ein \ machen ...
Jetzt komme nwir zur ziel zeit die nach dem formualar die mail verschickt

PHP:
$frage=array('Schöner Tag?','Scheiss laune?','Tot?');
$anzahl=count($frage);
for($x='0';$x<$anzahl;$x++){
$msg=$frage[$x].' '.$_POST[antwort][$x]."\n\n";
}
Ka ob es funtzt aber ich wollte auch einfach mal wieder was hier rein schreiben ....
 
Zuletzt bearbeitet:
also aus den beiden beiträgen über mir werd ich nicht schlau.
Das ist ja ne Radiobox und keine checkbox, da kommt ja eh immer nur 1 unterschiedlicher Wert bei gleicher Variable an oder eben nix bei 0/ leer bei False/Nein

das ist ne radiobox, das stimmt! wenn die eine gewählt wird, wird yes in die variable antwort_frage1 übergeben und wenn die andere ausgewählt wird, no

ich will nur das diese antworten in das array übergeben werden:
antwort_frage[1]

wenn ich es allerdings so mach:

<input type=\"radio\" name=\"antwort_frage[1]\" value=\"yes\">

wird in $antwort_frage[1] nichts übergeben
 
arrays beginnen in der Regel mit 0.

oder probiere mal ein assoziativarray, also <input type=\"radio\" name=\"antwort_frage[x1]\" value=\"yes\">

abfragen kann man das dann zb. so

$antwort_frage["x".$i]

Ansonsten wird irgendwo im folgenden php-script diese wieder überschrieben ?
mal prüfen.
 
Zuletzt bearbeitet:
ja ich weiß das die mit 0 beginnen!
und nein, sie wird nirgends überschrieben!

und wenn ichs so mach die du geschrieben hast, bekomm ich

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/local/httpd/htdocs/1250/1207/mosi/leo2/auswertung3.php on line 49

gibt auch irgendwie keinen sinn wieso man da x1 nehmen sollte O_o
wenn doch, klär mich auf.
 
ok, es funktioniert jetzt! ich hatte gleich nen doppelten buchstabendreher drin, warums mir nicht aufgefallen ist, sorry
 
Naja bei assoziativ wird direkt über den Namen angesprochen oder einen index, bei index nur über einen zähler.

Aber wenns geht ists doch ok.
Hab mich schon gewundert warum das bei Dir nicht funzt.

bei dem parse error kann ich nur vermuten, kenne ja den rest deines scriptes nicht.
sicher irgendwas beim zusammenbau falsch formatiert. Funktionieren müsste es aber grundsätzlich auch so.
Gibt eben viele Wege nach Rom. :D
 
wo gibs bei mein ding das problem ?
ich mein das ding ist ja schon so feritg wie ich es dir gegeben habe
 
@Albert
Es gab nie ein wirkliches Problem. Er hatte sich "nur" vertippt. ;)
 
Zurück
Oben