een selectiebox maken met SQL data?
<form action="new_message.php" method="post">
<p>
<input type="text" size="100" name="content" value="">
<select name="category">
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql = "SELECT * FROM categorys ";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs)){
echo "<OPTION VALUE=".$row['menu_name'].">".$row['menu_name']."</OPTION>";
}
?>
$sql = "SELECT * FROM categorys ";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs)){
echo "<OPTION VALUE=".$row['menu_name'].">".$row['menu_name']."</OPTION>";
}
?>
</select>
<input type="submit" value="Submit" name="submit"/></p>
</form>
</div></code>
Mijn sql database is als volgt:
Tabelnaam: categorys
rij1: id
rij2: menu_name
ik heb geen foutmeldingen, maar het selectie venster komt terug zonder data. kan iemand mij in de juiste richting sturen?
Gewijzigd op 07/08/2010 13:18:22 door Dave L
Wat wil je precies doen dan?
ik wil een categorie selectie hebben op het inzendingsformulier. In de database zitten nu enkele categorien (bv love, hate, wisdom, freedom)... deze zouden in de selectiebox moeten komen.. maar ergens zit blijkbaar een foutje
is ook niet conform de html regeltjes
en dan zal ik niet de menu_name als value gebruiken maar het id
Gewijzigd op 07/08/2010 13:48:59 door Noppes Homeland
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
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
<?php
include 'includes/DB_connect.php';
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if (!$rs){die("Database query failed: " . mysql_error());}
echo "<div id=\"form\">";
echo "<form action=\"new_message.php\" method=\"post\">";
echo " <p>";
echo "<input type=\"text\" size=\"100\" name=\"content\" value=\"\">";
echo " <select name=\"category\">";
while($row = mysql_fetch_array($rs)){
echo '<option';
if($row['menu_name'] == " selected"){//hier iets anders?!
// is geselecteerd
echo ' selected= \"selected\"';
}else{
//niet geselecteerd
echo 'value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
}
echo " </select>";
echo "<input type=\"submit\" value=\"Submit your favorite quote\" name=\"submit\"/></p>";
echo "</form>";
echo "</div>";
?>
het gedeelte == selected... daar zou ik een andere vergelijking moeten maken omdat ik nu een vergelijking maak met een string, dit zal al zeker iets anders moeten zijn (volgens mijn prille php kennis) maar wat?
Gewijzigd op 07/08/2010 17:11:08 door Dave L
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Config includen
include("includes/DB_connect.php");
// Gegevens ophalen
$sql = mysql_query("SELECT id, menu_name FROM categories");
if ($sql) {
// Alles ging goed, laat het formulier zien
echo '<div id="form">
<form method="post" action="new_message.php"><p>
<input type="text" name="content" /><br />
<select name="category">';
while ($categorie = mysql_fetch_assoc($sql)) {
echo '<option value="'.$categorie['id'].'">'.$categorie['menu_name'].'</option>';
}
echo '</select><br />
<input type="submit" value="Submit your favorite quote" />
</p>
</form>
</div>';
} else {
// Er ging iets fout met de query, geef een fout. - BELANGRIJK: GEBRUIK NOOIT MYSQL_ERROR()!
echo 'Error';
}
?>
// Config includen
include("includes/DB_connect.php");
// Gegevens ophalen
$sql = mysql_query("SELECT id, menu_name FROM categories");
if ($sql) {
// Alles ging goed, laat het formulier zien
echo '<div id="form">
<form method="post" action="new_message.php"><p>
<input type="text" name="content" /><br />
<select name="category">';
while ($categorie = mysql_fetch_assoc($sql)) {
echo '<option value="'.$categorie['id'].'">'.$categorie['menu_name'].'</option>';
}
echo '</select><br />
<input type="submit" value="Submit your favorite quote" />
</p>
</form>
</div>';
} else {
// Er ging iets fout met de query, geef een fout. - BELANGRIJK: GEBRUIK NOOIT MYSQL_ERROR()!
echo 'Error';
}
?>
Roel van de Water op 07/08/2010 20:01:58:
Persoonlijk doe ik het liever zo:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Config includen
include("includes/DB_connect.php");
// Gegevens ophalen
$sql = mysql_query("SELECT id, menu_name FROM categories");
if ($sql) {
// Alles ging goed, laat het formulier zien
echo '<div id="form">
<form method="post" action="new_message.php"><p>
<input type="text" name="content" /><br />
<select name="category">';
while ($categorie = mysql_fetch_assoc($sql)) {
echo '<option value="'.$categorie['id'].'">'.$categorie['menu_name'].'</option>';
}
echo '</select><br />
<input type="submit" value="Submit your favorite quote" />
</p>
</form>
</div>';
} else {
// Er ging iets fout met de query, geef een fout. - BELANGRIJK: GEBRUIK NOOIT MYSQL_ERROR()!
echo 'Error';
}
?>
// Config includen
include("includes/DB_connect.php");
// Gegevens ophalen
$sql = mysql_query("SELECT id, menu_name FROM categories");
if ($sql) {
// Alles ging goed, laat het formulier zien
echo '<div id="form">
<form method="post" action="new_message.php"><p>
<input type="text" name="content" /><br />
<select name="category">';
while ($categorie = mysql_fetch_assoc($sql)) {
echo '<option value="'.$categorie['id'].'">'.$categorie['menu_name'].'</option>';
}
echo '</select><br />
<input type="submit" value="Submit your favorite quote" />
</p>
</form>
</div>';
} else {
// Er ging iets fout met de query, geef een fout. - BELANGRIJK: GEBRUIK NOOIT MYSQL_ERROR()!
echo 'Error';
}
?>
_O_
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
error_reporting(E_ALL);
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if (!$rs){
//there where some errors
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($row['id'] != 0){ //hier moet een juiste vergelijkingkomen***
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
?>
error_reporting(E_ALL);
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if (!$rs){
//there where some errors
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($row['id'] != 0){ //hier moet een juiste vergelijkingkomen***
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
?>
de code geeft elke optie als selected terug, omdat ik enkel kijk of het id geen '0' is, wat zou ik daar kunnen zetten zodat enkel de geselecteerde optie selected is?
@Dalando
waarom is msql_error() geen optie? heb eens even gezocht maar ik kon eigenlijk niet zo direct iets vinden. meer info is welkom ;)
Gewijzigd op 09/08/2010 12:54:08 door Dave L
foutafhandeling doe je zo:
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
$qry = "SELECT
id,
blaat
FROM
blaat
ORDER BY
id
ASC";
if($sql = mysql_query($qry))
{
// Verder gaan met je script
}
else
{
echo 'Er is een fout in de query [1]. <br />';
echo mysql_error();
}
?>
$qry = "SELECT
id,
blaat
FROM
blaat
ORDER BY
id
ASC";
if($sql = mysql_query($qry))
{
// Verder gaan met je script
}
else
{
echo 'Er is een fout in de query [1]. <br />';
echo mysql_error();
}
?>
Probeer de volgende keer eens logisch n te springen en error_reporting is echt niet nodig hoor in dit stukje...
in elk geval bedankt voor uw tips..en hieronder de code, met uw tips in het achterhoofd ;)
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
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if ($rs){
//everything is fine... proceed
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($row['id'] != $row[0]){ //hier moet een juiste vergelijking komen!!!!
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
}else{//errors!!!
echo 'Er is een fout in de query [1]. <br />';
echo mysql_error();
}
?>
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if ($rs){
//everything is fine... proceed
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($row['id'] != $row[0]){ //hier moet een juiste vergelijking komen!!!!
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
}else{//errors!!!
echo 'Er is een fout in de query [1]. <br />';
echo mysql_error();
}
?>
Gewijzigd op 09/08/2010 13:27:35 door Dave L
Misschien matchen of $_POST['category'] gelijk is aan $row['id']?
Check of er is gepost, zoja dan:
if($row['id'] == $_POST['naamvandeselect']);
als ik dit in het script plaats krijg ik de volgende melding:
Fatal error: function name must be a string in c:xamp....
het volledig script ziet er ondertussen zo uit:
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
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
<?php
include 'DB_connect.php';
if (isset($_POST['submit'])){
//create a validation
$errors = array();
$required_fields= array('content', 'category_id');
foreach ($required_fields as $fieldname){
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){
$errors[] = fieldname;
}
}
//prep data for sql.. strip tags or other.. do some research on that?
global $connection;
if(empty($errors)){
$message = "the submission was a succes";
$content = strip_tags($_POST['content']);
$id = $_POST['catgory_id'];//this is wrong!!
$query = "INSERT INTO messages (content, category_id)
VALUES
('" . ($content) . "','" . ($id) . "')";
$result = mysql_query($query, $connection);
if (mysql_affected_rows()==1){
//succes
$message = 'the submission was a succes';
}else{
$message = 'there was a problem';
}
}
}//END!(isset($_POST['submit']))
if (!empty($message)){echo $message;}
echo "<div id=\"form\">";
echo "<form action=\"form2.php\" method=\"post\">";
echo " <p>";
echo "<input type=\"text\" size=\"100\" name=\"content\" value=\"\">";
echo " <select name=\"category\"\">";
// making the select box dynamic
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if ($rs){ //everything is fine... proceed
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($_POST($row['id']) == $_POST['category']){ //hier moet een juiste vergelijking komen!!!!
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
}else{//$rsfailed
$message = "the query failed";
}
//--------TESTER--------------------------------------------
//--------------------------------------------------------
echo " </select>";
echo "<input type=\"submit\" value=\"Submit quote\" name=\"submit\"/></p>";
echo "</form>";
echo "</div>";
?>
include 'DB_connect.php';
if (isset($_POST['submit'])){
//create a validation
$errors = array();
$required_fields= array('content', 'category_id');
foreach ($required_fields as $fieldname){
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){
$errors[] = fieldname;
}
}
//prep data for sql.. strip tags or other.. do some research on that?
global $connection;
if(empty($errors)){
$message = "the submission was a succes";
$content = strip_tags($_POST['content']);
$id = $_POST['catgory_id'];//this is wrong!!
$query = "INSERT INTO messages (content, category_id)
VALUES
('" . ($content) . "','" . ($id) . "')";
$result = mysql_query($query, $connection);
if (mysql_affected_rows()==1){
//succes
$message = 'the submission was a succes';
}else{
$message = 'there was a problem';
}
}
}//END!(isset($_POST['submit']))
if (!empty($message)){echo $message;}
echo "<div id=\"form\">";
echo "<form action=\"form2.php\" method=\"post\">";
echo " <p>";
echo "<input type=\"text\" size=\"100\" name=\"content\" value=\"\">";
echo " <select name=\"category\"\">";
// making the select box dynamic
$sql = "SELECT menu_name, id FROM categorys ";
$rs = mysql_query($sql);
if ($rs){ //everything is fine... proceed
while($row = mysql_fetch_assoc($rs)){
echo '<option';
// IS SELECTED
if($_POST($row['id']) == $_POST['category']){ //hier moet een juiste vergelijking komen!!!!
echo ' selected= \"selected\" value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
//NOT SELECTED
echo' value="'. $row['id'].'">'.$row['menu_name'].'</OPTION>';
}
}else{//$rsfailed
$message = "the query failed";
}
//--------TESTER--------------------------------------------
//--------------------------------------------------------
echo " </select>";
echo "<input type=\"submit\" value=\"Submit quote\" name=\"submit\"/></p>";
echo "</form>";
echo "</div>";
?>
alvast bedankt voor jullie tijd en moeite ;)