insert query problemen
Ik moet voor school een php site maken en het vlot écht niet met die insert query's ... Ik ben echt geen held in PHP en zit nu al dagen mijn hoofd hierop te breken!
1: het kan de datum zijn , ik gebruik een postgresql database
2: alles is ingevoerd , ik heb het gecheckt met echo
3: inloggen lukt, dus de database is toegankelijk
De session_start is aangemaakt en hij geeft een DB_unknown error .. wat doe ik toch mis ? Ook geeft hij bij deze pagina na post de items niet terug in zijn labels weer zoals de gebruiker ze heeft ingevoerd.
sorry voor het rommeltopic , ik wil alle informatie maar geven.
mijn site staat op de volgende locatie :
http://508411.webontwerp.khleuven.be/SpeelSite
voorbeeld van een login is : [email protected] pw :Trolol00
alvast bedankt
Pieter
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
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
<?php
$action = isset($_GET['action']) ? $_GET['action'] : 'showrapporteerform';
switch($action)
{
case 'validateRapporteer':
$speeltuig = $_POST["speeltuig"];
$commentaar = $_POST["commentaar"];
if($speeltuig =='0') {$errorsRapporteer[] = "U heeft geen speeltuig geselecteerd"; }
if(empty($commentaar)){ $errorsRapporteer[] = "U heeft geen commentaar ingevuld"; }
$email = $_SESSION['email'];
$datum = date("Y-m-d");
include 'connect.php';
$userid = $db->getOne("select userid from \"508411\".gebruikers where email = '$email'");
$db->query("INSERT INTO \"508411\".meldingen (userid, speeltuigid, datum, info)
VALUES (?,?,?,?)", array($userid,$speeltuig,$datum,$commentaar));
echo "uw rapport is succesvol ontvangen";
default:
case 'showrapporteerform':
$speeltuig = $_POST["speeltuig"];
$commentaar = $_POST["commentaar"];
?>
<table>
<?php
print '<table border=\"1\" table align="center">';
print '<th>Naam</th>';
print '<th>Plaats</th>';
print '<th>Afbeelding</th>';
print '<th>Status</th>';
include 'connect.php';
$speeltuigen = $db->getAll("select naam,afbeelding,plaats,status from \"508411\".speeltuigen");
for ($i=0; $i < count($speeltuigen) ; $i++) {
$naam = $speeltuigen[$i][0]; //naam
$afbeelding = $speeltuigen[$i][1]; //afbeelding
$afbeelding = buildThumb($afbeelding,$naam);
$plaats = $speeltuigen[$i][2]; //plaats
$status = $speeltuigen[$i][3]; //status
print '<tr>';
print '<td>' . $naam . '</td>';
print '<td>' . $plaats . '</td>';
print '<td>' . $afbeelding . '</td>';
$status = str_replace(' ', '', $status); //spaties weg anders werkt het niet ...
switch($status)
{
case 'ok': print '<td style = color:green>' . $status . '</td>'; break;
case 'geraporteerd': print '<td style = color:yellow>' . $status . '</td>';break;
case 'kapot': print '<td style = color:red>' . $status . '</td>';break;
}
print '</tr>';
}
?>
</table>
<?php if(isLoggedIn())
{ ?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=validateRapporteer">
<table>
<tr>
<td>speeltuig: </td>
<td><select type ="input" name ="speeltuig" id="speeltuig" value="<?php echo $speeltuig ?>">
<option value= "0">selecteer</option>
<?php include 'connect.php';
$speeltuigen = $db->getAll("select tuigid,naam from \"508411\".speeltuigen");
for ($i=0; $i < count($speeltuigen) ; $i++)
{
$id = $speeltuigen[$i][0]; //id
$naam = $speeltuigen[$i][1]; //naam
print '<option value = "'.$id.'"> ' . $naam. '</option>';
}
?>
</td>
<tr>
<td>opmerkingen: </td>
<td><textarea type ="input" id="commentaar" name="commentaar" value="<?php echo $commentaar ?>" cols="40" rows="5"></textarea></td>
</tr>
</table>
<input type="submit" class="formbutton" id="Rapporteer" value="Rapporteer">
<input type="reset" class="formbutton" id="Resetrapporteer" value="Reset">
</form>
<errorP><?php showErrors($errorsRapporteer); ?></errorP>
<?php
}
else
{
print "u moet ingelogd zijn om een speeltuig te kunnen rapporteren ";
print "klik ";?> <a href="registreer.php">hier</a>
<?php print "om u te registreren.";
}
break; } //switch ?>
$action = isset($_GET['action']) ? $_GET['action'] : 'showrapporteerform';
switch($action)
{
case 'validateRapporteer':
$speeltuig = $_POST["speeltuig"];
$commentaar = $_POST["commentaar"];
if($speeltuig =='0') {$errorsRapporteer[] = "U heeft geen speeltuig geselecteerd"; }
if(empty($commentaar)){ $errorsRapporteer[] = "U heeft geen commentaar ingevuld"; }
$email = $_SESSION['email'];
$datum = date("Y-m-d");
include 'connect.php';
$userid = $db->getOne("select userid from \"508411\".gebruikers where email = '$email'");
$db->query("INSERT INTO \"508411\".meldingen (userid, speeltuigid, datum, info)
VALUES (?,?,?,?)", array($userid,$speeltuig,$datum,$commentaar));
echo "uw rapport is succesvol ontvangen";
default:
case 'showrapporteerform':
$speeltuig = $_POST["speeltuig"];
$commentaar = $_POST["commentaar"];
?>
<table>
<?php
print '<table border=\"1\" table align="center">';
print '<th>Naam</th>';
print '<th>Plaats</th>';
print '<th>Afbeelding</th>';
print '<th>Status</th>';
include 'connect.php';
$speeltuigen = $db->getAll("select naam,afbeelding,plaats,status from \"508411\".speeltuigen");
for ($i=0; $i < count($speeltuigen) ; $i++) {
$naam = $speeltuigen[$i][0]; //naam
$afbeelding = $speeltuigen[$i][1]; //afbeelding
$afbeelding = buildThumb($afbeelding,$naam);
$plaats = $speeltuigen[$i][2]; //plaats
$status = $speeltuigen[$i][3]; //status
print '<tr>';
print '<td>' . $naam . '</td>';
print '<td>' . $plaats . '</td>';
print '<td>' . $afbeelding . '</td>';
$status = str_replace(' ', '', $status); //spaties weg anders werkt het niet ...
switch($status)
{
case 'ok': print '<td style = color:green>' . $status . '</td>'; break;
case 'geraporteerd': print '<td style = color:yellow>' . $status . '</td>';break;
case 'kapot': print '<td style = color:red>' . $status . '</td>';break;
}
print '</tr>';
}
?>
</table>
<?php if(isLoggedIn())
{ ?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=validateRapporteer">
<table>
<tr>
<td>speeltuig: </td>
<td><select type ="input" name ="speeltuig" id="speeltuig" value="<?php echo $speeltuig ?>">
<option value= "0">selecteer</option>
<?php include 'connect.php';
$speeltuigen = $db->getAll("select tuigid,naam from \"508411\".speeltuigen");
for ($i=0; $i < count($speeltuigen) ; $i++)
{
$id = $speeltuigen[$i][0]; //id
$naam = $speeltuigen[$i][1]; //naam
print '<option value = "'.$id.'"> ' . $naam. '</option>';
}
?>
</td>
<tr>
<td>opmerkingen: </td>
<td><textarea type ="input" id="commentaar" name="commentaar" value="<?php echo $commentaar ?>" cols="40" rows="5"></textarea></td>
</tr>
</table>
<input type="submit" class="formbutton" id="Rapporteer" value="Rapporteer">
<input type="reset" class="formbutton" id="Resetrapporteer" value="Reset">
</form>
<errorP><?php showErrors($errorsRapporteer); ?></errorP>
<?php
}
else
{
print "u moet ingelogd zijn om een speeltuig te kunnen rapporteren ";
print "klik ";?> <a href="registreer.php">hier</a>
<?php print "om u te registreren.";
}
break; } //switch ?>
Hier doe ik het zelfde maar dan bij registreer : ( enkel de query )
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include 'connect.php';
$rank = "gebruiker";
$count = $db->getOne('select count(*) from \"508411\".gebruikers where email = (?)', array($email));
if ($count >= 1) {
$errors[] = 'Emailadres is al geregistreerd!' ;
}
else {
$db->query("INSERT INTO \"508411\".gebruikers (voornaam,achternaam,geboortedatum,straat,gemeente,email,pass)
// VALUES (?,?,?,?,?,?,?)', array($vnaam, $naam, $gebdat, $straat, $gemeente, $email, $pass)");
verstuurmail($email, $naam, $pass);
return true;
} ?>
include 'connect.php';
$rank = "gebruiker";
$count = $db->getOne('select count(*) from \"508411\".gebruikers where email = (?)', array($email));
if ($count >= 1) {
$errors[] = 'Emailadres is al geregistreerd!' ;
}
else {
$db->query("INSERT INTO \"508411\".gebruikers (voornaam,achternaam,geboortedatum,straat,gemeente,email,pass)
// VALUES (?,?,?,?,?,?,?)', array($vnaam, $naam, $gebdat, $straat, $gemeente, $email, $pass)");
verstuurmail($email, $naam, $pass);
return true;
} ?>
Gewijzigd op 25/07/2010 16:29:57 door Pieter Hens
Code (php)
1
2
2
"INSERT INTO \"508411\".gebruikers (voornaam,achternaam,geboortedatum,straat,gemeente,email,pass)
VALUES ("'.$vnaam."', "'.$naam."', "'.$gebdat."', "'.$straat."', "'.$gemeente."', "'.$email."', "'.$pass."')"
VALUES ("'.$vnaam."', "'.$naam."', "'.$gebdat."', "'.$straat."', "'.$gemeente."', "'.$email."', "'.$pass."')"
Wat betekend dit trouwens: "508411".gebruikers Ik word niet wijs uit het "508411". Hoe zit dit? Kun je dit uitleggen?
508411 is de naam van mijn database volgens mijn studentennummer. de \" wijst naar een " dat getoond moet worden in de query zelf. Getter query's werken , maar insert query's falen.
Kheb de query een beetje moeten vervormen en heb hem geprobeerd zoals je voorstelde zonder de array, zonder succes. Eerst kreeg in encapsulation errors , die heb ik opgelost en dan kreeg ik DB unknown errors.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
mijn gebruikers database btw :
userid integer NOT NULL DEFAULT nextval('usersseq'::regclass),
voornaam character(40) NOT NULL,
achternaam character(40) NOT NULL,
geboortedatum date NOT NULL,
straat character(100) NOT NULL,
gemeente character(40) NOT NULL,
email character(40) NOT NULL,
pass character(40) NOT NULL,
rank character(40) NOT NULL DEFAULT 'user'::bpchar,
CONSTRAINT users_pkey PRIMARY KEY (userid)
userid integer NOT NULL DEFAULT nextval('usersseq'::regclass),
voornaam character(40) NOT NULL,
achternaam character(40) NOT NULL,
geboortedatum date NOT NULL,
straat character(100) NOT NULL,
gemeente character(40) NOT NULL,
email character(40) NOT NULL,
pass character(40) NOT NULL,
rank character(40) NOT NULL DEFAULT 'user'::bpchar,
CONSTRAINT users_pkey PRIMARY KEY (userid)
Gewijzigd op 26/07/2010 18:22:38 door Pieter Hens
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
"INSERT INTO \"508411\".gebruikers
(voornaam, achternaam, geboortedatum, straat, gemeente, email, pass)
VALUES
('".$vnaam."', '".$naam."', '".$gebdat."', '".$straat."', '".$gemeente."', '".$email."', '".$pass."')"
?>
"INSERT INTO \"508411\".gebruikers
(voornaam, achternaam, geboortedatum, straat, gemeente, email, pass)
VALUES
('".$vnaam."', '".$naam."', '".$gebdat."', '".$straat."', '".$gemeente."', '".$email."', '".$pass."')"
?>
ik zie in jouw insert query opeens een apostrof (') uit het niets komen, een array etc. etc. Nog nooit gezien. Mij lijkt dat bovenstaande INSERT-SQL moet werken.
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
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
<?php
$gebdat = date("Y-m-d", strftime($gebdat));
//hoofdletters
$naam = ucfirst($naam);
$vnaam = ucfirst($vnaam);
$gemeente = ucfirst($gemeente);
$email = strtolower($email);
if(testWachtwoord($pass))
{
if(!count($errorsReg))
{
include'connect.php';
$db->query("INSERT INTO \"508411\".gebruikers
(voornaam, achternaam, geboortedatum, straat, gemeente, email, pass)
VALUES('".$vnaam."', '".$naam."', '".$gebdat."', '".$straat."', '".$gemeente."', '".$email."', '".$pass."')");
}
}
else
{
$errorsReg[] = "Uw wachtwoord voldoet niet aan de vereisten ";
$errorsReg[] = "Het wachtwoord moet minimaal 6 karakters lang zijn";
$errorsReg[] = "Het wachtwoord moet een hoofdletter en een cijfer bevatten";
}
?>
$gebdat = date("Y-m-d", strftime($gebdat));
//hoofdletters
$naam = ucfirst($naam);
$vnaam = ucfirst($vnaam);
$gemeente = ucfirst($gemeente);
$email = strtolower($email);
if(testWachtwoord($pass))
{
if(!count($errorsReg))
{
include'connect.php';
$db->query("INSERT INTO \"508411\".gebruikers
(voornaam, achternaam, geboortedatum, straat, gemeente, email, pass)
VALUES('".$vnaam."', '".$naam."', '".$gebdat."', '".$straat."', '".$gemeente."', '".$email."', '".$pass."')");
}
}
else
{
$errorsReg[] = "Uw wachtwoord voldoet niet aan de vereisten ";
$errorsReg[] = "Het wachtwoord moet minimaal 6 karakters lang zijn";
$errorsReg[] = "Het wachtwoord moet een hoofdletter en een cijfer bevatten";
}
?>
Gewijzigd op 27/07/2010 17:21:43 door Joren de Wit
Code (php)
1
INSERT INTO "508411".gebruikers(voornaam, achternaam, geboortedatum, straat, gemeente, email, pass,rank) VALUES('lol', 'lol', '1970-01-01', 'lol', 'lol', '[email protected]', 'Test00', 'gebruiker')DB Error: syntax error
Het is de datum op een of andere manier. Khad een andere datum ingegeven en hij geeft nu de "start date" van php.
die quotes zijn om een string te maken van de databasenaam ipv een integer. Moest mijn database nu " lol " noemen zou het gewoon lol.gebruikers(...) zijn
vreemd genoeg werkt dit via de query in pgadmin, enkel via php werkt dit helemaal niet :\ inloggen gaat wel perfect maar vanaf insert gaat het mis. Heb de rechten nagekeken en ze lijken mij wel in orde te zijn. Tzit hem ergens in de date
Gewijzigd op 27/07/2010 19:02:41 door Pieter Hens
Als je gewoon iets ingeeft bij gebruikersnaam (bijvoorbeeld een spatie) en niks bij het wachtwoord ingeeft ben je ook al ingelogd. /fail
Peter aka Lekensteyn op 27/07/2010 18:27:28:
Als je gewoon iets ingeeft bij gebruikersnaam (bijvoorbeeld een spatie) en niks bij het wachtwoord ingeeft ben je ook al ingelogd. /fail
Een beginner maakt al wel eens fouten zeker? 'T is mijn eerste php site en ik ben er nog volop aan bezig, mijn excuses dat sommige fouten er nog niet uit zijn....
Gewijzigd op 27/07/2010 18:43:40 door Pieter Hens