I have made a dropdown list which fetches data (name) from database and displays in options of dropdown list. Now I am trying to fetch full row of that selected name from the list and want to save each data into a variable for further usage. Can anyone guide me… This is my first project in PHP/MySQL, please help me…
Here is my code for dropdown list:
<form action="sel2.php" method="post"> Player: <select name="data[]" multiple> <option disabled selected>-- Select Player --</option> <?php $records = mysqli_query($con, "SELECT * From bat"); // Use select query here while($data = mysqli_fetch_array($records)) { echo "<option value='". $data['name'] ."'>" .$data['name'] ."</option>"; // displaying data in option menu } echo "</select>"; echo "<input type='submit' name='submit' value='Submit' />"; echo "</form>"; ?>
I have managed to fetch the name and store it into a variable:
<?php if(isset($_POST['submit'])){ if(!empty($_POST['data'])) { foreach($_POST['data'] as $selected){ $curdata = $selected; } } else { echo 'Please select the value.'; } } ?>
Which I have managed to get echo in another page (sel.php):
<!DOCTYPE html> <html> <head> <title>PHP Retrieve Data</title> <?php include "connection.php"; include "sel2.php";// Using database connection file here ?> </head> <body> <center> <?php echo $curdata, "<br>" , $batq; ?> </center> </body> </html>
But how can I store all values of that particular row, for example:
$id = //id of selected name from dropdown list $age = //age of selected name from dropdown list
etc etc
Advertisement
Answer
$_POST['data']
is an array of names, since you filled it with $data['name']
on your previous script.
There is no more data to store than the names… for that, you could for instance, serialize the record:
while($data = mysqli_fetch_array($records)) { echo "<option value='". serialize($data) ."'>" .$data['name'] ."</option>"; // displaying data in option menu }
Now you’ll be getting an array of serialized records on the $POST['data']
parameter:
First, unserialize: $curdata = unserialize($selected);
Then access whatever field you need echo $curdata['age'];
Oh, and bear in mind this, if you assign $curdata
to $selected
inside a foreach… $curdata will always be the last $POST['data']
element, I don’t think you need the foreach in this case.