probleem met offset
als ik mijn formulier verstuur krijg ik de volgende foutmelding wat doe ik hier verkeerd?
Notice: Undefined offset: 2 in C:\Program Files\EasyPHP 2.0b1\www\gallery\error.php on line 90
Error on the gallery site.
Problem: Invalid argument supplied for foreach()
Time: 14/06/07 15:24
WARNING on line 119 in C:\Program Files\EasyPHP 2.0b1\www\gallery\betaling.php.
Error: "Invalid argument supplied for foreach()" (error #2).
Backtrace:
Variables in ():
GLOBALS is Array
_POST is Array
_GET is NULL
_COOKIE is Array
_FILES is NULL
_SESSION is NULL
_SERVER is Array
dbConfig is lokaal
server is localhost
user is root
password is NULL
database is foto_galerij
dbConnection is Resource id #7
dbSelection is 1
message is NULL
validated is 1
Browser: Windows, MSIE version 6.0\nIP: 127.0.0.1
Host: localhost
Server name: 127.0.0.1
Server software: Apache/2.2.3 (Win32) PHP/5.2.0
URL: /gallery/betaling.php
Header: */*
Referer: http://127.0.0.1/gallery/betaalform.php
SQL says:
Query string:
dit is de code van de betaling.php
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
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
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
[php]
<?php
require_once('init.php');
$message = "";
//check payment
if(isset($_POST['send'])){
//
$validated = true;
if($_POST['Naam'] == ""){
$message .="<p> Je naam moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Achternaam']== ""){
$message .="<p> Je Achternaam moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Adres']== ""){
$message .="<p> Je Adres moet ingevuld zijn</p>";
$validated = false;
}
if(strlen($_POST["Postcode"])!=4 || !is_whole_number($_POST["Postcode"])){
$message[] = "Postcode is verplicht en moet uit 4 cijfers bestaan.";
$validated = false;
}
if($_POST['Plaats']== ""){
$message .="<p> Je Woonplaats moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Artikel']== ""){
$message .="<p> Het Artikel moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Prijs']== ""){
$message .="<p> De Prijs moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Paymethod']== ""){
$message .="<p> De betaalwijze moet ingevuld zijn</p>";
$validated = false;
if($_POST['email']== ""){
$message .="<p> Het emailadres moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['orderid']== ""){
$message .="<p> Het orderid moet ingevuld zijn</p>";
$validated = false;
}
if (strlen('Shasign') < 40) {
$message .= "<p>De incryptiecode moet minimaal 40 tekens lang zijn. ";
$validated = false;
}
//de gebruikersgegevens lezen
$Naam = $_POST['Naam'];
$Achternaam = $_POST['Achternaam'];
$Adres = $_POST['Adres'];
$Postcode = $_POST['Postcode'];
$Plaats = $_POST['Plaats'];
$Artikel = $_POST['Artikel'];
$Prijs = $_POST['Prijs'];
$Paymethod = $_POST['Paymethod'];
$Currency = $_POST['Currency'];
$ShaSign = $_POST['Shasign'];
$orderid = $_POST['orderid'];
$emailadres = $_POST['email'];
$emailadres = strip_tags($emailadres);
$emailadres = trim($emailadres);
//vaste waarden
$Currency ="EUR";
$PSPID ="paulecommercest";
$pswd ="hash";
$ShaSign = sha1($orderid,$Prijs,$Currency,$PSPID,$pswd);
if($validated){
$query = "SELECT orderid" .
"FROM payments" .
"WHERE orderid ='".mysql_real_escape_string($orderid)."'";
$query1 ="INSERT INTO payments (orderid,
Naam,
Achternaam,
Adres,
Postcode,
Plaats,
Artikel,
Prijs,
Currency,
Paymethode,
email,
Shasign
)
VALUES( '".$orderid."',
'".$Naam."',
'".$Achternaam."',
'".$Adres."',
'".$Postcode."',
'".$Plaats."',
'".$Artikel."',
'".$Prijs."',
'".$Currency."',
'".$Paymethod."',
'".$email."',
'".$Shasign."',
)";
include_once("mysql_connect_inc.php");
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die (mysql_error());
mysql_select_db("foto_galerij")or die (mysql_error());
//uitvoeren
mysql_query($query1) or die ("insert sql error: ".mysql_error());
}
}
if(count($message)>0){
print "<ul>";
foreach($message as $messages){
print "<li>$messages</li>";
}
print "</ul>";
} else {
print "<h2>Order Bevestiging {$_POST["Naam"]}.{$_POST["Achternaam"]}</h2>";
print "<h3>Persoonsgegevens</h3>";
print " <p>
Naam: {$_POST["Naam"]}{$_POST["Achternaam"]}<br />
Adres: {$_POST["Adres"]}
Postcode:{$_POST["Postcode"]}
Woonplaats:{$_POST["Plaats"]}
Email:{$_POST["email"]}
</p>
";
print "<td>";
print "<h3>OrderDetails</h3>";
print " <p>
uw bijdrage is {$_POST["bijdrage"]} en u betaald met {$_POST["betaling"]}<br />
</p>
";
print "</td>";
}
}
?>
[/php]
<?php
require_once('init.php');
$message = "";
//check payment
if(isset($_POST['send'])){
//
$validated = true;
if($_POST['Naam'] == ""){
$message .="<p> Je naam moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Achternaam']== ""){
$message .="<p> Je Achternaam moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Adres']== ""){
$message .="<p> Je Adres moet ingevuld zijn</p>";
$validated = false;
}
if(strlen($_POST["Postcode"])!=4 || !is_whole_number($_POST["Postcode"])){
$message[] = "Postcode is verplicht en moet uit 4 cijfers bestaan.";
$validated = false;
}
if($_POST['Plaats']== ""){
$message .="<p> Je Woonplaats moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Artikel']== ""){
$message .="<p> Het Artikel moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Prijs']== ""){
$message .="<p> De Prijs moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['Paymethod']== ""){
$message .="<p> De betaalwijze moet ingevuld zijn</p>";
$validated = false;
if($_POST['email']== ""){
$message .="<p> Het emailadres moet ingevuld zijn</p>";
$validated = false;
}
if($_POST['orderid']== ""){
$message .="<p> Het orderid moet ingevuld zijn</p>";
$validated = false;
}
if (strlen('Shasign') < 40) {
$message .= "<p>De incryptiecode moet minimaal 40 tekens lang zijn. ";
$validated = false;
}
//de gebruikersgegevens lezen
$Naam = $_POST['Naam'];
$Achternaam = $_POST['Achternaam'];
$Adres = $_POST['Adres'];
$Postcode = $_POST['Postcode'];
$Plaats = $_POST['Plaats'];
$Artikel = $_POST['Artikel'];
$Prijs = $_POST['Prijs'];
$Paymethod = $_POST['Paymethod'];
$Currency = $_POST['Currency'];
$ShaSign = $_POST['Shasign'];
$orderid = $_POST['orderid'];
$emailadres = $_POST['email'];
$emailadres = strip_tags($emailadres);
$emailadres = trim($emailadres);
//vaste waarden
$Currency ="EUR";
$PSPID ="paulecommercest";
$pswd ="hash";
$ShaSign = sha1($orderid,$Prijs,$Currency,$PSPID,$pswd);
if($validated){
$query = "SELECT orderid" .
"FROM payments" .
"WHERE orderid ='".mysql_real_escape_string($orderid)."'";
$query1 ="INSERT INTO payments (orderid,
Naam,
Achternaam,
Adres,
Postcode,
Plaats,
Artikel,
Prijs,
Currency,
Paymethode,
email,
Shasign
)
VALUES( '".$orderid."',
'".$Naam."',
'".$Achternaam."',
'".$Adres."',
'".$Postcode."',
'".$Plaats."',
'".$Artikel."',
'".$Prijs."',
'".$Currency."',
'".$Paymethod."',
'".$email."',
'".$Shasign."',
)";
include_once("mysql_connect_inc.php");
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die (mysql_error());
mysql_select_db("foto_galerij")or die (mysql_error());
//uitvoeren
mysql_query($query1) or die ("insert sql error: ".mysql_error());
}
}
if(count($message)>0){
print "<ul>";
foreach($message as $messages){
print "<li>$messages</li>";
}
print "</ul>";
} else {
print "<h2>Order Bevestiging {$_POST["Naam"]}.{$_POST["Achternaam"]}</h2>";
print "<h3>Persoonsgegevens</h3>";
print " <p>
Naam: {$_POST["Naam"]}{$_POST["Achternaam"]}<br />
Adres: {$_POST["Adres"]}
Postcode:{$_POST["Postcode"]}
Woonplaats:{$_POST["Plaats"]}
Email:{$_POST["email"]}
</p>
";
print "<td>";
print "<h3>OrderDetails</h3>";
print " <p>
uw bijdrage is {$_POST["bijdrage"]} en u betaald met {$_POST["betaling"]}<br />
</p>
";
print "</td>";
}
}
?>
[/php]
alvast bedankt voor jullie hulp
Gewijzigd op 01/01/1970 01:00:00 door Paul prive
$message is geen array, foreach loopt door een array heen en doet iets met elke key van de array. Jou geval is $message gewoon een string.
goed dit probleem heb ik opgelost, ik krijg nu in de betaling.php mijn boodschap maar ik krijg niks in mijn database? wat doe ik verkeerd?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
if($validated){
$query = "SELECT orderid" .
"FROM payments" .
"WHERE orderid ='".mysql_real_escape_string($orderid)."'";
$query1 = ...
?>
if($validated){
$query = "SELECT orderid" .
"FROM payments" .
"WHERE orderid ='".mysql_real_escape_string($orderid)."'";
$query1 = ...
?>
$query staat hier voor Jan-met-de-korte-achternaam, deze wordt niet uitgevoerd.
Verder kan het nog zijn dat $validated FALSE is, dan wordt er helemaal nooit iets uitgevoerd. Er ontbreekt een 'else' in jouw code (althans in bovenstaande code) die een melding geeft over de status van $validated.
Zie de tutorials en dan vooral Debuggen
Gewijzigd op 01/01/1970 01:00:00 door Frank -
insert sql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 27
hoe kan ik dit oplossen?
alvast bedankt voor de hulp
Ik zie het al:
die , (komma) hoort daar niet te staan, het is het laatste argument.
je sloeg de spijker op de bekende kop heel erg bedankt voor je hulp
je hebt een gelukkig mens van me gemaakt :-))