Data toevoegen in database
Bij voorbaat dank!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if ($_POST['submit']){
$categorie=strip_tags($_POST['categorie']);
$naam=strip_tags($_POST['naam']);
$foto=strip_tags($_POST['foto']);
$beschrijving=strip_tags($_POST['beschrijving']);
$prijs=strip_tags($_POST['prijs']);
mysql_query("INSERT INTO `levens` ( `id` , `categorie` , `foto` , `naam` , `beschrijving` , `prijs` )
VALUES ('', '$categorie', '$foto', '$naam', '$beschrijving', '$prijs')");
echo "Update has been added";
}
?>
if ($_POST['submit']){
$categorie=strip_tags($_POST['categorie']);
$naam=strip_tags($_POST['naam']);
$foto=strip_tags($_POST['foto']);
$beschrijving=strip_tags($_POST['beschrijving']);
$prijs=strip_tags($_POST['prijs']);
mysql_query("INSERT INTO `levens` ( `id` , `categorie` , `foto` , `naam` , `beschrijving` , `prijs` )
VALUES ('', '$categorie', '$foto', '$naam', '$beschrijving', '$prijs')");
echo "Update has been added";
}
?>
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
<form method="post" action="levens.php">
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#669900" colspan="3"><div align="center"><strong>LEVEN TOEVOEGEN </strong></div></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Categorie</strong></div></td>
<td bgcolor="#99CC00"><select name="categorie" id="categorie">
<option value="Acteurs">Acteurs/Actrices</option>
<option value="Politici">Politici</option>
<option value="Popstars">Popstars</option>
<option value="Topsporters">Topsporters</option>
<option value="Zwervers">Zwervers</option>
</select></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Naam</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="naam" id="naam"/></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00" valign="top"><div align="left"><strong>Foto</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="foto" id="foto"/>
<br />
(Vb: http://www.url.com/image.jpg) </td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00" valign="top"><div align="left"><strong>Beschrijving</strong></div></td>
<td bgcolor="#99CC00"><textarea name="beschrijving" cols="30" name="beschrijving"></textarea></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Prijs</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="prijs" />
(zonder $-teken) </td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"></div></td>
<td bgcolor="#99CC00">
<div align="left">
<input type="submit" name="submit" value="Toevoegen" /><input type="Reset" value="Herstel">
</div></td>
</tr>
</table></form>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#669900" colspan="3"><div align="center"><strong>LEVEN TOEVOEGEN </strong></div></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Categorie</strong></div></td>
<td bgcolor="#99CC00"><select name="categorie" id="categorie">
<option value="Acteurs">Acteurs/Actrices</option>
<option value="Politici">Politici</option>
<option value="Popstars">Popstars</option>
<option value="Topsporters">Topsporters</option>
<option value="Zwervers">Zwervers</option>
</select></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Naam</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="naam" id="naam"/></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00" valign="top"><div align="left"><strong>Foto</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="foto" id="foto"/>
<br />
(Vb: http://www.url.com/image.jpg) </td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00" valign="top"><div align="left"><strong>Beschrijving</strong></div></td>
<td bgcolor="#99CC00"><textarea name="beschrijving" cols="30" name="beschrijving"></textarea></td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"><strong>Prijs</strong></div></td>
<td bgcolor="#99CC00"><input type="text" name="prijs" />
(zonder $-teken) </td>
</tr>
<tr>
<td bgcolor="#99CC00"> </td>
<td bgcolor="#99CC00"><div align="left"></div></td>
<td bgcolor="#99CC00">
<div align="left">
<input type="submit" name="submit" value="Toevoegen" /><input type="Reset" value="Herstel">
</div></td>
</tr>
</table></form>
En gebruik nooit backticks in je query, krijg je alleen maar problemen van. En haal variabelen uit de string met puntjes, in plaats van ze gewoon in de string te zetten.
Ik krijg geen foutmelding de echo wordt gewoon uitgevoerd, maar de data komt niet in de database
Wat zegt mysql_error()?
Zoals je aan de code kleuren kan zien doe je iets fout.
Denk om de volgende dingen.
- Sql Injection (mysql_real_escape_string)
- Gebruik if($_SERVER['REQUEST_METHOD'] == 'POST') { inplaats van if ($_POST['submit']){
- Waar is jouw fouten afhandeling?
Ik zal eens een opzetje voor je maken.
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
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
<?PHP
/* errors. */
error_reporting(E_ALL);
/* Kijken of er iets wordt gepost. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Veld controle. */
if(isset($_POST['Veld']) && $_POST['Veld'] != '')
{
/* Veld is niet leeg Variable aanmaken. */
$Veld = $_POST['Veld'];
}
else
{
/* Veld is niet ingevuld. */
echo 'U heeft het veld "Veld" niet ingevuld.';
}
/* Query uitvoeren. */
$aQuery =
"
INSERT INTO
tabel
(
Veld
)
VALUES
(
Veld = '".mysql_real_escape_string($Veld)."'
)
";
/* Resultaat van de query. */
$aResultaat = mysql_query($aQuery);
/* Kijken of de query is gelukt. */
if(!$aResultaat)
{
/* Query is niet gelukt. */
echo 'Er is een fout met de query. Query: '.$aQuery.'';
}
else
{
/* Query is succesvol gelukt. */
echo 'Query is succesvol gelukt.';
}
}
?>
/* errors. */
error_reporting(E_ALL);
/* Kijken of er iets wordt gepost. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Veld controle. */
if(isset($_POST['Veld']) && $_POST['Veld'] != '')
{
/* Veld is niet leeg Variable aanmaken. */
$Veld = $_POST['Veld'];
}
else
{
/* Veld is niet ingevuld. */
echo 'U heeft het veld "Veld" niet ingevuld.';
}
/* Query uitvoeren. */
$aQuery =
"
INSERT INTO
tabel
(
Veld
)
VALUES
(
Veld = '".mysql_real_escape_string($Veld)."'
)
";
/* Resultaat van de query. */
$aResultaat = mysql_query($aQuery);
/* Kijken of de query is gelukt. */
if(!$aResultaat)
{
/* Query is niet gelukt. */
echo 'Er is een fout met de query. Query: '.$aQuery.'';
}
else
{
/* Query is succesvol gelukt. */
echo 'Query is succesvol gelukt.';
}
}
?>
Nu mag jij het verder afmaken.
En als je de mysql_error() echot? ;-)
Bedankt voor je opzet, de site waar ik mee bezig ben is heel simpel omdat het maar voor een klein project is op mijn school (al geef je me wel goeie tips voor als ik het serieus wil aanpakken)
@ Douwe
ook bedankt voor je hulp alvast, ik heb zojuist geprobeerd het in een echo te zetten, maar krijg nog steeds niks door, heb ook de variabelen uit de strings gehaalt en de backticks
En wat is de source die je nu hebt?
Ga maar verder met mijn voorbeeld in te vullen. Je zal geheid een onvoldoende krijgen als je met jouw code op school aankomt. Tenzij je leraar ook niet slim is. Heb vaker gehoord dat ze op scholen PHP4 aan leerlingen leren.
/* Edit */
Quote:
Ook voor kleine projectjes is goede scripting belangrijk ;-)
That's the spirit ! ^-^
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Die man kan er zelf helemaal niks van ik vroeg aan hem wat er fout was en hij liep gelijk weg, helaas maar waar
@ Douwe
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
if ($_POST['submit']){
$categorie=strip_tags($_POST['categorie']);
$naam=strip_tags($_POST['naam']);
$foto=strip_tags($_POST['foto']);
$beschrijving=strip_tags($_POST['beschrijving']);
$prijs=strip_tags($_POST['prijs']);
echo mysql_error();
mysql_query("INSERT INTO 'levens' ( 'id' , 'categorie' , 'foto' , 'naam' , 'beschrijving' , 'prijs' )
VALUES ('', $categorie, $foto, $naam, $beschrijving, $prijs)");
echo "Update has been added";
}
?>
if ($_POST['submit']){
$categorie=strip_tags($_POST['categorie']);
$naam=strip_tags($_POST['naam']);
$foto=strip_tags($_POST['foto']);
$beschrijving=strip_tags($_POST['beschrijving']);
$prijs=strip_tags($_POST['prijs']);
echo mysql_error();
mysql_query("INSERT INTO 'levens' ( 'id' , 'categorie' , 'foto' , 'naam' , 'beschrijving' , 'prijs' )
VALUES ('', $categorie, $foto, $naam, $beschrijving, $prijs)");
echo "Update has been added";
}
?>
En je variabelen zitten nog steeds in je string? Ik zie sowieso al waar het probleem ligt, maar dat zie je zo met de mysql_error() ook wel ;-)
Een string hoort tussen quotes te staan, dat is een heel ander verhaal. En haal je variabelen buiten quotes, de PHP lijkt helemaal nergens op.
En foutafhandeling doe je ná het uitvoeren van de query en niet vóór het uitvoeren van de query. Vooraf gaat er niks fout...
Tip: Gooi die zooi weg en ga verder met het voorbeeld van Ark. Dat is al minstens 100x beter.
Quote:
Die man kan er zelf helemaal niks van ik vroeg aan hem wat er fout was en hij liep gelijk weg, helaas maar waar
Tja, Dat het zo gaat hier in nederland, Te erg voor woorden.
Graag wil ik je hier op wijzen: http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php
Neem nou maar van ons aan dat je het goed moet doen.
@ Douwe
Je gaat me nu niet vertellen dat je Yannick gaat uitleggen hoe die slechte code aan het werk moet krijgen?
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Je gebruikt de variabele $aQuery, maar de data is niet de query (een query is namelijk de string met 'opdrachten'), maar een resource, en al helemaal geen array...
Gewijzigd op 01/01/1970 01:00:00 door Douwe
Unknown column 'Acteurs' in 'field list'
ark;
Het spijt me (A)
Dat is dom, heel erg dom. In dit kleine scriptje kun je nog zien dat $Veld een volkomen onbetrouwbaar gegeven is uit een post-formulier, maar zodra het script ook maar iets uitgebreider wordt, vergeet je dit. En voor je het weet, slinger je een variabele zonder enige beveiliging de database is... SQL injection is dan een feit.
Toch al jammer dat er niet met prepared statements wordt gewerkt, MySQLi ondersteunt dit, dat zou de boel een stuk veiliger en bruikbaarder maken.
$aQuery is voor mij een bijzondere naam, er is geen array te bekennen. De a kan ik dan ook even niet plaatsen.
Hoe kom je in godsnaam bij een array?
Je mag gerust dat voorbeeld eens proberen hoor. Je zal er versteld van staan hoe goed hij werkt.
Iedereen heeft z'n eigen manier, En als mijn manier ietsjes anders is dan die van jouw maar toch veilig is, Dan is er toch niks aan de hand?
/* Edit */
@ pgFrank
Je kan $aQuery ook zien als $1Query, Ik ben gewend om $aQuery te typen, Je zou ook gewoon $Query kunnen doen.
Ontopic:
Ik laat dit over aan pgFrank, Yannick ik zou het advies maar onthouden wat frank verteld, Je zult er veel van opsteken.
/* Edit (2) */
Quote:
ark; Het spijt me
Geen probleem :-), Menings verschillen kunnen voorkomen & Discuseren moet kunnen toch.
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Bedankt Frank voor je commentaar al gaat het me petje toch echt wat te boven
Ik gebruik de eerste letter van een variabele altijd om aan te geven welk datatype het is. 'a' is dan een array, 's' een string, 'i' een integer, etc. 'r' is een resource, wat mysql_query() teruggeeft.