Select option update
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
$query = "
SELECT DISTINCT productnaam
FROM producten
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
else {
echo '<select name="productnaam">';
while ($row = mysql_fetch_assoc ($res)) {
// check ook of $_POST['productnaam'] werkelijk bestaat!
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo PHP_EOL;
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
echo '</select>';
}
?>
$query = "
SELECT DISTINCT productnaam
FROM producten
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
else {
echo '<select name="productnaam">';
while ($row = mysql_fetch_assoc ($res)) {
// check ook of $_POST['productnaam'] werkelijk bestaat!
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo PHP_EOL;
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
echo '</select>';
}
?>
Vorige code stonden 2 selects in was foutje!
Gewijzigd op 01/01/1970 01:00:00 door chris
probeer het eens zonder PHP_EOL
Notice: Query was empty in /customers/2fresh.nl/2fresh.nl/httpd.www/index.php on line 43
Code (php)
1
2
3
4
2
3
4
<?
$query3 = "INSERT INTO `prijzen` ( `id` , `stad` , `datum` , `productsoort` , `producttype` , `kiloprijs` , `herkomst` )
VALUES (NULL ,'$_POST[stad]', '$_POST[datum]', '$_POST[productnaam]', '$_POST[producttype]', '$_POST[prijs]', '$_POST[herkomst]')";
?>
$query3 = "INSERT INTO `prijzen` ( `id` , `stad` , `datum` , `productsoort` , `producttype` , `kiloprijs` , `herkomst` )
VALUES (NULL ,'$_POST[stad]', '$_POST[datum]', '$_POST[productnaam]', '$_POST[producttype]', '$_POST[prijs]', '$_POST[herkomst]')";
?>
1) Gebruik nooit, maar dan ook helemaal nooit, backtics ` in je queries. Die zorgen uiteindelijk voor (ernstige) bugs en dat wil je niet.
2) Jouw datum is geen datum, dat controleer je nergens, dat gaat dus hopeloos fout. Een datum sla je op in een DATE in het formaat yyyy-mm-dd. Andere formaten zijn fout.
3) MySQL controleert zelden een datum, dat zul je dus in PHP moeten controleren. checkdate() is je beste vriend
4) User-input, bv. COOKIE, GET en POST, mag nooit onbeveiligd in een query staan, gebruik bv. mysql_real_escape_string() om de boel te beveiligen.
5) Variabelen buiten quotes
6) Een index is geen constante maar een string en hoort dus tussen quoten te staan.
7) Overzichtelijk scripten scheelt bugs
8) Is de prijs wel een prijs? Dat controleer je nergens, prijzen sla je op met decimalen, dus met een punt en niet met een komma. Dat controleer je nergens.
Beginnetje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query3 = "
INSERT INTO
prijzen (
stad,
datum,
productsoort ,
producttype,
kiloprijs,
herkomst
)
VALUES (
'".mysql_real_escape_string($_POST['stad'])."',
'".$datum."',
'".mysql_real_escape_string($_POST['productnaam']."',
'".mysql_real_escape_string($_POST['producttype'])."',
'".mysql_real_escape_string($_POST['prijs']."',
'".mysql_real_escape_string($_POST['herkomst']."'
)";
?>
$query3 = "
INSERT INTO
prijzen (
stad,
datum,
productsoort ,
producttype,
kiloprijs,
herkomst
)
VALUES (
'".mysql_real_escape_string($_POST['stad'])."',
'".$datum."',
'".mysql_real_escape_string($_POST['productnaam']."',
'".mysql_real_escape_string($_POST['producttype'])."',
'".mysql_real_escape_string($_POST['prijs']."',
'".mysql_real_escape_string($_POST['herkomst']."'
)";
?>
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query = "
SELECT DISTINCT productnaam
FROM producten
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
SELECT DISTINCT productnaam
FROM producten
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
Dat gaat niet werken zoek zelf maar uit waarom ;)
Hint:
Variabelenamen
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Tnx for the help!!
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<select name="productnaam">
<?php
$query = mysql_query("SELECT DISTINCT productnaam FROM producten")
or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
?>
</select>
<?php
$query = mysql_query("SELECT DISTINCT productnaam FROM producten")
or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
?>
</select>
Gewijzigd op 01/01/1970 01:00:00 door Jelle Posthuma
Overigens is het slimmer om de query eerst in een variabele te zetten en deze variabele in mysql_query() te gebruiken. Op die manier kun je bij een foutmelding ook altijd de query echoën.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<select name="productnaam">
<?php
$query = "SELECT DISTINCT productnaam FROM producten";
$result= mysql_query($query)
or die(mysql_error().'<br><br>'.$query);
while ($row = mysql_fetch_assoc($result)) {
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
?>
</select>
<?php
$query = "SELECT DISTINCT productnaam FROM producten";
$result= mysql_query($query)
or die(mysql_error().'<br><br>'.$query);
while ($row = mysql_fetch_assoc($result)) {
$selected = ($row["productnaam"]==$_POST["productnaam"])?(' selected="selected"'):('');
echo '<option' . $selected . ' value="' . $row['productnaam'] . '">' . $row['productnaam'] . '</option>';
}
?>
</select>
Wat modificaties verricht op basis van de tips van Blanche.