Hey there,

I'm relatively new to PHP and I got a problem I just cannot seem to solve. I have to display a <select>-box filled with values from a MySQL-database. Since I have to do this very often and for a lot of different tables, I wrote this function:

PHP Code:
/****************************************************************************
 * Prints a <select>-Combobox
 * $sql(String): An SQL-Statement, used to gather the data vor the box
 * $name(String): The name vor the <select>
 * $keyCol(int): The column in the result from $sql, which contains the value for the value-property of the different <option>-tags
 * $valueCol(int): THe column in the result from $sql, which contains the text for the different <option>-tags 
 * $selected(String): A value, that should be preselected
 * $includeNoVal(Boolean): if true, the printed <select> will contain a "Not specified"-option
 * *************************************************************************/   
function printComboBox$sql$name$keyCol$valueCol$selected$includeNoVal=true )
{
    
$db db_connect();
    
    
$tmp mysql_query$sql$db );
    
    
var_dump$tmp );     //for testing purposes
    
    
if( $tmp )
    {
        echo 
"<select size=\"1\" name=\"" htmlspecialchars($name) . "\">\n"//Start the <select>
        
        
if( $includeNoVal )             //There shall be a "Not specified"-option
        
{
            echo 
"\t<option value=\"NULL\"";
            
            if( !isset( 
$selected ) )        //If there is no preselection specified
                
echo " selected";           //Preselect the "Not specified" option
                
             
echo ">Not specified</option>\n";
        }
        
        while( 
$tmpRow mysql_fetch_row$tmp ) )
        {
            
var_dump$tmpRow );         //For testing purposes
        
            
echo "\t<option value=\"" htmlspecialchars($tmpRow[$keyCol]) . "\"";                  //Print the start of the <option>-tag
            
            
if( $selected == $tmpRow[$keyCol] )     //Check wether this <option> needs to be preselected
                
echo " selected";
                
            echo 
">" htmlspecialchars$tmpRow[$valueCol] ) . "</option>\n";  //Close the option-tag
        
}
        echo 
"</select>\n";       //End of the <select>
    
}else
        throw new 
DBException"Unable to retrieve data for \'" $name "\'"mysql_errno() );

Here's how I use it (Note: $edit[1] contains the value to preselect):
PHP Code:
<?php printComboBox"SELECT id, name FROM departments""department"01$edit[1] ); ?>
The Problem is, that PHP behaves really strange when I run this code. Sometimes, it works just fine (~50% of the time). However, sometimes PHP just seems to randomly stop the output. Sometimes it even stops WITHIN one of the test-vardumps (Very special in this case: it even puts out some text that looks like the text "domain." displayed with the wrong encoding):

HTML Code:
<select size="1" name="department">
[...]
<option value="114">Some test department here
</option>
array(2) {
  [0]=>
  string(3) "115"
  [1]=>
  string(13) "Some test department here
"
}
	<option value="115">Another test department

</option>
array(2) {
  [0]=>
  string(3) "116"
  [1]=>
  string(9) "d�o�m�a�i�n�.�
I have absolutely no idea what is going wrong there. As I said, WHERE it stops seems completely random. Sometimes it's in the middle of an echo, sometimes it's like above, within a call of var_dump. And sometimes it works just fine.

All the searching I did, didn't give me a solution, hope you can help me =)

thx in advance