/    Sign up×
Community /Pin to ProfileBookmark

PHP randomly stops output when displaying MySQL Result

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:

[code=php]
/****************************************************************************
* 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() );
}[/code]

Here’s how I use it (Note: $edit[1] contains the value to preselect):

[code=php]<?php printComboBox( “SELECT id, name FROM departments”, “department”, 0, 1, $edit[1] ); ?>[/code]

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):

[code=html]
<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&#65533;o&#65533;m&#65533;a&#65533;i&#65533;n&#65533;.&#65533;[/code]

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

to post a comment
PHP

2 Comments(s)

Copy linkTweet thisAlerts:
@TeufelSep 21.2009 — Too many mysql connections maybe?
Copy linkTweet thisAlerts:
@DeX3authorSep 21.2009 — Nope but meanwhile I solved it. The Problem was, that the server was running on VirtualBox and I was accessing it via the VirtualBox Host System. VirtualBox seems to have a problem there, since it worked fine accessing the site via the Virtual Machine itself. I installed XAMPP now on the original VirtualBox-Host and ported the app there.

Everything works fine now. Kinda strange error for VirtualBox though, probably there was a problem of using Win7x64 RC as VirtualBox-Host.

thx for the reply though
×

Success!

Help @DeX3 spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.4,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,

tipper: @Samric24,
tipped: article
amount: 1000 SATS,
)...