Aanvinkvakje voor getoonde artikelen
Pagina: « vorige 1 2 3 volgende »
Collega
Murtada Helo op 13/08/2012 13:34:23:
Collega
Waarom vraag je dit dan niet na bij hem? Die zal het je waarschijnlijk zo kunnen zeggen aangezien hij alles geschreven heeft.
Murtada Helo op 13/08/2012 13:17:14:
Nu kan ik wel met selectievakje een artikel kiezen maar krijg alleen tabellen leeg op de volgende pagina zonder gegevens van de klant en de geselecteerde artikel wordt ook niet getoond Hoe kan ik dit oplossen? grrag uw help
Dat is heel simpel. Elke keer dat je een php pagina laadt begin je 'dom'. php weet van kant nog wal en heeft geen info. Die moet jij allemaal aangeven. Je hebt verschillende manieren om gegevens in het geheugen van php te proppen:
- hard coded (dus gewoon in het php bestand zetten)
- via de request arrays (GET en POST)
- via cookies (COOKIE)
- via de sessie (SESSION)
- vanaf de server (SERVER)
- via een andere externe site
In je eerste pagina haal je de gegevens van de klanten etc op via de laatste methode (namelijk via je webservice).
In je tweede pagina haal je het nergens vandaan. Het staat niet in je POST gegevens (want zoals ik al aangaf, het staat niet in input elementen) en je roept die webservice niet aan. php blijft dus 'dom' en heeft geen idee welke gegevens jij nodig hebt.
Oplossing:
roep gewoon je webservice aan en haal de gegevens op van de geselecteerde artikelen. Die artikel nummers gaan namelijk wel mee (in de POST array) en via je webservice kan je alles ophalen.
Hij heeft zelf geen verstaan van php, maar het idee heeft hij geschreven verder heb ik zelf met behulp van jullie dit geschreven en zeker veel gezocht. Ik ben beginner met php wil zichzelf met php verder oefenen en deze wordt als oefening gezien.
Murtada Helo op 13/08/2012 13:49:55:
Hij heeft zelf geen verstaan van php, maar het idee heeft hij geschreven verder heb ik zelf met behulp van jullie dit geschreven en zeker veel gezocht. Ik ben beginner met php wil zichzelf met php verder oefenen en deze wordt als oefening gezien.
Ok jij hebt het dus geschreven, en je collega bedacht.
Als ik schrijven zeg bedoel ik de programmeur :D
Erwin heeft mooie input voor je, lees het even door ;)
Waarom moet ik dan de webservice aanroepen op de volgende pagina?
Toevoeging op 13/08/2012 14:29:33:
Als ik de input zo doe dan ben in goede weg?
Toevoeging op 13/08/2012 14:30:48:
<php?
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST">';
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
print '<td align="center"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
?>
Toevoeging op 13/08/2012 14:31:41:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST">';
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
print '<td align="center"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
?>
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST">';
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
print '<td align="center"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
?>
Murtada Helo op 13/08/2012 13:59:11:
De geselecteerde artikel is al getoond door webservice samen met klantgegevens op de eerste pagina. Wil alleen deze getoonde en geselecteerde artikel samen met de klantgegevens gewoon getoond op volgende pagina.
Waarom moet ik dan de webservice aanroepen op de volgende pagina?
Waarom moet ik dan de webservice aanroepen op de volgende pagina?
Omdat php 'stateless' is. php heeft geen weet van wat er 'een vorige' keer is gebeurd en je kan dus niet gegevens uit een vorige aanroep gebruiken. Je moet bij elke pagina opnieuw alle gegevens ophalen die je nodig hebt.
Murtada Helo op 13/08/2012 13:59:11:
Als ik de input zo doe dan ben in goede weg?
Nee.
Het beste is om opnieuw je webservice aan te roepen. Daar staan de originele gegevens en die wil je hebben. Als je webservice goed is opgezet kan je ook alleen 1 artikel opvragen en hoef je dus niet elke keer alle gegevens op te vragen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
}
?>
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
}
?>
Het eerste deel, maar dan haal je dus alles op. Je zou verwachten dat je ook alleen de gegevens kan opvragen voor 1 artikel.
wat is hier de juiste form combinatie?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
}
print '<td align="center"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
?>
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
print '</tr>';
}
}
print '<td align="center"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
?>
Aangezien je ze allemaal dezelfde naam (name="check") geeft, overschrijven ze elkaar. Ofwel geef ze allemaal een andere naam, ofwel maak er een array van door dit als naam te geven: name="check[]"
Hoe kan ik de geselecteerde artikelen aanroepen? is deze scripts niet juist en als dat niet zo is welke dan?
Code (php)
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
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
<?php
print '<fieldset>';
print '<legend style="cursor:hand;"><H1>Verzamelfoutformulier</H1></legend>';
print '<br>';
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($_POST as $verzamelfoutformulier){
}
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
print '<tr>';
print '<td valign=top>De gekozen artikel(en):</td>';
print '<td valign=top>';
print '<td valign=top>'.$_POST["artikelgegevens"]->artnr.'</td>';
print '<td valign=top>'.$_POST["artikelgegevens"]->artomschr.'</td>';
print '<td valign=top>'.$_POST["artikelgegevens"]->geleverd.'</td>';
print '</td>';
print '</tr>';
print '</ul>';
}
else {
print '<font color=red><b>Er is geen artikel gekozen.</b></font>';
}
print '</table>';
print '</fieldset>';
}
?>
print '<fieldset>';
print '<legend style="cursor:hand;"><H1>Verzamelfoutformulier</H1></legend>';
print '<br>';
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($_POST as $verzamelfoutformulier){
}
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
print '<tr>';
print '<td valign=top>De gekozen artikel(en):</td>';
print '<td valign=top>';
print '<td valign=top>'.$_POST["artikelgegevens"]->artnr.'</td>';
print '<td valign=top>'.$_POST["artikelgegevens"]->artomschr.'</td>';
print '<td valign=top>'.$_POST["artikelgegevens"]->geleverd.'</td>';
print '</td>';
print '</tr>';
print '</ul>';
}
else {
print '<font color=red><b>Er is geen artikel gekozen.</b></font>';
}
print '</table>';
print '</fieldset>';
}
?>
Code (php)
Hier haal je echt alles door elkaar wat door elkaar te halen valt.
1. Bedenk eens goed welke gegevens waar vandaan komen. Uit je formulier komen ALLEEN de artikelnummers, die zitten dus in de POST. In $_POST['check'] als een array. Alle andere gegevens kun je dus niet uit POST halen.
2. $_POST["land"] en $_POST["ordernr"] had je op pagina 1 wel, maar aangezien die NIET in het formulier zitten dat je doorstuurt, heb je die nu niet meer. Je zal die dus ook in het formulier moeten opnemen (met een hidden input), anders heb krijg je die gegevens niet.
3. Je krijgt uit je webservice de gegevens in $ritnummers. Daarop moet je dus de foreach laten lopen, niet op $_POST. Vervolgens wil je alleen de aangevinkte artikelen hebben, dus moet je voor het printen een check doen of $verzamelfoutformulier->artnr wel in de $_POST['check'] array zit
Code (php)
4. $_POST["artikelgegevens"]->artnr gaat dus ook weer niet werken, want de artikel gegevens zitten niet in POST, maar in $verzamelfoutformulier. De print kan je dus op dezelfde manier doen als op pagina 1.
Tot slot, als je controle hebt over de webservice dan raad ik je STERK aan om ervoor te zorgen dat je gegevens kunt opvragen op basis van de artikel nummers. Dan vraag je alleen de gegevens op die je nodig hebt en dat scheelt je bandbreedte, tijd en heel veel code in dit script (punten 2 en 3 komen dan al te vervallen). Steek hier tijd in, want dat gaat je tijd opleveren!
Gewijzigd op 14/08/2012 11:23:35 door Erwin H
Code (php)
<html>
<body>
<form action="#" method="post">
Ritnummer: <input type="text" name="ordernr" />
Filiaal: <SELECT NAME="land"><OPTION VALUE="land">Kies een filiaal</OPTION><OPTION>00</OPTION><OPTION>05</OPTION>
</SELECT>
<input type="submit" value="Volgende"/>
</form>
</body>
</html>
Code (php)
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
foreach ($ritnummers as $verzamelfoutformulier){
}
print '<table cellspacing="1" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<tr>';
print '<caption><H2>Klantgegevens</H2></caption> ';
print '</tr>';
print '<tr><td>Klantnummer:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->klantnr.'</td><br>';
print '</td></tr>';
print '<tr><td>Klantnaam:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->naam.'</td><br>';
print '</td></tr>';
print '<tr><td>Afleveradres:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->afleveradres.'</td><br>';
print '</td></tr>';
print '<tr><td>Postcode:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->postcode.'</td><br>';
print '</td></tr>';
print '<tr><td>Plaats:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->plaats.'</td><br>';
print '</td></tr>';
print '<tr><td>Land:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->land.'</td><br>';
print '</td></tr>';
print '</table>';
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
}
print '</tr>';
print '<td align="right"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
print '</fieldset>';
}
?>
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
foreach ($ritnummers as $verzamelfoutformulier){
}
print '<table cellspacing="1" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<tr>';
print '<caption><H2>Klantgegevens</H2></caption> ';
print '</tr>';
print '<tr><td>Klantnummer:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->klantnr.'</td><br>';
print '</td></tr>';
print '<tr><td>Klantnaam:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->naam.'</td><br>';
print '</td></tr>';
print '<tr><td>Afleveradres:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->afleveradres.'</td><br>';
print '</td></tr>';
print '<tr><td>Postcode:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->postcode.'</td><br>';
print '</td></tr>';
print '<tr><td>Plaats:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->plaats.'</td><br>';
print '</td></tr>';
print '<tr><td>Land:</td>';
print '<td align="left">'.$ritnummers["klantgegevens"][0]->land.'</td><br>';
print '</td></tr>';
print '</table>';
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
}
print '</tr>';
print '<td align="right"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
print '</fieldset>';
}
?>
en de tweede pagina is aangepast naar:
Code (php)
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
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
<?php
print '<fieldset>';
print '<legend style="cursor:hand;"><H1>Verzamelfoutformulier</H1></legend>';
print '<br>';
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($ritnummers as $verzamelfoutformulier){
}
print '<table cellspacing="1" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<tr>';
print '<caption><H2>Klantgegevens</H2></caption> ';
print '</tr>';
print '<td valign=top>Klantnummer:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->klantnr.'</td><br>';
print '</td></tr>';
print '<td valign=top>Klantnaam:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->naam.'</td><br>';
print '</td></tr>';
print '<td valign=top>Afleveradres:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->afleveradres.'</td><br>';
print '</td></tr>';
print '<td valign=top>Postcode:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->postcode.'</td><br>';
print '</td></tr>';
print '<td valign=top>Plaats:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->plaats.'</td><br>';
print '</td></tr>';
print '<td valign=top>Land:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->land.'</td><br>';
print '</td></tr>';
print '</table>';
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
print '<tr>';
print '<td valign=top>De gekozen artikel(en):</td>';
print '<td valign=top>';
foreach ($ritnummers[artikelgegevens] as $verzamelfoutformulier){
}
if ( in_array($verzamelfoutformulier->artnr, $_POST['check']) ){
print '<td valign=top>'.$ritnummers->artnr.'</td>';
print '<td valign=top>'.$ritnummers->artomschr.'</td>';
print '<td valign=top>'.$ritnummers->geleverd.'</td>';
}
print '</td>';
print '</tr>';
print '</ul>';
} else {
print '<font color=red><b>Er is geen artikel gekozen.</b></font>';
}
print '</table>';
print '</fieldset>';
}
?>
print '<fieldset>';
print '<legend style="cursor:hand;"><H1>Verzamelfoutformulier</H1></legend>';
print '<br>';
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
ini_set("soap.wsdl_cache_enabled", 0);
$webservice_server = "";
$webservice_connection_string = "";
$client = new SoapClient( $webservice_connection_string, array( 'soap_version' => SOAP_1_1 ) );
$ritnummers = $client->verzamelfoutformulier($_POST["land"], $_POST["ordernr"]);
if (isset($_POST['check'])) {
foreach ($ritnummers as $verzamelfoutformulier){
}
print '<table cellspacing="1" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<tr>';
print '<caption><H2>Klantgegevens</H2></caption> ';
print '</tr>';
print '<td valign=top>Klantnummer:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->klantnr.'</td><br>';
print '</td></tr>';
print '<td valign=top>Klantnaam:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->naam.'</td><br>';
print '</td></tr>';
print '<td valign=top>Afleveradres:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->afleveradres.'</td><br>';
print '</td></tr>';
print '<td valign=top>Postcode:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->postcode.'</td><br>';
print '</td></tr>';
print '<td valign=top>Plaats:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->plaats.'</td><br>';
print '</td></tr>';
print '<td valign=top>Land:</td>';
print '<td valign=top>'.$ritnummers["klantgegevens"][0]->land.'</td><br>';
print '</td></tr>';
print '</table>';
print '<table cellspacing="2" cellpadding="2" width="50%" bgcolor="#cccccc">';
print '<caption><H2>Artikelgegevens</H2></caption> ';
print '<tr>';
print '<th></th>';
print '<th>Artikelnummer</th>';
print '<th>Artikelomschrijving</th>';
print '<th>Aantal</th>';
print '</tr>';
print '<tr>';
print '<td valign=top>De gekozen artikel(en):</td>';
print '<td valign=top>';
foreach ($ritnummers[artikelgegevens] as $verzamelfoutformulier){
}
if ( in_array($verzamelfoutformulier->artnr, $_POST['check']) ){
print '<td valign=top>'.$ritnummers->artnr.'</td>';
print '<td valign=top>'.$ritnummers->artomschr.'</td>';
print '<td valign=top>'.$ritnummers->geleverd.'</td>';
}
print '</td>';
print '</tr>';
print '</ul>';
} else {
print '<font color=red><b>Er is geen artikel gekozen.</b></font>';
}
print '</table>';
print '</fieldset>';
}
?>
Ook deze werkt het niet
Erwin H op 14/08/2012 11:23:11:
2. $_POST["land"] en $_POST["ordernr"] had je op pagina 1 wel, maar aangezien die NIET in het formulier zitten dat je doorstuurt, heb je die nu niet meer. Je zal die dus ook in het formulier moeten opnemen (met een hidden input), anders heb krijg je die gegevens niet.
Tot slot, als je controle hebt over de webservice dan raad ik je STERK aan om ervoor te zorgen dat je gegevens kunt opvragen op basis van de artikel nummers. Dan vraag je alleen de gegevens op die je nodig hebt en dat scheelt je bandbreedte, tijd en heel veel code in dit script (punten 2 en 3 komen dan al te vervallen). Steek hier tijd in, want dat gaat je tijd opleveren!
Tot slot, als je controle hebt over de webservice dan raad ik je STERK aan om ervoor te zorgen dat je gegevens kunt opvragen op basis van de artikel nummers. Dan vraag je alleen de gegevens op die je nodig hebt en dat scheelt je bandbreedte, tijd en heel veel code in dit script (punten 2 en 3 komen dan al te vervallen). Steek hier tijd in, want dat gaat je tijd opleveren!
Dit geldt nog steeds.... plus nog wat andere fouten:
Een foreach loop die je meteen sluit waardoor de rest niet meer klopt.
Gewijzigd op 14/08/2012 12:50:09 door Erwin H
Code (php)
1
2
3
2
3
<?php
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
?>
print '<td align="center"><input type="checkbox" name="check" value="'.$verzamelfoutformulier->artnr.$verzamelfoutformulier->artomschr.$verzamelfoutformulier->geleverd.'" /></td>';
?>
Naar
Code (php)
1
2
3
2
3
<?php
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
?>
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
?>
pagina 1: punt 2 is dit bedoeld?
Code (php)
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
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
<?php
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
}
print '<td align="left"><input type="hidden" name="land" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="left"><input type="hidden" name="ordernr" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '</tr>';
print '<td align="right"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
print '</fieldset>';
}
?>
foreach ($ritnummers["artikelgegevens"] as $verzamelfoutformulier){
print '<tr>';
print '<form action="artikelgegevens.php" method="POST" enctype=multipart/form-data >';
for($i = 0; $i < $artikels; $i++) {
print $i;
print $i + 1;
}
print '<td align="center"><input type="checkbox" name="check[]" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="center">'.$verzamelfoutformulier->artnr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->artomschr.'</td>';
print '<td align="center">'.$verzamelfoutformulier->geleverd.'</td>';
}
print '<td align="left"><input type="hidden" name="land" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '<td align="left"><input type="hidden" name="ordernr" value="'.$verzamelfoutformulier->artnr.'" /></td>';
print '</tr>';
print '<td align="right"><input type="submit" name ="submit" value="Kies een artikel"></form></td>';
print '</table>';
print '</fieldset>';
}
?>
Maar goed. Wat ik zeg en bedoel is dat je op pagina twee NIET de $_POST["land"] en $_POST["ordernr"] kunt aanroepen omdat die vanaf pagina 1 naar pagina 2 NIET in je formulier staan en dus ook NIET verzonden worden. Dus plaats die erbij in een hidden input zodat je die gegevens hebt.
Of, nog beter en ik geloof dat ik dit nu voor de tiende keer zeg, zorg dat je je webservice aanpast zodat je op artikelnummer gegevens kunt opvragen.
Plaatsen van de $_POST["land"] en $_POST["ordernr"] voor mij niet is duidelijk hoe dat moet.
Ik kan webservice niet aanpassen zodat op basis van artikelnummer gegevens wordt opgevraagd,dat wordt als een ingewikkelde klus gezien want deze wordt voor iets anders gebruikt.
Voor het tweede; dan is die service slecht ontworpen.
Code (php)
1
2
3
2
3
<?php
print '<td align="left"><input type="hidden" name="land" value="'.$verzamelfoutformulier->artnr.'" /></td>';
?>
print '<td align="left"><input type="hidden" name="land" value="'.$verzamelfoutformulier->artnr.'" /></td>';
?>