Anfänger sucht Hilfe

Hallo Newsgroup

Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
machen und Programmiere (ich versuche es) bissi in PHP um
Programmierkenntnisse zu sammeln.

Auf folgendes Problem bin ich gestossen:

Formular 1:

Eingabe von Werten mitels Radio-boxen

Diese Selektion will ich mittels Array an ein zweites Formular übergeben und
dort werte einfügen und dann wiederum an ein drittes Formular u.s.w. Zum
schluss will ich das array in MySQL Speichern.

Formular 1:
<?php
session_start();
$_SESSION['selarr'] = $selarr;

/IF OK BUTTON WAS CLICKED
if(isset($_POST['OK'])){
$selarr[0] = $_POST['f1o1'];
$selarr[1] = $_POST['f1o2'];
$selarr[2] = $_POST['f1o3'];
$selarr[3] = $_POST['f1o4'];
$selarr[4] = $_POST['f1o5'];
$selarr[5] = $_POST['f1o6'];
$selarr[6] = $_POST['f1o7'];
$selarr[7] = $_POST['f1o8'];

for($i = 0; $i < sizeof($selarr);$i++){
if ($selarr[$i] == null){
echo ('Question '.($i + 1) .' NOT SELECTED!!!
');
$res = '#ERROR';
}
}

if($res != '#ERROR'){
?><meta http-equiv="refresh" content="0; url=form2.php"><?php
}
}
?>
<form method="POST" action="">
<table width="800" border="0" cellspacing="0">
<tr>
<td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
value="1" id="c1" <?php if($selarr[0] == 1){echo('checked="checked"');} ?>
/></td>
<td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
value="2" id="c2" <?php if($selarr[0] == 2){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
value="3" id="c3" <?php if($selarr[0] == 3){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
value="4" id="c4" <?php if($selarr[0] == 4){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
value="5" id="c5" <?php if($selarr[0] == 5){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
value="6" id="c6" <?php if($selarr[0] == 6){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
value="7" id="c7" <?php if($selarr[0] == 7){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
value="8" id="c8" <?php if($selarr[0] == 8){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
value="9" id="c9" <?php if($selarr[0] == 9){echo('checked="checked"');}
?>/></td>
<td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
value="10" id="c10"<?php if($selarr[0] == 10){echo('checked="checked"');}
?>/></td>
</tr>

....
<tr>
<td colspan="5" align="right"><input name="OK" type="submit"
value="weiter"></td>
</tr>


Übergabe an das zweite Formalar 2 bekomme ich auch hin.
Problemm welches ich habe ist:
der Formularnutzer soll von Formular X durch einen zurückbutton wieder
auf das X-1 Formular und dann weiter X-1 Formular zurückgelangen können um
werte wieder zu ändern.
Geht das überhaupt? - Ich weiss nicht wie ich das mit <?php
if($selarr[0] == 1){echo('checked="checked"');} dann lösen soll.

Mein zweiter Ansatz war das ich bei jedem Klick auf ein Vor Button die Werte
in die Datenbank speichere und bei jeweiligen Seitenaufruf die Werte aus der
Datenbank in das Array lade und dann das Array auch entsprechend ändern
kann.

Sorry bitte micht lachen (bin ja schliesslich in der Lernphase).

Bin ich mit der Datenbanklösung besser bedient?

Kann mann das auch mit SESSIONS lösen? So das <?php if($selarr[0] ==
1){echo('checked="checked"'); auch funktionirt? Keine Ahnung wie und wo ich
da Ansetzten soll.

Gruss
Sebastian
Sebastian Wrona [ Fr, 28 Dezember 2007 12:47 ] [ ID #1895268 ]

Re: Anfänger sucht Hilfe

Sebastian Wrona schrieb:
> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
> machen und Programmiere (ich versuche es) bissi in PHP um
> Programmierkenntnisse zu sammeln.

Ob PHP dazu das geeignetste Mittel ist. :)

> /IF OK BUTTON WAS CLICKED
> if(isset($_POST['OK'])){
> $selarr[0] = $_POST['f1o1'];
> $selarr[1] = $_POST['f1o2'];
> $selarr[2] = $_POST['f1o3'];
> $selarr[3] = $_POST['f1o4'];
> $selarr[4] = $_POST['f1o5'];
> $selarr[5] = $_POST['f1o6'];
> $selarr[6] = $_POST['f1o7'];
> $selarr[7] = $_POST['f1o8'];

Hier und unten in der Ausgabe wäre eine Schleife vielleicht sinnvoll
statt alles mehrmals hinzuschreiben. Des weiteren solltest bei jedem
Wert erstmal prüfen, ob dieser überhaupt vorhanden ist:
if(isset($_POST['f1o1'])
{
$selarr[0] = $_POST['f1o1'];
}

Ansonsten bekommst Notice Meldungen wegen uninitialisierte Indizes wenn
zwar der Index "Ok" existiert, aber nicht die für die Felder.

> Sorry bitte micht lachen (bin ja schliesslich in der Lernphase).

Jeder fängt mal klein an, warum sollte man da lachen. :)

> Bin ich mit der Datenbanklösung besser bedient?
>
> Kann mann das auch mit SESSIONS lösen? So das <?php if($selarr[0] ==
> 1){echo('checked="checked"'); auch funktionirt? Keine Ahnung wie und wo ich
> da Ansetzten soll.

Was funktioniert denn nun genau nicht? Die Werte bleiben ja auch beim
zurück gehen in der Session gespeichert. Folglich sollte es funktionieren.

Eine Datenbanklösung hätte hier noch einen Nebeneffekt. Wenn der
Benutzer vor dem letzten Formular den Browser schließt stehen seine
Werte für die ersten Formulare immer noch in der Datenbank. Du hast hier
keine direkte Möglichkeit unvollständig ausgefüllte Formulare
automatisch zu entfernen sobald der Benutzer den Browser schließt. Dies
müsstest eher umständlich in gewissen Zeitabständen überprüfen.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Fr, 28 Dezember 2007 13:10 ] [ ID #1895269 ]

Re: Anfänger sucht Hilfe

Sebastian Wrona schrieb:
> Hallo Newsgroup
>
> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu=

> machen und Programmiere (ich versuche es) bissi in PHP um
> Programmierkenntnisse zu sammeln.
>
> Auf folgendes Problem bin ich gestossen:
>
> Formular 1:
>
> Eingabe von Werten mitels Radio-boxen
>
> Diese Selektion will ich mittels Array an ein zweites Formular überge=
ben und
> dort werte einfügen und dann wiederum an ein drittes Formular u.s.w. =
Zum
> schluss will ich das array in MySQL Speichern.
>
> Formular 1:
> <?php
> session_start();
> $_SESSION['selarr'] =3D $selarr;
>

Setze beim entwickeln ein error_reporting(E_ALL) an den Scriptanfang
bzw. in eine config.inc.php welche dann auch ueberall included wird.

Frage: wo kommt $selarr her?

> /IF OK BUTTON WAS CLICKED
> if(isset($_POST['OK'])){

Mein Vorschlag ist auf ein Hiddenfield wie name=3D"cmd" value=3D"send"
zupruefen und nicht direkt auf einen Button. Evtl. hast du spaeter mal
Formulare mit grafischen Buttons,JS Links etc.

Das Value kann auch "add", "del" oder dergleichen spaeter mal heissen.


> $selarr[0] =3D $_POST['f1o1'];
> $selarr[1] =3D $_POST['f1o2'];
> $selarr[2] =3D $_POST['f1o3'];
> $selarr[3] =3D $_POST['f1o4'];
> $selarr[4] =3D $_POST['f1o5'];
> $selarr[5] =3D $_POST['f1o6'];
> $selarr[6] =3D $_POST['f1o7'];
> $selarr[7] =3D $_POST['f1o8'];
>
> for($i =3D 0; $i < sizeof($selarr);$i++){
> if ($selarr[$i] =3D=3D null){
> echo ('Question '.($i + 1) .' NOT SELECTED!!!
');
> $res =3D '#ERROR';
> }
> }

Wenn du innerhalb deines HTML Formulares die Elementer besser mit einem
Namen versehen wuerdest dann kann der Code besser oder zumind. lesbarer
werden.

<input type=3D"radio" name=3D"form[radio_grp_1][]" value=3D"6" />

Innerhalb von PHP wuerde dann automatisch ein Array "radio_grp_1"
gebildest was du in $_POST[form] wiederfindest.

Angucken:
var_dump($_POST)


Verarbeiten
foreach($_POST['form']['radio_grp_1'] as $field_name =3D> $field_value){
echo $field_name.' =3D> '.$field_value.'
';
}

> if($res !=3D '#ERROR'){
> ?><meta http-equiv=3D"refresh" content=3D"0; url=3Dform2.php"><?php
> }
> }
> ?>
> <form method=3D"POST" action=3D"">
> <table width=3D"800" border=3D"0" cellspacing=3D"0">
> <tr>
> <td align=3D"center" bgcolor=3D"#99CCFF"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"1" id=3D"c1" <?php if($selarr[0] =3D=3D 1){echo('checked=3D"ch=
ecked"');} ?>
> /></td>
> <td align=3D"center" bgcolor=3D"#99CCFF"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"2" id=3D"c2" <?php if($selarr[0] =3D=3D 2){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#99FF66"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"3" id=3D"c3" <?php if($selarr[0] =3D=3D 3){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#99FF66"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"4" id=3D"c4" <?php if($selarr[0] =3D=3D 4){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#CCFF33"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"5" id=3D"c5" <?php if($selarr[0] =3D=3D 5){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#CCFF33"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"6" id=3D"c6" <?php if($selarr[0] =3D=3D 6){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#FFFF00"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"7" id=3D"c7" <?php if($selarr[0] =3D=3D 7){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#FFFF00"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"8" id=3D"c8" <?php if($selarr[0] =3D=3D 8){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#FFCC00"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"9" id=3D"c9" <?php if($selarr[0] =3D=3D 9){echo('checked=3D"ch=
ecked"');}
> ?>/></td>
> <td align=3D"center" bgcolor=3D"#FFCC00"><input type=3D"radio" nam=
e=3D"f1o1"
> value=3D"10" id=3D"c10"<?php if($selarr[0] =3D=3D 10){echo('checked=3D"=
checked"');}
> ?>/></td>
> </tr>

Aehm..... benutze eine Schleife wenn du etwas gleiches mehr als 2x
brauchst. Wenn du dann naechste Woche dir eine der vielen (HTML)
Templateengines wie Smarty, Sigma, IT[x] anguckst fuer PHP dann hat sich =

sowas automatisch erledigt.


> ...
> <tr>
> <td colspan=3D"5" align=3D"right"><input name=3D"OK" type=3D"submi=
t"
> value=3D"weiter"></td>
> </tr>
>
>
> =DCbergabe an das zweite Formalar 2 bekomme ich auch hin.
> Problemm welches ich habe ist:
> der Formularnutzer soll von Formular X durch einen zurückbutton w=
ieder
> auf das X-1 Formular und dann weiter X-1 Formular zurückgelangen kö=
nnen um
> werte wieder zu ändern.
> Geht das überhaupt? - Ich weiss nicht wie ich das mit <?php
> if($selarr[0] =3D=3D 1){echo('checked=3D"checked"');} dann lösen sol=
l.
>

1. Formulare verweisen immer auf sich selber
2. Nach dem Senden werden die Daten validiert und du entscheidest wie es =

weiter geht.
A) Bei Eingabefehlern das Form nochmal anzeigen
B) Keine Fehler, Daten verarbeiten bzw. in deinem Falle ein weiteres
Form anzeigen. Welches Form angezeigt werden soll legst du als Variable
fest. Diese kannst du per URL (script.php?step=3D2) uebertragen so das
deine Benutzer Vor- und Zurueck springen koennen.

> Mein zweiter Ansatz war das ich bei jedem Klick auf ein Vor Button die =
Werte
> in die Datenbank speichere und bei jeweiligen Seitenaufruf die Werte au=
s der
> Datenbank in das Array lade und dann das Array auch entsprechend ände=
rn
> kann.
>
> Sorry bitte micht lachen (bin ja schliesslich in der Lernphase).
>
> Bin ich mit der Datenbanklösung besser bedient?

Validierte Daten kannst du innerhalb der Session ablegen. Was am Ende
des Formulars dann mit den Daten passiert obliegt dann dir.

11. Variablen und Formulare
http://www.php-faq.de/ch/ch-webvariablen.html


Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Fr, 28 Dezember 2007 13:22 ] [ ID #1895270 ]

Re: Anfänger sucht Hilfe

Hallo
Erstmal dankeschön für die sehr schnelle Antwort. :)
----- Original Message -----
From: "Joerg Behrens" <behrens [at] takenet.de>
Newsgroups: de.comp.lang.php.misc
Sent: Friday, December 28, 2007 1:22 PM
Subject: Re: Anfänger sucht Hilfe


Sebastian Wrona schrieb:
> Hallo Newsgroup
>
> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
> machen und Programmiere (ich versuche es) bissi in PHP um
> Programmierkenntnisse zu sammeln.
>
> Auf folgendes Problem bin ich gestossen:
>
> Formular 1:
>
> Eingabe von Werten mitels Radio-boxen
>
> Diese Selektion will ich mittels Array an ein zweites Formular übergeben
> und dort werte einfügen und dann wiederum an ein drittes Formular u.s.w.
> Zum schluss will ich das array in MySQL Speichern.
>
> Formular 1:
> <?php
> session_start();
> $_SESSION['selarr'] = $selarr;
>

Setze beim entwickeln ein error_reporting(E_ALL) an den Scriptanfang
bzw. in eine config.inc.php welche dann auch ueberall included wird.

Frage: wo kommt $selarr her?

Dieses Array möchte ich anlegen wenn ich den Weiterbutton gedrückt
habe um es dann an das zweite Formular zu übergeben. (Als SESSIONARRAY)



> /IF OK BUTTON WAS CLICKED
> if(isset($_POST['OK'])){

Mein Vorschlag ist auf ein Hiddenfield wie name="cmd" value="send"
zupruefen und nicht direkt auf einen Button. Evtl. hast du spaeter mal
Formulare mit grafischen Buttons,JS Links etc.

Das Value kann auch "add", "del" oder dergleichen spaeter mal heissen.

Werde ich gleich ausprobieren :)

> $selarr[0] = $_POST['f1o1'];
> $selarr[1] = $_POST['f1o2'];
> $selarr[2] = $_POST['f1o3'];
> $selarr[3] = $_POST['f1o4'];
> $selarr[4] = $_POST['f1o5'];
> $selarr[5] = $_POST['f1o6'];
> $selarr[6] = $_POST['f1o7'];
> $selarr[7] = $_POST['f1o8'];
>
> for($i = 0; $i < sizeof($selarr);$i++){
> if ($selarr[$i] == null){
> echo ('Question '.($i + 1) .' NOT SELECTED!!!
');
> $res = '#ERROR';
> }
> }

Wenn du innerhalb deines HTML Formulares die Elementer besser mit einem
Namen versehen wuerdest dann kann der Code besser oder zumind. lesbarer
werden.

<input type="radio" name="form[radio_grp_1][]" value="6" />

COOL :) wusste ich nicht !!!wieder etwas dazugelernt :)


Innerhalb von PHP wuerde dann automatisch ein Array "radio_grp_1"
gebildest was du in $_POST[form] wiederfindest.

Angucken:
var_dump($_POST)


Verarbeiten
foreach($_POST['form']['radio_grp_1'] as $field_name => $field_value){
echo $field_name.' => '.$field_value.'
';
}

> if($res != '#ERROR'){
> ?><meta http-equiv="refresh" content="0; url=form2.php"><?php
> }
> }
> ?>
> <form method="POST" action="">
> <table width="800" border="0" cellspacing="0">
> <tr>
> <td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
> value="1" id="c1" <?php if($selarr[0] == 1){echo('checked="checked"');} ?>
> /></td>
> <td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
> value="2" id="c2" <?php if($selarr[0] == 2){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
> value="3" id="c3" <?php if($selarr[0] == 3){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
> value="4" id="c4" <?php if($selarr[0] == 4){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
> value="5" id="c5" <?php if($selarr[0] == 5){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
> value="6" id="c6" <?php if($selarr[0] == 6){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
> value="7" id="c7" <?php if($selarr[0] == 7){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
> value="8" id="c8" <?php if($selarr[0] == 8){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
> value="9" id="c9" <?php if($selarr[0] == 9){echo('checked="checked"');}
> ?>/></td>
> <td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
> value="10" id="c10"<?php if($selarr[0] == 10){echo('checked="checked"');}
> ?>/></td>
> </tr>

Aehm..... benutze eine Schleife wenn du etwas gleiches mehr als 2x
brauchst. Wenn du dann naechste Woche dir eine der vielen (HTML)
Templateengines wie Smarty, Sigma, IT[x] anguckst fuer PHP dann hat sich
sowas automatisch erledigt.

Das dachte ich mir schon das da ne Schleife rein muss. Muss leider
zugeben das mir die lösung nicht eingefallen ist wie die Schleife aussehen
müsste.

for($i = 0; $i < sizeof($selarr); $i++{
echo("<td align=/"center/" bgcolor=/"#FFCC00/"><input
type=/"radio/" name=/"form[radio_grp_1][]" value=/"".$i+1."/"".
if($selarr[$i] == $i+1){."checked=/"checked/"}."/></td>");
}

SO??? In etwa??? Oder liege ich meilenweit entfernt???


> ...
> <tr>
> <td colspan="5" align="right"><input name="OK" type="submit"
> value="weiter"></td>
> </tr>
>
>
> Übergabe an das zweite Formalar 2 bekomme ich auch hin.
> Problemm welches ich habe ist:
> der Formularnutzer soll von Formular X durch einen zurückbutton wieder
> auf das X-1 Formular und dann weiter X-1 Formular zurückgelangen können um
> werte wieder zu ändern.
> Geht das überhaupt? - Ich weiss nicht wie ich das mit <?php
> if($selarr[0] == 1){echo('checked="checked"');} dann lösen soll.
>

1. Formulare verweisen immer auf sich selber
2. Nach dem Senden werden die Daten validiert und du entscheidest wie es
weiter geht.
A) Bei Eingabefehlern das Form nochmal anzeigen
B) Keine Fehler, Daten verarbeiten bzw. in deinem Falle ein weiteres
Form anzeigen. Welches Form angezeigt werden soll legst du als Variable
fest. Diese kannst du per URL (script.php?step=2) uebertragen so das
deine Benutzer Vor- und Zurueck springen koennen.

SEHR GUTE TIPPS: DANKE

> Mein zweiter Ansatz war das ich bei jedem Klick auf ein Vor Button die
> Werte in die Datenbank speichere und bei jeweiligen Seitenaufruf die Werte
> aus der Datenbank in das Array lade und dann das Array auch entsprechend
> ändern kann.
>
> Sorry bitte micht lachen (bin ja schliesslich in der Lernphase).
>
> Bin ich mit der Datenbanklösung besser bedient?

Validierte Daten kannst du innerhalb der Session ablegen. Was am Ende
des Formulars dann mit den Daten passiert obliegt dann dir.

11. Variablen und Formulare
http://www.php-faq.de/ch/ch-webvariablen.html


Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Sebastian Wrona [ Fr, 28 Dezember 2007 13:53 ] [ ID #1895274 ]

Re: Anfänger sucht Hilfe

Ups
SO etwa??

echo"<tr>";
for($i = 0; $i < 10; $i++){
echo"<td align=\"center\" bgcolor=\"#FFCC00\"><input
type=\"radio\" name=\"form[radio_grp_1][]\" value=\"". ($i+1) ."\"";
if($selarr[0] == ($i)){
echo "checked=\"checked\"";
}
echo "/></td>";
}
echo"</tr>";

Gruß
Sebastian


"Sebastian Wrona" <s.wrona [at] gmx.de> schrieb im Newsbeitrag
news:fl2rl0$5aj$01$1 [at] news.t-online.com...
> Hallo
> Erstmal dankeschön für die sehr schnelle Antwort. :)
> ----- Original Message -----
> From: "Joerg Behrens" <behrens [at] takenet.de>
> Newsgroups: de.comp.lang.php.misc
> Sent: Friday, December 28, 2007 1:22 PM
> Subject: Re: Anfänger sucht Hilfe
>
>
> Sebastian Wrona schrieb:
>> Hallo Newsgroup
>>
>> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
>> machen und Programmiere (ich versuche es) bissi in PHP um
>> Programmierkenntnisse zu sammeln.
>>
>> Auf folgendes Problem bin ich gestossen:
>>
>> Formular 1:
>>
>> Eingabe von Werten mitels Radio-boxen
>>
>> Diese Selektion will ich mittels Array an ein zweites Formular übergeben
>> und dort werte einfügen und dann wiederum an ein drittes Formular u.s.w.
>> Zum schluss will ich das array in MySQL Speichern.
>>
>> Formular 1:
>> <?php
>> session_start();
>> $_SESSION['selarr'] = $selarr;
>>
>
> Setze beim entwickeln ein error_reporting(E_ALL) an den Scriptanfang
> bzw. in eine config.inc.php welche dann auch ueberall included wird.
>
> Frage: wo kommt $selarr her?
>
> Dieses Array möchte ich anlegen wenn ich den Weiterbutton gedrückt
> habe um es dann an das zweite Formular zu übergeben. (Als SESSIONARRAY)
>
>
>
>> /IF OK BUTTON WAS CLICKED
>> if(isset($_POST['OK'])){
>
> Mein Vorschlag ist auf ein Hiddenfield wie name="cmd" value="send"
> zupruefen und nicht direkt auf einen Button. Evtl. hast du spaeter mal
> Formulare mit grafischen Buttons,JS Links etc.
>
> Das Value kann auch "add", "del" oder dergleichen spaeter mal heissen.
>
> Werde ich gleich ausprobieren :)
>
>> $selarr[0] = $_POST['f1o1'];
>> $selarr[1] = $_POST['f1o2'];
>> $selarr[2] = $_POST['f1o3'];
>> $selarr[3] = $_POST['f1o4'];
>> $selarr[4] = $_POST['f1o5'];
>> $selarr[5] = $_POST['f1o6'];
>> $selarr[6] = $_POST['f1o7'];
>> $selarr[7] = $_POST['f1o8'];
>>
>> for($i = 0; $i < sizeof($selarr);$i++){
>> if ($selarr[$i] == null){
>> echo ('Question '.($i + 1) .' NOT SELECTED!!!
');
>> $res = '#ERROR';
>> }
>> }
>
> Wenn du innerhalb deines HTML Formulares die Elementer besser mit einem
> Namen versehen wuerdest dann kann der Code besser oder zumind. lesbarer
> werden.
>
> <input type="radio" name="form[radio_grp_1][]" value="6" />
>
> COOL :) wusste ich nicht !!!wieder etwas dazugelernt :)
>
>
> Innerhalb von PHP wuerde dann automatisch ein Array "radio_grp_1"
> gebildest was du in $_POST[form] wiederfindest.
>
> Angucken:
> var_dump($_POST)
>
>
> Verarbeiten
> foreach($_POST['form']['radio_grp_1'] as $field_name => $field_value){
> echo $field_name.' => '.$field_value.'
';
> }
>
>> if($res != '#ERROR'){
>> ?><meta http-equiv="refresh" content="0; url=form2.php"><?php
>> }
>> }
>> ?>
>> <form method="POST" action="">
>> <table width="800" border="0" cellspacing="0">
>> <tr>
>> <td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
>> value="1" id="c1" <?php if($selarr[0] == 1){echo('checked="checked"');}
>> ?> /></td>
>> <td align="center" bgcolor="#99CCFF"><input type="radio" name="f1o1"
>> value="2" id="c2" <?php if($selarr[0] == 2){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
>> value="3" id="c3" <?php if($selarr[0] == 3){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#99FF66"><input type="radio" name="f1o1"
>> value="4" id="c4" <?php if($selarr[0] == 4){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
>> value="5" id="c5" <?php if($selarr[0] == 5){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#CCFF33"><input type="radio" name="f1o1"
>> value="6" id="c6" <?php if($selarr[0] == 6){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
>> value="7" id="c7" <?php if($selarr[0] == 7){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#FFFF00"><input type="radio" name="f1o1"
>> value="8" id="c8" <?php if($selarr[0] == 8){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
>> value="9" id="c9" <?php if($selarr[0] == 9){echo('checked="checked"');}
>> ?>/></td>
>> <td align="center" bgcolor="#FFCC00"><input type="radio" name="f1o1"
>> value="10" id="c10"<?php if($selarr[0] == 10){echo('checked="checked"');}
>> ?>/></td>
>> </tr>
>
> Aehm..... benutze eine Schleife wenn du etwas gleiches mehr als 2x
> brauchst. Wenn du dann naechste Woche dir eine der vielen (HTML)
> Templateengines wie Smarty, Sigma, IT[x] anguckst fuer PHP dann hat sich
> sowas automatisch erledigt.
>
> Das dachte ich mir schon das da ne Schleife rein muss. Muss leider
> zugeben das mir die lösung nicht eingefallen ist wie die Schleife aussehen
> müsste.
>
> for($i = 0; $i < sizeof($selarr); $i++{
> echo("<td align=/"center/" bgcolor=/"#FFCC00/"><input
> type=/"radio/" name=/"form[radio_grp_1][]" value=/"".$i+1."/"".
> if($selarr[$i] == $i+1){."checked=/"checked/"}."/></td>");
> }
>
> SO??? In etwa??? Oder liege ich meilenweit entfernt???
>
>
>> ...
>> <tr>
>> <td colspan="5" align="right"><input name="OK" type="submit"
>> value="weiter"></td>
>> </tr>
>>
>>
>> Übergabe an das zweite Formalar 2 bekomme ich auch hin.
>> Problemm welches ich habe ist:
>> der Formularnutzer soll von Formular X durch einen zurückbutton
>> wieder auf das X-1 Formular und dann weiter X-1 Formular zurückgelangen
>> können um werte wieder zu ändern.
>> Geht das überhaupt? - Ich weiss nicht wie ich das mit <?php
>> if($selarr[0] == 1){echo('checked="checked"');} dann lösen soll.
>>
>
> 1. Formulare verweisen immer auf sich selber
> 2. Nach dem Senden werden die Daten validiert und du entscheidest wie es
> weiter geht.
> A) Bei Eingabefehlern das Form nochmal anzeigen
> B) Keine Fehler, Daten verarbeiten bzw. in deinem Falle ein weiteres
> Form anzeigen. Welches Form angezeigt werden soll legst du als Variable
> fest. Diese kannst du per URL (script.php?step=2) uebertragen so das
> deine Benutzer Vor- und Zurueck springen koennen.
>
> SEHR GUTE TIPPS: DANKE
>
>> Mein zweiter Ansatz war das ich bei jedem Klick auf ein Vor Button die
>> Werte in die Datenbank speichere und bei jeweiligen Seitenaufruf die
>> Werte aus der Datenbank in das Array lade und dann das Array auch
>> entsprechend ändern kann.
>>
>> Sorry bitte micht lachen (bin ja schliesslich in der Lernphase).
>>
>> Bin ich mit der Datenbanklösung besser bedient?
>
> Validierte Daten kannst du innerhalb der Session ablegen. Was am Ende
> des Formulars dann mit den Daten passiert obliegt dann dir.
>
> 11. Variablen und Formulare
> http://www.php-faq.de/ch/ch-webvariablen.html
>
>
> Gruss
> Joerg
>
> --
> TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
> 97080 Wuerzburg Tel: +49 931 903-2243
> Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
> HRB Wuerzburg 6940 http://www.takenet.de
>
>
Sebastian Wrona [ Fr, 28 Dezember 2007 14:49 ] [ ID #1895278 ]

Re: Anfänger sucht Hilfe

> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
> machen und Programmiere (ich versuche es) bissi in PHP um
> Programmierkenntnisse zu sammeln.

Wenn Du so programmierst wie unten, dann hat das spätestens seit den
frühen 90gern wenig Sinn. Kauf die ein Javabuch, lern ein bisschen Java.
IMHO ist es schwer, in PHP objektorientiert einzusteigen, weil dazu am
anfang die Motivation fehlt und nachher programmiert man dann entweder
Mist oder muss sich mühsam umstellen.

Ansonsten erstmal ein paar generelle Sachen. Setz Dein Errorreporting
auf E_ALL || E_STRICT, und vor allem: Tue was an Deinem Quoting. So lese
ich mich das nicht durch.
Jonas Werres [ Fr, 28 Dezember 2007 14:58 ] [ ID #1895279 ]

[OT] Re: Anfänger sucht Hilfe

Jonas Werres schrieb:
> Wenn Du so programmierst wie unten, dann hat das spätestens seit den
> frühen 90gern wenig Sinn. Kauf die ein Javabuch, lern ein bisschen Java.

Java ist vor allem für Lernzwecke sehr gut geeignet, da es zu einer
sauberen Struktur zwingt und auch von den Konzepten her (Typisierung,
Schnittstellen) alles bietet was man braucht um das Programmieren an
sich zu lernen. Daher nimmt man es ja auch gern in Schulen. (Natürlich
ist Java auch für andere Dinge geeignet). :)

Falls der OP Bücher braucht, sollte er sich dieses vielleicht mal
anschauen und/oder runterladen:
http://www.galileocomputing.de/openbook/javainsel7/

> IMHO ist es schwer, in PHP objektorientiert einzusteigen, weil dazu am
> anfang die Motivation fehlt und nachher programmiert man dann entweder
> Mist oder muss sich mühsam umstellen.

Stimmt. Wobei in PHP von der Objektorientierung eigentlich alles möglich
ist was in Java auch geht (Polymorphismus fehlt nur wegen der fehlenden
Möglichkeit Methoden zu überladen). Nur ist es hier nicht gezwungen.
Wegen der Objektorientierung finde ich es daher nicht so wichtig, die
kann man in PHP genauso gut durchsetzen wenn man sich dran hält, aber
die Typisierung ist für Lernzwecken doch recht wichtig finde ich.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Fr, 28 Dezember 2007 15:31 ] [ ID #1895281 ]

Re: Anfänger sucht Hilfe

Sebastian Wrona schrieb:
> echo"<tr>";
> for($i = 0; $i < 10; $i++){
> echo"<td align=\"center\" bgcolor=\"#FFCC00\"><input
> type=\"radio\" name=\"form[radio_grp_1][]\" value=\"". ($i+1) ."\"";

Wenn du bei solchen Dingen einfache Anführungszeichen zum quoten
verwendest, brauchst nicht soviel zu slashen.

Beispiel für diese Zeile wäre dann:
echo '<td align="center" bgcolor="#FFCC00"><input type="radio"
name="form[radio_grp_1][]" value="' . ($i + 1) . '"';

> if($selarr[0] == ($i)){

Wofür hier die runden Klammern um $i? Werden nicht gebraucht und stören
hier mehr als diese an Übersichtlichkeit bringen.

> echo "checked=\"checked\"";
> }
> echo "/></td>";
> }
> echo"</tr>";

Ansonsten sehe ich auf Anhieb keinen Fehler. Probiere es doch einfach
aus, dann weißt du am besten, ob es so funktioniert wie du es willst.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Fr, 28 Dezember 2007 15:37 ] [ ID #1895282 ]

OT: Anfänger

Sebastian Wrona schrieb:

> Seit einiger Zeit bin ich dabei eine Ausbildung zum Fachinformatiker zu
> machen und Programmiere (ich versuche es) bissi in PHP um
> Programmierkenntnisse zu sammeln.

Zu diesem Zweck würde ich mit C anfangen, dann mit c++ als objektorientierte Erweiterung.

Aber um einfache, logische Abläufe wie Schleifen, Bedingungen, etc zu verstehen ist php auch nicht so die schlechte Wahl.
Matthias Matker [ Fr, 28 Dezember 2007 16:08 ] [ ID #1895286 ]

Re: OT: Anfänger

Matthias Matker schrieb:
> Zu diesem Zweck würde ich mit C anfangen, dann mit c++ als
> objektorientierte Erweiterung.

Würden mich zwei Dinge interessieren:
1. Was für ein Vorteil hat C bei dir was C++ nicht leisten kann? Daher
warum soll er erst mit C anfangen und nicht gleich die "modernere"
Variante lernen?
2. Was für ein Vorteil haben diese beiden Sprachen im Vergleich zu Java
für den Zweck des Lernvorganges? Ich sehe da mehr Probleme als Vorteile
wegen fehlenden Schnittstellen und der unnötigen komplexen Zeigerarethmetik.

> Aber um einfache, logische Abläufe wie Schleifen, Bedingungen, etc zu
> verstehen ist php auch nicht so die schlechte Wahl.

Für diese Dinge ist jede Programmiersprache geeignet, da diese
Eigenschaften eine Programmiersprache aus machen. :)

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Fr, 28 Dezember 2007 16:16 ] [ ID #1895288 ]

Re: Anfänger sucht Hilfe

Jonas Werres schrieb:

> auf E_ALL || E_STRICT

Du meinst E_ALL | E_STRICT; ansonsten könntest du es gleich auf true se=
tzen.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Fr, 28 Dezember 2007 20:05 ] [ ID #1895299 ]

Re: OT: Anfänger

Matthias Matker schrieb:

> Zu diesem Zweck würde ich mit C anfangen, dann mit c++ als objektorientierte Erweiterung.

C++ ist keine "objektorientierte Erweiterung" (wovon eigentlich?),
sondern eine eigenständige, objektorientierte Sprache.

> Aber um einfache, logische Abläufe wie Schleifen, Bedingungen, etc zu verstehen ist php auch nicht so die schlechte Wahl.

Deine Zeilen sind zu lang. Bitte bringe Deinem Thunderbird mal eine
vernünftige Zeilenlänge bei.

Gruß. Claus
Claus Reibenstein [ Fr, 28 Dezember 2007 20:07 ] [ ID #1895300 ]

Re: Anfänger sucht Hilfe

Jonas Werres schrieb:

> Setz Dein Errorreporting auf E_ALL || E_STRICT

Welchen Sinn soll es haben, das Error Reporting auf TRUE zu setzen? ;-)

SCNR. Claus
Claus Reibenstein [ Fr, 28 Dezember 2007 20:32 ] [ ID #1895302 ]

Re: OT: Anfänger

Post removed (X-No-Archive: yes)
Notifier Deamon [ Fr, 28 Dezember 2007 20:58 ] [ ID #1895303 ]

Re: OT: Anfänger

Christoph Herrmann schrieb:
> Matthias Matker schrieb:
>> Zu diesem Zweck würde ich mit C anfangen, dann mit c++ als
>> objektorientierte Erweiterung.
>
> Würden mich zwei Dinge interessieren:
> 1. Was für ein Vorteil hat C bei dir was C++ nicht leisten kann? Daher
> warum soll er erst mit C anfangen und nicht gleich die "modernere"
> Variante lernen?

Was ist leichter ne PHP Extension in C oder C++ zu schreiben, wenn du
sowas schon mal gemacht hast, dann kannst du wahrscheinlich diese Frage
einfach beantworten. Für viele Dinge benötigt man immer noch C. C hat
auch ne relativ kleine Menge an Funktionen bzw. Features was es immer
einfach macht eine Sprache zu lernen.


> 2. Was für ein Vorteil haben diese beiden Sprachen im Vergleich zu Java
> für den Zweck des Lernvorganges? Ich sehe da mehr Probleme als Vorteile
> wegen fehlenden Schnittstellen und der unnötigen komplexen
> Zeigerarethmetik.

Etwas hinter die Kulissen zu gucken, Java oder C# nehmen einem viel ab,
aber tritt dann ein schwerwiegendes Problem mit der Sprache selbst auf,
fehlen den meisten Leuten das Hintergrundwissen um zu verstehen was da
schiefläuft z.B. Pufferüberläufe, die auch in Java und C# vorkommen können.

>
>> Aber um einfache, logische Abläufe wie Schleifen, Bedingungen, etc zu
>> verstehen ist php auch nicht so die schlechte Wahl.
>
> Für diese Dinge ist jede Programmiersprache geeignet, da diese
> Eigenschaften eine Programmiersprache aus machen. :)

sehe ich auch so.

Ich würde aber andere Sprachen PHP vorziehen, da ich die Doku von PHP
für nen Anfänger als ungeeignet ansehe, zu unstrukturiert etc.


>
Stefan Braumeister [ Fr, 28 Dezember 2007 21:57 ] [ ID #1895305 ]

Re: [OT] Re: Anfänger sucht Hilfe

> Stimmt. Wobei in PHP von der Objektorientierung eigentlich alles möglich
> ist was in Java auch geht (Polymorphismus fehlt nur wegen der fehlenden
> Möglichkeit Methoden zu überladen).
Wenn man unbedingt will, kann man das per __Call() nachbauen. Finde ich
aber auch nicht so schön.

> Nur ist es hier nicht gezwungen.
> Wegen der Objektorientierung finde ich es daher nicht so wichtig, die
> kann man in PHP genauso gut durchsetzen wenn man sich dran hält, aber
Ja, das streite ich ja gar nicht ab. Aber kein Anfänger (wenn er nciht
gerade von einem Lehrer dazu getreten wird), tut das. Wenn es dann auch
noch die erste Sprache ist, lernt man programmieren wie anno 1970.
Selbst wenn man kein Fan von Objektorientierung ist, das ist einfach
überhaupt kein modernes Paradigma.

Zum Selbststudium halte ich PHP deswegen für ungeeignet, um
Programmieren an sich zu lernen.

Das Dumme ist nur: Es ist eine der Wenigen Sprachen, wo ein Anfänger
noch Motivation hat. Ich habe immer Probleme, Leute (vor allem
Kinder/Jugendliche) zu Java zu motivieren, weil sie damit kaum was
sinnvolles Programmieren können.
Früher konnte man sich noch tolle Tools programmieren, die echt
hilfreich waren, aber heutzutage findet man ja für alles schon
kostenlose Lösungen, die tausendmal mächtiger sind als alles, was man in
absehbarer Zeit selbst machen könnte.
Jonas Werres [ Sa, 29 Dezember 2007 13:23 ] [ ID #1895789 ]

Re: Anfänger sucht Hilfe

Niels Braczek schrieb:
> Jonas Werres schrieb:
>
>> auf E_ALL || E_STRICT
>
> Du meinst E_ALL | E_STRICT; ansonsten könntest du es gleich auf true setzen.

Ja, sorry. Mir ist schon klar, dass das ein bitweises Oder sein muss.
Jonas Werres [ Sa, 29 Dezember 2007 13:57 ] [ ID #1895790 ]

Re: [OT] Re: Anfänger sucht Hilfe

Jonas Werres schrieb:

> Zum Selbststudium halte ich PHP deswegen für ungeeignet, um
> Programmieren an sich zu lernen.

Um Programmieren zu lernen braucht man zunächst ein Problem mit einem
gewünschten Ergebnis, weiters ein Blatt Papier und einen Bleistift, ggf.
noch einen Radiergummi. Die Grundschritte liest man in einem Buch,
welches 'Logik der Programmierung' im Titel führt, nach.

Wenn man irgendwann sicher ist, dass das gewünschte Ergebnis zu erzielen
ist, nimmt man den Lötkolben, C, C++, Cobol, Pascal, PHP ... was auch
immer oder lässt es bleiben.

Sorry für OT.

Peter
Peter Lange [ Sa, 29 Dezember 2007 14:24 ] [ ID #1895792 ]

Re: [OT] Re: Anfänger sucht Hilfe

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 29 Dezember 2007 14:37 ] [ ID #1895793 ]

Re: [OT] Re: Anfänger sucht Hilfe

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 29 Dezember 2007 16:43 ] [ ID #1895795 ]

Re: [OT] Re: Anfänger sucht Hilfe

> Um Programmieren zu lernen braucht man zunächst ein Problem mit einem
> gewünschten Ergebnis, weiters ein Blatt Papier und einen Bleistift, ggf.
> noch einen Radiergummi. Die Grundschritte liest man in einem Buch,
> welches 'Logik der Programmierung' im Titel führt, nach.
Und das man das tun muss und wie man es tut, weiß man ohne Lehrer. Klar.
Jonas Werres [ Sa, 29 Dezember 2007 18:04 ] [ ID #1895797 ]

Re: Anfänger sucht Hilfe

Am Fri, 28 Dec 2007 12:47:43 +0100 schrieb Sebastian Wrona:

> Eingabe von Werten mitels Radio-boxen

Vielleicht solltest Du erstmal einen Englischkurs belegen.

Martin
Martin Lemke [ So, 30 Dezember 2007 20:18 ] [ ID #1896251 ]

Re: Anfänger sucht Hilfe

Martin Lemke schrieb:
> Am Fri, 28 Dec 2007 12:47:43 +0100 schrieb Sebastian Wrona:
>
>> Eingabe von Werten mitels Radio-boxen
>
> Vielleicht solltest Du erstmal einen Englischkurs belegen.

Du bist Weihnachten leer ausgegangen oder?


Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ So, 30 Dezember 2007 22:00 ] [ ID #1896254 ]

Re: Anfänger sucht Hilfe

"Martin Lemke" <usenet [at] maaaddin.de> schrieb im Newsbeitrag
news:q9ty2avkmypz.dlg [at] maaaddin.de...
> Am Fri, 28 Dec 2007 12:47:43 +0100 schrieb Sebastian Wrona:
>
>> Eingabe von Werten mitels Radio-boxen
>
> Vielleicht solltest Du erstmal einen Englischkurs belegen.
>
> Martin
Hallo

Genau solche bemerkungen finde ich als total falsch am Platz. Lieber nichts
zum Thema sagen als solchen ... von sich zu geben.

Der newsgroup möchte ich aber für die Hilfe danken. Habe viel dazugelernt
und bin auch weitergekommen mit meiner Aufgabe.

Gruß
Sebastian
Sebastian Wrona [ So, 30 Dezember 2007 23:28 ] [ ID #1896256 ]
PHP » de.comp.lang.php.misc » Anfänger sucht Hilfe

Vorheriges Thema: Neunajhrsgruß
Nächstes Thema: setlocale nicht nutzbar, Bug in PHP?