Jump to content

[SOLVED] Outputting several elements from a database with a PHP form


Fabrizzio PHP

Recommended Posts

Hi,

 

I’m a PHP beginner learning through online tutorials and need some help:

On my index.php file I’ve got  a dynamic drop down list which displays the “university” names and when the form is submitted, it should output from my databse: the “content”, “post_code” and “borough” in my result.php. Unfortunately, all I’ve managed to display is the name of the university which is assigned to the "select value". Can I please have assistance on how to output all the database info based on the “select” university? 

 

I’ve got a database called "map" with the following table:

 

id

university

position

visible

content

post_code

borough

 

My index.php file has the following code:

 

<?php

// Connect database

mysql_connect("localhost","root","xxx");

mysql_select_db("map");

 

// If submitted, check the value of "select". If its not blank value, get the value and put it into $select.

if(isset($select)&& $select!=""){

$select=$_GET['select'];

}

?>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

 

<body>

<form id="form1" name="form1" method="post" action="result.php"">

Search by borough :

<select name="select">

<option value="">--- Select ---</option>

<?php

// Get records from database (table "subjects").

$list=mysql_query("SELECT * FROM subjects ORDER BY id ASC");

 

// Show records by while loop.

while($row_list=mysql_fetch_assoc($list)){

?>

<option value="<?php echo $row_list['university']; ?>" <?php if($row_list['id'] == '$select'){ echo "selected"; } ?>><?php echo $row_list['university']; ?></option>

<?php

// End while loop.

}

?>

</select>

<input type="submit" name="Submit" value="select" />

</form>

 

<?php

mysql_close();

?>

</p>

</body>

</html>

 

//My result.php contains the following:

 

<?php require_once("includes/connection.php"); ?>

<?php require_once("includes/functions.php"); ?>

 

<html>

<head>

</head>

<body>

    The University is: <?php echo $_POST["select"]; ?>

    The Postcode is: 

    The content (university description is):

</body>

</html>

 

Hi Ignace,

 

I've changed:

$row_list['id'] == '$select' [code]
to

$row_list['id'] == $select[/code]

and I get this error message:

Notice: Undefined variable: select in C:\wamp\www\map\index.php on line 28>UCLA (all along the dropdown menu).

 

    <?php
    $query= ("SELECT * FROM subjects WHERE university = $_GET["select"]");
    $row_list=mysql_fetch_assoc($query);
    ?>
    The borough is: <?php echo $row_list['borough']; ?>

 

And I get the following error:

 

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\map\myform.php on line 10

 

Am I writing the code right??

change

 

   <?php
    $query= ("SELECT * FROM subjects WHERE university = $_GET["select"]");
    $row_list=mysql_fetch_assoc($query);
    ?>
    The borough is: <?php echo $row_list['borough']; ?>

 

to

 

   <?php
    $select = $_GET['select'];
    $query= ("SELECT * FROM subjects WHERE university = '$select' ");
    $row_list=mysql_fetch_assoc($query);
    ?>
    The borough is: <?php echo $row_list['borough']; ?>

Hi gaza165,

I've written your code and now I get the following error message:

 

Notice: Undefined index: select in C:\wamp\www\map\myform.php on line 13

 

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\map\myform.php on line 15

The borough is:

You have chosen: Westminster

 

I'm also still wondering the correct way to write:

<?php if($row_list['id'] == '$select')

or

<?php if($row_list['id'] == $select)

and if this could have to do with the errors display?

Is $select a integer or a string??

 

If it is an integer do this....

 

  <?php
    $select = $_GET['select'];
    $query= ("SELECT * FROM subjects WHERE university = $select ");
    $row_list=mysql_fetch_assoc($query);
   ?>
    The borough is: <?php echo $row_list['borough']; ?>

 

what is on line 13

Is $select a integer or a string??

 

If it is an integer do this....

 

  <?php
    $select = $_GET['select'];
    $query= ("SELECT * FROM subjects WHERE university = $select ");
    $row_list=mysql_fetch_assoc($query);
   ?>
    The borough is: <?php echo $row_list['borough']; ?>

 

what is on line 13

 

That is not to what the error is referring. 'select' does not exist in the _GET array.

Line 13 is:

 

$select = $_GET['select'];

 

I've tried the other way and I get the following error message:

Notice: Undefined index: select in C:\wamp\www\map\myform.php on line 13

 

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\map\myform.php on line 15

The borough is:

You have chosen: Westminster

Hi Ignace,

 

You need select=value in your url.

 

Sorry but I'm a PHP beginner and I'm not really sure what to write. Shouldn't

$select = $_GET['select'];

give select a value in my URL?

 

Also where you suggested me to change

($row_list['id'] == '$select')

to

($row_list['id'] == $select)

 

I get

Notice: Undefined variable: select in C:\wamp\www\map\index.php on line 28>UCLA (all along the dropdown menu).

Notice: Undefined index: select in C:\wamp\www\map\myform.php on line 13

 

Becuase you are missing select in your url

 

http://domain/page.php?select=something

 

Notice: Undefined variable: select in C:\wamp\www\map\index.php on line 28>UCLA (all along the dropdown menu).

 

Because you need to add:

 

$select = $_GET['select'];

 

before:

 

($row_list['id'] == $select)

Hi Ignace,

 

Thanks, I think I'm getting there! I've given select a value in my URL:

action="myform.php?select=<?php echo urlencode($select['id']);

 

I'm not sure but still having an error message:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\map\myform.php on line 15

The borough is:

You have chosen: Westminster

 

Is there something I'm writing wrong in the select URL?

 

So far this is my code for form.php

if(isset($select)&& $select!=""){
$select=$_GET['select'];
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
            
<body>
<form id="form1" name="form1" method="post" action="result.php?select=<?php echo urlencode($select['id']); ?>"> 
Search by borough :
<select name="select">
<option value="">--- Select ---</option>
<?php
// Get records from database (table "subjects").
$list=mysql_query("SELECT * FROM subjects ORDER BY id ASC");

// Show records by while loop.
while($row_list=mysql_fetch_assoc($list)){
?>
<?php
$select = $_GET['select'];?>
<option value="<?php echo $row_list['borough']; ?>" <?php if($row_list['id'] == $select){ echo "selected"; } ?>><?php echo $row_list['borough']; ?></option>
<?php
// End while loop.
}
?>
</select> 
<input type="submit" name="Submit" value="select" />
</form>

 

And my result.php

<body>

    <?php
    $select = $_GET['select'];
    $query= ("SELECT * FROM subjects WHERE borough = $select ");
    $row_list=mysql_fetch_assoc($query);
    ?>
    
    The University is: <?php echo $row_list['universty']; ?><br />

    The borough is: <?php echo $_POST["select"]; ?>
    
</body>

 

assuming $select is a string, change your query to

"SELECT * FROM subjects WHERE borough = '$select' "

 

also, $query isn't a valid mysql_resource because well... it isn't a mysql_resource, its a string. you have to preform a mysql_query with that string in order to get data from the table so chagne $query to

 

$query= mysql_query("SELECT * FROM subjects WHERE borough = '$select' ");

 

Hope that helps

Hi mikesta707,

 

I've made the change and I don't get an error message but the following:

The borough is:

You have chosen: Westminster

 

I'm not sure if my URL select value has to do with it:

<form id="form1" name="form1" method="post" action="myform.php?select=<?php echo urlencode($select['id']); ?>">

Problem is you are using post, and not get. Values passed via the URL are stored in the $_GET array. so change the following:

 

The borough is: <?php echo $_POST["select"]; ?>

 

to

 

The borough is: <?php echo $_GET['select']; ?>

 

and it should work

Hi Mikesta707,

 

Thanks! I tweaked your code and it actually work! For anyone interested on how to post different values from a PHP Form using a drop down list here is the code:

 

I’ve got a database called "XXX" with the following table:

 

id

university

position

visible

content

post_code

borough

 

 

form.php

<?php
// Connect database
mysql_connect("localhost","root","YOURPASSWORD");
mysql_select_db("YOUR DATABASE NAME"); 

// If submitted, check the value of "select". If its not blank value, get the value and put it into $select.
if(isset($select)&& $select!=""){
$select=$_GET['select'];
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
            
<body>
<form id="form1" name="form1" method="post" action="result.php?select=<?php echo urlencode($select['id']); ?>"> 
Search by borough :
<select name="select">
<option value="">--- Select ---</option>
<?php
// Get records from database (table "subjects").
$list=mysql_query("SELECT * FROM subjects ORDER BY id ASC");

// Show records by while loop.
while($row_list=mysql_fetch_assoc($list)){
?>
<?php
$select = $_GET['select'];?>
<option value="<?php echo $row_list['university']; ?>" <?php if($row_list['id'] == $select){ echo "selected"; } ?>><?php echo $row_list['universtity']; ?></option>
<?php
// End while loop.
}
?>
</select> 
<input type="submit" name="Submit" value="select" />
</form>

<?php
mysql_close();
?>
</p>
</body>
</html>

 

result.php

<?php
// Connect database
mysql_connect("localhost","root","oizzirbaf");
mysql_select_db("map"); 
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

    <?php
    $select = $_POST['select'];
    $query= mysql_query("SELECT * FROM subjects WHERE borough = '$select' ");
    $row_list=mysql_fetch_assoc($query);
    ?>
    

    You have chosen: <?php echo $_POST["select"]; ?> University!<br />
    The borough is: <?php echo $row_list['borough']; ?><br /> 
   
</body>
</html>

 

THANKS TO EVERYONE YOU WERE ALL OF GREAT HELP!  :D

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.