
88871
12.06.2012, aktualisiert am 19.06.2012
PHP - Probleme mit Zähler und GET
Hoied
Hab da mal wieder ein Problem und kriege das nicht ganz gebacken.
Ich möchte folgendes:
1. Ich gebe ein MAXIMUM auf der ersten Seite an. Da kann der User eine 1-5 angeben.
2. Dann soll auf der zweite Seite ein Formular immer wieder neu geladen werden bis das MAXIMUM erreicht ist.
3. Wenn dann das MAXIMUM erreicht ist, leite ich per header() auf die dritte und letzte Seite weiter.
Auf der ersten Seite gebe ich das Maximum per URL mit: PARTS
Auf der zweiten Seite hole ich mir das Maximum per $_GET[PARTS].
Starte auf der ersten Seite die URL mit part=1, damit ich auf der zweiten Seite mit der 1 beginnen kann.
Vergleichen bis das MAXIMUM erreicht ist, mach ich so: if($PART <= $PARTS) { mySQL befüllen }
Erhöhen mach ich folgendermassen: $PART++
Auf der zweiten Seite, welches sich bis zum MAXIMUM wieder laden soll, hat das Formular hat folgende Action:
"action='SichSelber.php?part=$PART&parts=$PARTS"
Wie soll ich nun von der ersten Seite das mitgeben, auf der zweiten abfangen und dann bis zum MAXIMUM durchlaufen lassen ? Hoffe das war Verständlich
PS: Möchte es über GET lösen.....nicht mit $_SESSION
Hab da mal wieder ein Problem und kriege das nicht ganz gebacken.
Ich möchte folgendes:
1. Ich gebe ein MAXIMUM auf der ersten Seite an. Da kann der User eine 1-5 angeben.
2. Dann soll auf der zweite Seite ein Formular immer wieder neu geladen werden bis das MAXIMUM erreicht ist.
3. Wenn dann das MAXIMUM erreicht ist, leite ich per header() auf die dritte und letzte Seite weiter.
Auf der ersten Seite gebe ich das Maximum per URL mit: PARTS
Auf der zweiten Seite hole ich mir das Maximum per $_GET[PARTS].
Starte auf der ersten Seite die URL mit part=1, damit ich auf der zweiten Seite mit der 1 beginnen kann.
Vergleichen bis das MAXIMUM erreicht ist, mach ich so: if($PART <= $PARTS) { mySQL befüllen }
Erhöhen mach ich folgendermassen: $PART++
Auf der zweiten Seite, welches sich bis zum MAXIMUM wieder laden soll, hat das Formular hat folgende Action:
"action='SichSelber.php?part=$PART&parts=$PARTS"
Wie soll ich nun von der ersten Seite das mitgeben, auf der zweiten abfangen und dann bis zum MAXIMUM durchlaufen lassen ? Hoffe das war Verständlich
PS: Möchte es über GET lösen.....nicht mit $_SESSION
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186364
Url: https://administrator.de/forum/php-probleme-mit-zaehler-und-get-186364.html
Ausgedruckt am: 23.04.2025 um 04:04 Uhr
8 Kommentare
Neuester Kommentar
Hi,
Erkläre doch einmal wozu das ganze gedacht sein soll, denn wie gesagt habe ich nichts verstanden !
Hm... man bemüht sich ja...
So kann man auch alles in eine Datei schieben - FALLS es das ist was du benötigst !?.
~Arano
Hoffe das war Verständlich face-smile
Kein Stück !Wie soll ich nun...
...
Möchte es über GET lösen...
Tja, dann wohl in der URI als Parameter !...
Möchte es über GET lösen...
Erkläre doch einmal wozu das ganze gedacht sein soll, denn wie gesagt habe ich nichts verstanden !
Hm... man bemüht sich ja...
<?php
if( isset($_GET['parts']) && is_numeric($_GET['parts']) )
repeat_n_times( (int)$_GET['parts'] );
else
echo 'Parameter one expect to be integer - something given';
function repeat_n_times( $n )
{
for( $x=1; $x<=$n; ++$x )
{
// mache etwas N mal...
}
}
?>
~Arano
Tagchen 
Okay, nach den Privaten Nachrichten weiß ich ja jetzt was es werden soll:
"Es sollen Seminare geplant werden können.
Im erstem Schritt werden wird der Seminartitel und die Anzahl der Seminartage bestimmt.
Im zweitem schritt soll nun für jeden Seminartag eine separater Titel mit Beschreibung angegeben werden können, Tag für Tag in einer Schleife und
im Dritten Schritt dann zusätzliches zum Seminar"
Meine Idee ist nun folgende:
Ich muss darauf hinweisen, das ich das ein bisschen gemischt habe, Dark3zz wollte das ursprüngliche ja nur per "GET" und ohne Sessions lösen, in meinem Beispiel habe ich jetzt aber hauptsächlich die Session verwendet um es kurz halten zu können. Alternativ kann das natürlich auch direkt in die Datenbank gespeichert oder in einer Datei zwischengespeichert werden...
Folgenden Code habe ich nur im Editor getippt und niemals getestet
Und noch mal das Switch separat:
Die einzelnen CASEs, kann man natürlich auch in Funktionen oder Dateien auslagern die dann aufgerufen bzw. inkludiert werden. Dann wird das SWITCH wieder übersichtlicher und alles wartbarer - ist ja nur ein Beispiel ;)
So, wenn du fragen hast nur zu !
Schönes Wochenende
~Arano
Okay, nach den Privaten Nachrichten weiß ich ja jetzt was es werden soll:
"Es sollen Seminare geplant werden können.
Im erstem Schritt werden wird der Seminartitel und die Anzahl der Seminartage bestimmt.
Im zweitem schritt soll nun für jeden Seminartag eine separater Titel mit Beschreibung angegeben werden können, Tag für Tag in einer Schleife und
im Dritten Schritt dann zusätzliches zum Seminar"
Meine Idee ist nun folgende:
Ich muss darauf hinweisen, das ich das ein bisschen gemischt habe, Dark3zz wollte das ursprüngliche ja nur per "GET" und ohne Sessions lösen, in meinem Beispiel habe ich jetzt aber hauptsächlich die Session verwendet um es kurz halten zu können. Alternativ kann das natürlich auch direkt in die Datenbank gespeichert oder in einer Datei zwischengespeichert werden...
Folgenden Code habe ich nur im Editor getippt und niemals getestet
<?php session_start(); ?>
<html>
<form action="<?php /*echo $_SERVER['PHP_SELF'];*/ ?>" method="POST" name="createWorkshop">
<?php
$action = isset($_POST['createWorkshop'])&&isset($_POST['step'])
? $_POST['step']
: 'createTitle';
case( $action )
{
case 'createTitle':
echo '<label for="wsTitle">Titel: </label><input type="text" name="workshopTitle" id="wsTitle">'
.'<label for="wsDays" >Tage: </label><input type="text" name="workshopDays" id="wsDays">'
/* Verstckte Felder zum transport von Informationen */
.'<input type="hidden" name="step" value="saveTitle">'
break;
case 'saveTitle': // speichere grundinformationen
// prüfe den wert von "wsTitle"
// prüfe den wert von "wsDays"
$_SESSION['wsTitle'] = $_POST['workshopTitle']; // oder schon mal in die DB schieben
$_SESSION['wsDays'] = $_POST['workshopDays']; // und die Workshop-ID auslesen
$_SESSION['wsDayTitle'] = array(); // lege leeres array für die Tagestitel an
// KEIN break ! - wir wollen mit den Tagen weiter machen
case 'createDays':
$curDay = isset($_POST['createDay']) ? $_POST['createDay'] : 0;
$workshopDays = $_POST['workshopDays']; // wer des hidden-fields, der Session oder aus der temp-DB-tabelle
// aktueller tag ist kleiner oder gleich maximul UND kleiner oder gleich 5
if( $workshopDays>=$curDay AND 5>=$curDay)
{
// wenn eine titel angegeben wurde
// beim ersten "betreten"/aufrufen von -case-createDays- gibt es noch keinen titel !!
if( 0<$curDay )
{
// prüfe den wert von "wsDayTitle"
$_SESSION['wsDayTitle'] = $_POST['workshopDayTitle']; // nicht vergessen, array beginnt bei null !
}
echo '<label for="wsDayTitle">Tagestitel: </label><input type="text" name="workshopDayTitle" id="wsDayTitle">';
/* Verstckte Felder zum transport von Informationen */
.'<input type="hidden" name="step" value="createDays">'
.'<input type="hidden" name="createDay" value="'.++$curDay.'">'
// createDays, einmal als wert von "step" und einmal
// als eigenes feld für die zahl des tages
.'<input type="hidden" name="workshopDays" value="'.$workshopDays.'">'
// hier ggf. für jeden forhanene tag ein zusätzliches hidden-feld erstellen
// lassen um die tagestitel transportieren zu können (Workshoptitel natürlich auch !)
// <input name="dayTitels"> mit leere eckigen Klamern !! PHP macht daraus ein Array ;)
// gibt es viele tagesbezogene daten, macht das speichern in der session oder
// der DB natürlich mehr sinn
// daten zwischengespeichert, neues formular ausgegeben, beende switch-case
break;
}
// leten workshoptag oder maximum erreicht
else
{
// wir verlassen nun dieses case durch ein fehlendes "break" in diesem
// leeren else block und rutschen so ins nächste case -> zusatzdaten
}
case 'additional':
echo '<label for="wsHotel">Hotelname: </label><input type="text" name="workshopHotel" id="wsHotel">';
/* Verstckte Felder zum transport von Informationen */
.'<input type="hidden" name="step" value="saveWorkshop">' // <-- nächster schritt SPEICHERN
.'<input type="hidden" name="createDay" value="'.++$curDay.'">'
.'<input type="hidden" name="workshopDays" value="'.$workshopDays.'">'
// hier müssten nun für jede information ein hiddenfield erstellt werden...
// vom workshoptitel üder jeden einzelnen tag... viel zu viel.
// die müssten ja dann auch immer wieder auf gültigkeit geprüft werden oO
break;
case 'saveWorkshop':
// alle daten wurde gesammt, befinden sich in der Session und können nun
// in der datenbank gespeichert werden - FERTIG
echo '...geschafft !'
break;
default:
// hm... unvorhergesehener fehler
// schreibe info in logfile, sende mail an admin,
} // end switch-createWorkshop
?>
<input type="submit" name="nextStep" value="...weiter >">
</form>
</html>
Und noch mal das Switch separat:
<?php
$action = isset($_POST['createWorkshop'])&&isset($_POST['step'])
? $_POST['step']
: 'createTitle';
case( $action )
{
case 'createTitle': break;
case 'saveTitle': // speichere grundinformationen
case 'createDays':
if( $workshopDays>=$curDay AND 5>=$curDay)
{
break; // daten zwischengespeichert, neues formular ausgegeben, beende switch-case
}
else // leten workshoptag oder maximum erreicht
{
// wir verlassen nun dieses case durch ein fehlendes "break" in diesem
// leeren else block und rutschen so ins nächste case -> zusatzdaten
}
case 'additional': break;
case 'saveWorkshop':
echo '...geschafft !'
break;
default:
// hm... unvorhergesehener fehler
// schreibe info in logfile, sende mail an admin,
} // end switch-createWorkshop
?>
Die einzelnen CASEs, kann man natürlich auch in Funktionen oder Dateien auslagern die dann aufgerufen bzw. inkludiert werden. Dann wird das SWITCH wieder übersichtlicher und alles wartbarer - ist ja nur ein Beispiel ;)
So, wenn du fragen hast nur zu !
Schönes Wochenende
~Arano