een selectiebox maken met SQL data?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dave L

Dave L

07/08/2010 13:12:18
Quote Anchor link
<code><div id="form">
<form action="new_message.php" method="post">
<p>
<input type="text" size="100" name="content" value="">
<select name="category">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
              }

          ?>

</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
 
PHP hulp

PHP hulp

29/11/2024 02:57:21
 
B a s
Beheerder

B a s

07/08/2010 13:33:39
Quote Anchor link
Wat wil je precies doen dan?
 
Dave L

Dave L

07/08/2010 13:37:55
Quote Anchor link
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
 
Noppes Homeland

Noppes Homeland

07/08/2010 13:47:26
Quote Anchor link
Zal je dan niet eens wat debug foutafhandeling in gaan bouwen dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 echo "<OPTION VALUE=".$row['menu_name'].">".$row['menu_name']."</OPTION>";
?>


is ook niet conform de html regeltjes

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 echo '<option value="'.$row['id'].'">'.$row['menu_name'].'</OPTION>';
?>


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
 
Dave L

Dave L

07/08/2010 17:09:20
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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

<?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
 
Roel -

Roel -

07/08/2010 20:01:58
Quote Anchor link
Persoonlijk doe ik het liever zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}

?>
 
Dalando De Zuil

Dalando De Zuil

07/08/2010 22:23:41
Quote Anchor link
Roel van de Water op 07/08/2010 20:01:58:
Persoonlijk doe ik het liever zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}

?>


_O_
 
Dave L

Dave L

09/08/2010 12:49:10
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
      }

?>

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
 
Milo S

Milo S

09/08/2010 13:00:53
Quote Anchor link
Ik heb medelijden met je script :'( je laat hem doodvallen!

foutafhandeling doe je zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();    
}

?>


Probeer de volgende keer eens logisch n te springen en error_reporting is echt niet nodig hoor in dit stukje...
 
Dave L

Dave L

09/08/2010 13:22:32
Quote Anchor link
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 ;)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
   }

?>
Gewijzigd op 09/08/2010 13:27:35 door Dave L
 
B a s
Beheerder

B a s

09/08/2010 14:07:10
Quote Anchor link
Misschien matchen of $_POST['category'] gelijk is aan $row['id']?
 
- SanThe -

- SanThe -

09/08/2010 14:08:52
Quote Anchor link
if($row['id'] != $row[0]){ //hier moet een juiste vergelijking komen!!!!

Check of er is gepost, zoja dan:
if($row['id'] == $_POST['naamvandeselect']);
 
Dave L

Dave L

09/08/2010 17:31:36
Quote Anchor link
gaan we dan geen vergelijking maken tussen een integer en een string? (ik kan ook fout zijn hoor, ben nog maar net bezig met php)

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
 ?>


alvast bedankt voor jullie tijd en moeite ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.