Ik heb een probleem met mijn sessie variabelen. Ik ben nieuw met sessies en heb mijn pagina's opgebouwd adhv tutorials en voorbeelden. Toen het niet bleek te werken ben ik gaan lezen over sessies op php.net en op verschillende forums (waaronder hier). Maar na bijna 2 dagen lukt het nog steeds niet en wil ik het toch eens vragen.
Mijn situatie:
Ik heb een klantenbeheersysteem en wil graag gaan zoeken op klanten. Het form hiervoor is klant.php. Aangezien het mogelijk is om meerdere klanten te vinden (jan en piet op de kerkstraat bijv.) maar ik wel iedere klant een eigen pagina wil geven moeten de criteria van het form opgeslagen worden om zo later de query nogmaals te kunnen uitvoeren. Dit doe ik dus met een sessie in zoekvelden_opslaan.php. Hierna gaat de gebruiker (nu nog niet automatisch omdat ik nog wat info uit deze pagina wil hebben voor het debuggen) naar klant_weergeven.php. Deze pagina zoekt in de database en laat de resultaten zien.
Toen het niet helemaal bleek te werken dacht ik dat ik de sessie telkens moest verwijderen bij een nieuwe zoekopdracht. Dit heb ik eerst gedaan door session_destroy(); in klant.php te zetten (werkte niet), toen door een nieuwe pagina te maken (destroy.php, bevat enkel session_start(); en session_destroy();). Dit werkte wel, maar toen ik deze wilde includen in klant.php werkte het weer niet. Ook toen ik deze pagina voor klant.php stopte en met een meta automatisch naar klant.php doorstuurde wilde het ineens niet meer werken. Handmatig die pagina oproepen werkt wel, en wonderbaarlijk genoeg werken dan ook de rest van de pagina's.
Toen dacht ik dat het dus aan de sessie_id lag. Ik vermoede dat die telkens overnieuw gestart werden en heb voor het gemak de sessie_id's laten zien op alle pagina's en inderdaad deze verschillen. Nu wil ik dus graag ervoor zorgen dat het id wordt meegenomen. Hier gaat het fout. Het lukt maar niet om dit aan de praat te krijgen.
Overigens, alle pagina's worden include in index.php. Deze pagina bevat ook een session_start(). Ik zal ongetwijfeld fouten maken bij het aanroepen van de sessies.
index.php:
klant.php:
opslaan_zoekvelden.php
klant_weergeven.php:
Mijn situatie:
Ik heb een klantenbeheersysteem en wil graag gaan zoeken op klanten. Het form hiervoor is klant.php. Aangezien het mogelijk is om meerdere klanten te vinden (jan en piet op de kerkstraat bijv.) maar ik wel iedere klant een eigen pagina wil geven moeten de criteria van het form opgeslagen worden om zo later de query nogmaals te kunnen uitvoeren. Dit doe ik dus met een sessie in zoekvelden_opslaan.php. Hierna gaat de gebruiker (nu nog niet automatisch omdat ik nog wat info uit deze pagina wil hebben voor het debuggen) naar klant_weergeven.php. Deze pagina zoekt in de database en laat de resultaten zien.
Toen het niet helemaal bleek te werken dacht ik dat ik de sessie telkens moest verwijderen bij een nieuwe zoekopdracht. Dit heb ik eerst gedaan door session_destroy(); in klant.php te zetten (werkte niet), toen door een nieuwe pagina te maken (destroy.php, bevat enkel session_start(); en session_destroy();). Dit werkte wel, maar toen ik deze wilde includen in klant.php werkte het weer niet. Ook toen ik deze pagina voor klant.php stopte en met een meta automatisch naar klant.php doorstuurde wilde het ineens niet meer werken. Handmatig die pagina oproepen werkt wel, en wonderbaarlijk genoeg werken dan ook de rest van de pagina's.
Toen dacht ik dat het dus aan de sessie_id lag. Ik vermoede dat die telkens overnieuw gestart werden en heb voor het gemak de sessie_id's laten zien op alle pagina's en inderdaad deze verschillen. Nu wil ik dus graag ervoor zorgen dat het id wordt meegenomen. Hier gaat het fout. Het lukt maar niet om dit aan de praat te krijgen.
Overigens, alle pagina's worden include in index.php. Deze pagina bevat ook een session_start(). Ik zal ongetwijfeld fouten maken bij het aanroepen van de sessies.
index.php:
code:
Er zit nog meer in de index.php (bijv. de navigatie e.d. maar deze lijkt mij niet zo interessant. Mocht die toch nodig zijn wil ik 'm graag posten1
2
3
4
5
6
7
8
9
10
11
12
13
| <?PHP session_start(); ?> <?php switch($_GET['action']) { // ------ KLANT ------- case 'klant': include("content/klant/klant.php"); break; } ?> |
klant.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| <?php //include("destroy.php"); $deSessionId = session_id(); echo "sessie_id = $deSessionId"; echo "<H1>Klant gegevens zoeken</H1>". "<FORM action=\"{$_SERVER['PHP_SELF']}?action=opslaan_zoekvelden&$deSessionId\" method=POST>" . "<table width=\"57%\" border=\"0\">" . "<tr>" . "<td> Klantnummer:</td><td><input type=\"text\" size=\"61\" name=\"klant_id\"></td>" . "</tr>" . "<tr>" . "<td> Naam:</td><td><input type=\"text\" size=\"61\" name=\"naam\"></td>" . "</tr>" . "<tr>" . "<td> Adres:</td><td><input type=\"text\" size=\"50\" name=\"straat\"> <input type=\"text\" size=\"6\" name=\"huisnummer\"></td>" . "</tr>" . "<tr>" . "<td> Postcode:</td><td><input type=\"text\" size=\"7\" name=\"postcode\"> Woonplaats:" . "<input type=\"text\" size=\"39\" name=\"woonplaats\"></td>" . "</tr>" . "<tr>" . "<td> Telefoon:</td><td><input type=\"text\" size=\"20\" name=\"telefoon\">" . " Fax :<input type=\"text\" size=\"20\" name=\"fax\"></td>" . "</tr>" . "<tr>" . "<td> E-mail:</td><td><input type=\"text\" size=\"61\" name=\"email\"></td>" . "</tr>" . "<tr>" . "<td> Actief:</td><td><input type=\"radio\" name=\"actief\" value=\"Ja\">Ja <input type=\"radio\"name=\"actief\" value=\"Nee\">Nee</td>" . "</tr>" . "<tr>" . "<td><input type=\"submit\" name=\"submit\" value=\" Zoek \"></td>" . "</tr>" . "<tr>" . "<td> </td>" . "</tr>" . "<tr>" . "<td><a href=\"{$_SERVER['PHP_SELF']}?action=klantinvoeren\">Nieuwe klant invoeren</a></td>" . "</tr>" . "</TABLE>" . "</FORM>"; ?> |
opslaan_zoekvelden.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| <?PHP session_id($_GET['session_id']); session_start(); $deSessionId = session_id(); echo "sessie_id = $deSessionId"; //omzetten van de ingevulde velden naar de sessievelden. $ses_klant_id = "$_POST[klant_id]"; $ses_naam = "$_POST[naam]"; $ses_straat = "$_POST[straat]"; $ses_huisnummer = "$_POST[huisnummer]"; $ses_postcode = "$_POST[postcode]"; $ses_plaats = "$_POST[plaats]"; $ses_telefoon = "$_POST[telefoon]"; $ses_fax = "$_POST[fax]"; $ses_email = "$_POST[email]"; $ses_actief = "$_POST[actief]"; // opslaan van de sessievelden, let op: zonder $ session_register("ses_klant_id"); session_register("ses_naam"); session_register("ses_straat"); session_register("ses_huisnummer"); session_register("ses_postcode"); session_register("ses_plaats"); session_register("ses_telefoon"); session_register("ses_fax"); session_register("ses_email"); session_register("ses_actief"); //echo "<META http-equiv=\"Refresh\" content=\"0; URL={$_SERVER['PHP_SELF']}?action=klantweergeven\">"; //"Een moment geduld aub, u wordt doorgelinkt naar de volgende pagina.<br> " echo "Klik <a href=\"{$_SERVER['PHP_SELF']}?action=klantweergeven&$deSessionId\">hier</a>."; echo "straat =$ses_straat<br>"; ?> |
klant_weergeven.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
| <?PHP session_id($_GET['session_id']); session_start(); // Connectie maken met de database include("classes/databaseconnectie.php"); $limiet=1; // Stel max. aantal resultaten per pagina in $deze_pagina= "index.php?action=klantweergeven"; //defineer pagina-naam of gebruik $PHP_SELF //----------- QUERY OPBOUWEN ------------ // de basis van de query $zoek_query = "SELECT * FROM klant WHERE global = '1'"; // is klant_id leeg? zo nee, zoek op klant_id in de tabel if ($ses_klant_id <> '') { $zoek_query = "$zoek_query AND klant_id LIKE '$ses_klant_id' "; } // is naam leeg? zo nee, zoek op naam in de tabel if ($ses_naam <> '') { $zoek_query = "$zoek_query AND naam LIKE '%$ses_naam%' "; } // is straat leeg? zo nee, zoek op straat in de tabel if ($ses_straat <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_straat%' "; } // is huisnummer leeg? zo nee, zoek op huisnummer in de tabel if ($ses_huisnummer <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_huisnummer%' "; } // is postcode leeg? zo nee, zoek op postcode in de tabel if ($ses_postcode <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_postcode%' "; } // is plaats leeg? zo nee, zoek op plaats in de tabel if ($ses_plaats <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_plaats%' "; } // is telefoon leeg? zo nee, zoek op telefoon in de tabel if ($ses_telefoon <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_telefoon%' "; } // is fax leeg? zo nee, zoek op fax in de tabel if ($ses_fax <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_fax%' "; } // is email leeg? zo nee, zoek op email in de tabel if ($ses_email <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_email%' "; } // is actief leeg? zo nee, zoek op actief in de tabel if ($ses_actief <> '') { $zoek_query = "$zoek_query AND straat LIKE '%$ses_actief%' "; } //----------- EINDE QUERY OPBOUWEN ------------ $numresults = mysql_query($zoek_query); $aantal = mysql_num_rows($numresults); //tel aantal resultaten vd zoekopdracht $paginas=intval($aantal/$limiet); // bereken aantal pagina's met resultaten if ($aantal%$limiet) //als aantal veelvoud is van de limiet, 1 pagina erbij op tellen { $paginas++; } if ($aantal !="0") { if (empty($_GET["offset"])) { $offset=0; } else { $offset = $_GET["offset"]; } } // doe zoekopdracht nogmaals met offset en limiet $zoek_query =$zoek_query." LIMIT $offset,$limiet"; $zoek_result = mysql_query($zoek_query); // bouw de resultaten op while ($zoek_result_row = mysql_fetch_array($zoek_result)) { echo "<h1> Klant </h1>"; echo "straat = $ses_straat<br>"; echo "<table border=\"1\" width=\"90%\" align=\"center\">". "<tr>". "<td>"; echo "<table border=\"0\">" ; echo "<tr>" . "<td>Klantnummer: </td><td colspan=\"3\">{$zoek_result_row['klant_id']}</td>" . "</tr>". "<td>Naam: </td><td colspan=\"3\">{$zoek_result_row['naam']}</td>" . "</tr>". "<td>Adres: </td><td colspan=\"2\">{$zoek_result_row['straat']}</td>" . "<td>{$zoek_result_row['huisnummer']}</td>" . "</tr>". "<td>Postcode: </td><td>{$zoek_result_row['postcode']}</td>" . "<td> </td><td>{$zoek_result_row['plaats']}</td>" . "</tr>". "<td>Telefoonnummer: </td><td colspan=\"3\">{$zoek_result_row['telefoon']}</td>" . "</tr>". "</tr>". "<td>Fax: </td><td colspan=\"3\">{$zoek_result_row['fax']}</td>" . "</tr>". "</tr>". "<td>E-mail: </td><td colspan=\"3\">{$zoek_result_row['email']}</td>" . "</tr>". "</tr>". "<td>Actief: </td><td colspan=\"3\">{$zoek_result_row['actief']}</td>" . "</tr>" ; echo "</table>" ; echo "</td>". "<td>"; echo "<h3> Klant geschiedenis </h3>". "<a href=\"javascript:factuur_open()\">Facturen</a><br>". "Eerdere problemen<br>". "To-do's<br>". "Binnenbonnen<br>". "Buitenbonnen<br>". "Mailings<br>". "Overzicht hardware"; echo "</td>". "</tr>". "</table>"; $_SESSION['klant_id'] = $zoek_result_row['klant_id']; } $deSessionId = session_id(); echo "sessie_id = $deSessionId<br>"; echo $_SESSION['klant_id']; // Hieronder wordt Vorige | nummering | Volgende gecreëerd if ($aantal > $limiet) { if ($offset!=0) // indien niet eerste pagina, druk "Vorige" af { $vorige_offset=$offset-$limiet; print "<a href=\"$deze_pagina&offset=$vorige_offset\">Vorige</a> |\n"; // & was ? } for ($i=1;$i<=$paginas;$i++) // de nummering van de pagina's wordt hier afgedrukt { $nieuwe_offset=$limiet*($i-1); if ($nieuwe_offset==$offset) // indien huidige pagina, dan vet afdrukken { print "<a href=\"$deze_pagina&offset=$nieuwe_offset\"><b>$i</b></a> |\n"; // & was ? } else { print "<a href=\"$deze_pagina&offset=$nieuwe_offset\">$i</a> |\n"; // & was ? } } if (!(round($offset/$limiet)==$paginas-1) && $paginas!=1) //volgende afdrukken (behalve indien laatste pagina of bij maar 1 pagina) { $nieuwe_offset=$offset+$limiet; print "<a href=\"$deze_pagina&offset=$nieuwe_offset\">Volgende</a>\n"; // & was ? } } ?> |