list/menu + selected

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
Jim_Bo
Forum Contributor
Posts: 390
Joined: Sat Oct 02, 2004 3:04 pm

list/menu + selected

Post by Jim_Bo »

Hi,

I cant get the following code to show the database record as the selected option I thought it was correct:

Code: Select all

<select name="category_name">

<?php

$sql = "SELECT * FROM gallery_category";
	$result = mysql_query($sql);
		while ($row = mysql_fetch_array($result)) {

?>
		<option <?php echo $category_name==$row['category_name'] ? 'selected' : ''?> value="<?php echo $row['category_name']; ?>"><?php echo $row['category_name']; ?></option>
<?php
}
?>

</select>
Cheers
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Post by John Cartwright »

try

Code: Select all

$sql = "SELECT * FROM gallery_category";
$result = mysql_query($sql) or die(mysql_error());

echo '<select name="category_name">';
while ($row = mysql_fetch_array($result)) {
   echo '<option '.($category_name == $row['category_name'] ? 'selected = "selected"' : '').' value="'.$row['category_name'].'">'.$row['category_name'].'</option>';
}
echo '</select>';
And see if that produces an error. Other than that syntax looks ok.
By the way, where does $category_name come from?
Jim_Bo
Forum Contributor
Posts: 390
Joined: Sat Oct 02, 2004 3:04 pm

Post by Jim_Bo »

Hi,

$category_name comes from the "select name"
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Post by John Cartwright »

That won't work unless register globals is ON, which it is OFF by default in any half-new release of php.

Change this line

Code: Select all

echo '<option '.($category_name == $row['category_name'] ? 'selected = "selected"' : '').'
to

Code: Select all

echo '<option '.(isset($_POST['category_name']) && $_POST['category_name'] == $row['category_name'] ? 'selected = "selected"' : '').'
Jim_Bo
Forum Contributor
Posts: 390
Joined: Sat Oct 02, 2004 3:04 pm

Post by Jim_Bo »

Hi,

I have sent $category_name across the url and used $_GET .. is that a pluasable way to do it?


Cheers
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Post by John Cartwright »

so your form method is set to GET instead of POST? that is fine.. just change $_POST to $_GET in that line I told you to change
Jim_Bo
Forum Contributor
Posts: 390
Joined: Sat Oct 02, 2004 3:04 pm

Post by Jim_Bo »

Hi

What is the correct syntax for this:

Code: Select all

echo '<option '.$_GET['category_name'] == $row['category_name'] ? 'selected' : ''.' value="'.$row['category_id'].'">'.$row['category_name'].'</option>';
the following works but when I try to echo the result the list menu is empty

Code: Select all

<option <?php echo $_GET['category_name'] == $row['category_name'] ? 'selected' : ''?> value="<?php echo $row['category_id']; ?>"><?php echo $row['category_name']; ?></option>
ruchit
Forum Commoner
Posts: 53
Joined: Mon Sep 26, 2005 6:03 am

Post by ruchit »

corrected syntax

Code: Select all

echo '<option '.($_GET['category_name'] == $row['category_name'] ? 'selected' : '').' value="'.$row['category_id'].'">'.$row['category_name'].'</option>';
Jim_Bo
Forum Contributor
Posts: 390
Joined: Sat Oct 02, 2004 3:04 pm

Post by Jim_Bo »

Hi,

works great

Cheers
Post Reply