<code><div id="form">
<form action="new_message.php" method="post">
<p>
<input type="text" size="100" name="content" value="">
<select name="category">
<?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>";
}
?>
</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?
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
Zal je dan niet eens wat debug foutafhandeling in gaan bouwen dan?

<?php
echo "<OPTION VALUE=".$row['menu_name'].">".$row['menu_name']."</OPTION>";
?>

is ook niet conform de html regeltjes

<?php
echo '<option value="'.$row['id'].'">'.$row['menu_name'].'</OPTION>';
?>

en dan zal ik niet de menu_name als value gebruiken maar het id
Bedankt voor de tips.. de data op de selectbox laten komen lukt nu,.. maar als ik een inzending doe dan word elke inzending gedaan naar categorie '0'. ik moet dus een select optie nog inbouwen, maar de kennis ontbreekt,.. vrees ik. De code zoals ik ze nu heb is als volgt

 
<?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?
Persoonlijk doe ik het liever zo:
<?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';
}
?>
Roel van de Water op 07/08/2010 20:01:58

Persoonlijk doe ik het liever zo:
<?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';
}
?>



_O_

Na 2 dagen proberen is het me nog steeds niet gelukt om een categorie selectie te maken, en deze in te voeren in de database. de database uitlezen in een selectbox is wel gelukt... hieronder de code zoals die op deze moment is:
<?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>';
}
?>
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 ;)


Ik heb medelijden met je script :'( je laat hem doodvallen!

foutafhandeling doe je zo:

<?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();	
}
?>


Probeer de volgende keer eens logisch n te springen en error_reporting is echt niet nodig hoor in dit stukje...
ik heb 14 dagen ervaring met php.. dus dat men code maar aan de zwakke kant is, is in mijn ogen vrij normaal :p

in elk geval bedankt voor uw tips..en hieronder de code, met uw tips in het achterhoofd ;)
<?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();
}
?>
Misschien matchen of $_POST['category'] gelijk is aan $row['id']?

Reageren