Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP - Probleme mit Zähler und GET

Frage Entwicklung PHP

Mitglied: dark3zz

dark3zz (Level 1) - Jetzt verbinden

12.06.2012, aktualisiert 19.06.2012, 3018 Aufrufe, 8 Kommentare

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[]
Mitglied: Arano
12.06.2012 um 19:52 Uhr
Hi,

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 !

Erkläre doch einmal wozu das ganze gedacht sein soll, denn wie gesagt habe ich nichts verstanden !

Hm... man bemüht sich ja...

01.
<?php 
02.
 
03.
if( isset($_GET['parts']) && is_numeric($_GET['parts']) ) 
04.
    repeat_n_times( (int)$_GET['parts'] ); 
05.
else 
06.
    echo 'Parameter one expect to be integer - something given'
07.
 
08.
 
09.
function repeat_n_times( $n
10.
11.
    for( $x=1; $x<=$n; ++$x
12.
13.
        // mache etwas N mal... 
14.
15.
16.
?>
So kann man auch alles in eine Datei schieben - FALLS es das ist was du benötigst !?.


~Arano
Bitte warten ..
Mitglied: dark3zz
13.06.2012 um 10:48 Uhr
Hei Arano

Habe hier das mal Visualisiert. Eigentlich wäre das ganze ja ne simple Sache. Aber ich krieg das Hochzählen, per URL wieder mitgeben und wieder auslesen nicht so genau hin.....



http://postimage.org/image/lurjx1znr/
Bitte warten ..
Mitglied: dark3zz
13.06.2012, aktualisiert 15.06.2012
Ich habs gelöst. Danek Dir Arano für den Input

Meine IF Abfragen waren nicht ganz direkt. Frage nun auch nach dem Inhalt des Submits nach. So funktioniert mein Script. Kann es hier nicht posten, ist zu Spaghetti-mässig


01.
if (!isset($_POST['submit']) || ($_POST['submit'] != 'Speichern')) 
02.
03.
 
Bitte warten ..
Mitglied: dark3zz
13.06.2012, aktualisiert um 11:29 Uhr
Jetzt hab ich einfach das Problem das er bei Gleichstand schon auf die dritte und letzte Seite weiterleitet und den letzten teil nicht speichert. also wenn ich MAX auf "3" habe, geht er bei * gleich auf die nächste seite und speichert die 3 nicht ab

Hab folgende Varianten gestestet:

Variante1:
01.
if($PART <= $MAX)
(Da meinte ich doch: <= – prüft ob der linke Wert kleiner oder gleich ist vom rechten Wert. Das "gleich" kapiert mein webserver wohl nicht. neuste php5 und mySQL drauf)

Variante2:
01.
  
02.
if(($PART < $MAX) OR ($PART == $MAX))
(geht auch nicht, dasselbe ergebnis)



(rest vom code)
01.
  
02.
03.
mySQL eintrag 
04.
05.
else 
06.
07.
header(location="".....) 
08.
}
Bitte warten ..
Mitglied: Arano
13.06.2012, aktualisiert um 13:26 Uhr
Hi,

Lass dir msl deine Zahlenwerte zusätzlich ausgeben, dann sollte es klar werden
solange meine Vermutung stimmt - das anders hochgezählt wird als du das wolltest ;)

~Arano
Bitte warten ..
Mitglied: dark3zz
14.06.2012 um 14:46 Uhr
hoi

habs nun so gelöst, ohne GET POST

Schreibe auf der ersten Seite alles in die DB

Hole auf der zweiten Seite zu beginn diese zahlen mit einer query.
am ende der seite update ich das feld direkt mit +1 als query

thats it
Bitte warten ..
Mitglied: dark3zz
15.06.2012 um 09:10 Uhr
also so löse ich das nun:

SEITE1:

MAX = schreibe bei post submit die eingegebene zahl in die db. liefere mir mit "mysql_insert_id()" die ID in eine variable zurück.
TEIL = schreibe auch gleich in eine teil spalte eine "1"
die MAX variable gebe ich dann fuer seite2 in der URL mit.
code:
01.
if(isset($_POST['submit'])) // abfangen vom submit button 
02.
{    
03.
    mysql_query("INSERT INTO 
04.
                                                tabelle 
05.
06.
                                                MAX,                                            
07.
                                            )  
08.
             
09.
                            VALUES  
10.
11.
                                                '" .  $_POST[MAX]. "' 
12.
13.
                            ") or die(mysql_error()); 
14.
            $max = mysql_insert_id();              
15.
        }     
16.
}



SEITE2:

in der sich immer wiederholende seite hole und erhöhe ich per mySQL

also holt mir und erhöht mySQL mir (mit +1) meine zahl noch bevor ich die seite wieder abschicke
01.
      <?php 
02.
       
03.
        // erhöhen vom temporaeren teile feld 
04.
        mysql_query("UPDATE xxxxxxxx SET xxxxxx = $teil +1 WHERE xxxx = '$_GET[xxxID]'"); 
05.
             
06.
      ?> 
so, in etwa. also nichts mehr mit get, post, ++ blabla....
Bitte warten ..
Mitglied: Arano
15.06.2012 um 17:57 Uhr
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

01.
<?php session_start(); ?> 
02.
<html> 
03.
 
04.
<form action="<?php /*echo $_SERVER['PHP_SELF'];*/ ?>" method="POST" name="createWorkshop"
05.
 
06.
<?php 
07.
 
08.
$action = isset($_POST['createWorkshop'])&&isset($_POST['step']) 
09.
          ? $_POST['step'
10.
          : 'createTitle'
11.
 
12.
case( $action
13.
14.
 
15.
    case 'createTitle'
16.
        echo '<label for="wsTitle">Titel: </label><input type="text" name="workshopTitle" id="wsTitle">' 
17.
            .'<label for="wsDays" >Tage:  </label><input type="text" name="workshopDays"  id="wsDays">' 
18.
            /* Verstckte Felder zum transport von Informationen *
19.
            .'<input type="hidden" name="step" value="saveTitle">' 
20.
        break
21.
         
22.
         
23.
    case 'saveTitle': // speichere grundinformationen 
24.
        // prüfe den wert von "wsTitle" 
25.
        // prüfe den wert von "wsDays" 
26.
        $_SESSION['wsTitle']    = $_POST['workshopTitle']; // oder schon mal in die DB schieben 
27.
        $_SESSION['wsDays']     = $_POST['workshopDays'];  // und die Workshop-ID auslesen 
28.
        $_SESSION['wsDayTitle'] = array();   // lege leeres array für die Tagestitel an 
29.
         
30.
        // KEIN break ! - wir wollen mit den Tagen weiter machen 
31.
         
32.
         
33.
    case 'createDays'
34.
        $curDay       = isset($_POST['createDay']) ? $_POST['createDay'] : 0; 
35.
        $workshopDays = $_POST['workshopDays']; // wer des hidden-fields, der Session oder aus der temp-DB-tabelle 
36.
         
37.
        // aktueller tag ist kleiner oder gleich maximul UND kleiner oder gleich 5 
38.
        if( $workshopDays>=$curDay AND 5>=$curDay
39.
40.
            // wenn eine titel angegeben wurde 
41.
            // beim ersten "betreten"/aufrufen von -case-createDays- gibt es noch keinen titel !! 
42.
            if( 0<$curDay
43.
44.
                // prüfe den wert von "wsDayTitle" 
45.
                $_SESSION['wsDayTitle'][] = $_POST['workshopDayTitle']; // nicht vergessen, array beginnt bei null ! 
46.
47.
             
48.
            echo '<label for="wsDayTitle">Tagestitel: </label><input type="text" name="workshopDayTitle" id="wsDayTitle">'
49.
                /* Verstckte Felder zum transport von Informationen *
50.
                .'<input type="hidden" name="step"         value="createDays">' 
51.
                .'<input type="hidden" name="createDay"    value="'.++$curDay.'">' 
52.
                // createDays, einmal als wert von "step" und einmal 
53.
                // als eigenes feld für die zahl des tages 
54.
                .'<input type="hidden" name="workshopDays" value="'.$workshopDays.'">' 
55.
                // hier ggf. für jeden forhanene tag ein zusätzliches hidden-feld erstellen 
56.
                // lassen um die tagestitel transportieren zu können (Workshoptitel natürlich auch !) 
57.
                // <input name="dayTitels[]">     mit leere eckigen Klamern !! PHP macht daraus ein Array ;) 
58.
                // gibt es viele tagesbezogene daten, macht das speichern in der session oder 
59.
                // der DB natürlich mehr sinn 
60.
             
61.
            // daten zwischengespeichert, neues formular ausgegeben, beende switch-case 
62.
            break
63.
64.
        // leten workshoptag oder maximum erreicht 
65.
        else 
66.
67.
            // wir verlassen nun dieses case durch ein fehlendes "break" in diesem 
68.
            // leeren else block und rutschen so ins nächste case -> zusatzdaten 
69.
70.
         
71.
         
72.
    case 'additional':  
73.
        echo '<label for="wsHotel">Hotelname: </label><input type="text" name="workshopHotel" id="wsHotel">'
74.
            /* Verstckte Felder zum transport von Informationen *
75.
            .'<input type="hidden" name="step"         value="saveWorkshop">'    //   <-- nächster schritt SPEICHERN 
76.
            .'<input type="hidden" name="createDay"    value="'.++$curDay.'">' 
77.
            .'<input type="hidden" name="workshopDays" value="'.$workshopDays.'">' 
78.
            // hier müssten nun für jede information ein hiddenfield erstellt werden... 
79.
            // vom workshoptitel üder jeden einzelnen tag... viel zu viel. 
80.
            // die müssten ja dann auch immer wieder auf gültigkeit geprüft werden   oO 
81.
         
82.
        break
83.
         
84.
         
85.
    case 'saveWorkshop'
86.
        // alle daten wurde gesammt, befinden sich in der Session und können nun 
87.
        // in der datenbank gespeichert werden - FERTIG 
88.
        echo '...geschafft !' 
89.
         
90.
        break
91.
         
92.
         
93.
    default:  
94.
        // hm... unvorhergesehener fehler 
95.
        // schreibe info in logfile, sende mail an admin,  
96.
         
97.
} // end switch-createWorkshop 
98.
 
99.
?> 
100.
 
101.
<input type="submit" name="nextStep" value="...weiter &gt;"
102.
</form> 
103.
 
104.
</html>
Und noch mal das Switch separat:
01.
<?php 
02.
 
03.
$action = isset($_POST['createWorkshop'])&&isset($_POST['step']) 
04.
          ? $_POST['step'
05.
          : 'createTitle'
06.
 
07.
case( $action
08.
09.
 
10.
    case 'createTitle': break
11.
         
12.
    case 'saveTitle': // speichere grundinformationen 
13.
         
14.
    case 'createDays'
15.
        if( $workshopDays>=$curDay AND 5>=$curDay
16.
17.
            break; // daten zwischengespeichert, neues formular ausgegeben, beende switch-case 
18.
19.
        else // leten workshoptag oder maximum erreicht 
20.
21.
            // wir verlassen nun dieses case durch ein fehlendes "break" in diesem 
22.
            // leeren else block und rutschen so ins nächste case -> zusatzdaten 
23.
24.
         
25.
    case 'additional': break
26.
         
27.
    case 'saveWorkshop'
28.
        echo '...geschafft !' 
29.
        break
30.
         
31.
    default:  
32.
        // hm... unvorhergesehener fehler 
33.
        // schreibe info in logfile, sende mail an admin,  
34.
         
35.
} // end switch-createWorkshop 
36.
 
37.
?>
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
gelöst Sind euch verstärkte Probleme bei Windows 7 Updates aufgefallen? (4)

Frage von RadioHam zum Thema Windows 7 ...

Cloud-Dienste
gelöst OwnCloud 8 Probleme mit Vorschaubildern auf Mobilgeräten (1)

Frage von zeroblue2005 zum Thema Cloud-Dienste ...

PHP
gelöst Php regex und Array (5)

Frage von Thomas91 zum Thema PHP ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...