I am trying to put a search button on my website where, if the user search for the date all the data from the db that have that "certain date" will be displayed. But for some reason, the datas are not displaying. Can you guys help me figure this out?
Below are my codes for the search
<form action="file.php" method="post">
<input type="text" name="search" placeholder="YYYY-MM-DD">
<input type="submit" name="sub" value="Search Data">
</form>
<?php
if(isset($_GET['sub'])){
$search=$_GET['search'];
$search_q="SELECT * FROM table WHERE date='$search'";
$run_q=mysqli_query($con, $search_q);
while($rows=mysqli_fetch_array($run_q)){
$date_q=$rows['date'];
$impact_q=$rows['impact'];
$advice_q=$rows['advice'];
$typhoon_q=$rows['typhoon'];
$warning_q=$rows['warning'];
?>
<table>
<tr>
<td><?php echo $date_q; ?></td>
<td><?php echo $impact_q; ?></td>
<td><?php echo $advice_q; ?></td>
<td><?php echo $typhoon_q; ?></td>
<td><?php echo $warning_q; ?></td>
</tr>
</table>
<?php } } ?>
You used method type POST for your search form. But you are receiving form data using GET. So please receive the form data using $_POST. Replace $_GET['sub'] to $_POST['sub'] and $_GET['search'] to $_POST['search'].
Also please check your database table name. Did you give your table name: table?
Related
Coud somebody please help me. I have a textbox name "txtremise" found in a dynamic table where user enter a discount %. I am trying to return the values entered in each textbox if there is an error during the form submit.
Lets say, there are 3 rows with 3 textboxes in the table. A user enter 5, 10, 15 respectively in each textbox. Let's say there was an error upon submitting the form, i need the values 5, 10, 15 back in their respective textboxes. Can somebody please assist?
Here is how i generate the textboxes:
<?php
while($iArticles < count($listeArticlePourUnDossier))
{
?>
<tr>
<td><?php echo ($listeArticlePourUnDossier[$iArticles]['ARTICLE_NOM']); ?></td>
<td>
<input type="text" name="txtremise[]" id="txtremise_<?php echo $iArticles; ?>" class="remise" value="<?php echo $_POST['txtremise'];" />
</td>
</tr>
<?php
$iArticles++;
}
?>
Thank you for helping.
<?php
$i=0;
while($iArticles < count($listeArticlePourUnDossier))
{
?>
<tr>
<td><?php echo ($listeArticlePourUnDossier[$iArticles]['ARTICLE_NOM']); ?></td>
<td>
<input type="text" value="<?php if(isset($_POST['txtremise'][$i])){ echo $_POST['txtremise_'][$iArticles];}?>" name="txtremise[]" id="txtremise_<?php echo $iArticles; ?>" class="remise" value="<?php echo $_POST['txtremise'];" />
</td>
</tr>
<?php
$i++;
$iArticles++;
}
?>
You still have that value in either $_POST or $_GET so check if the key is isset then echo the value. So all you need is to add value in your input
This table is displaying details about my workload table per row. And when I click my "pre-View_attend" submit button I want to get the "WorkloadID" and "subjectID" of that workload row where the submit button was clicked.
Currently I have a hidden field containing the subject ID which is "subjectID_hidden", and when I try to get the "WorkloadID" and "subjectID" by using isset.
It seems that I can't accurately get the exact subject ID of the row where I've clicked the "pre-View_attend" submit button.
<tbody style="font-size:20px; text-align:center;">
<tr>
<td><?php echo $row["subjectName"]; ?></td>
<td><?php echo $row["className"]; ?></td>
<td><?php echo $row["RoomNumber"]; ?></td>
<td><?php echo $Sched_Days.'<br>'.$FST.' To '.$FET;?></td>
<td><button style="font-size:15px;" type="button" id="<?php echo $row["WorkloadID"]; ?>" class="btn btn-primary view_StudentList">View Student List</button></td>
<td><button style="font-size:15px;" type="submit" name="gettingAttendance" value="<?php echo $row["WorkloadID"]; ?>" class="btn btn-primary">Take Attendance</button></td>
<td><button style="font-size:15px;" type="submit" name="pre-View_attend" value="<?php echo $row["WorkloadID"]; ?>" class="btn btn-primary">View Attendance</button></td>
<input type="hidden" name="subjectID_hidden" value="<?php echo $row["subjectID"]; ?>">
</tr>
<?php } mysqli_close($connect);?>
</tbody>
/*
I'm getting the workload ID accurately, but the subject ID is incorrect.
I believe I'm getting the last subject ID that my query produced
*/
<?php
if(isset($_POST['pre-View_attend']))
{ $FWID=$_POST['pre-View_attend'];
$FSJID=$_POST['subjectID_hidden'];
echo"Workload ID: $FWID SubjectID: $FSJID";
}
?>
You get the last value because you have a bunch of hidden fields with the same name.
You could name them subjectID_hidden[<?=$row['WorkloadID'];?>] to get an array to then get the subjectID by WorkloadID:
$subjectID = $_POST["subjectID_hidden"][$_POST["pre-View_attend"]];
You need to query the table for something unique to the row you want to retrieve information from. This unqiue data should already be existing on the page, encoded into the button/form.
Example;
<?php
if(isset($_POST['pre-View_attend'])) {
global $db;
$select = "select * from mytable where unique='$unique'";
$connect = mysqli_query($db, $select);
while($row=mysqli_fetch_array($connect)) {
$myfirstVariable = $row['myfirstVariable'];
$mysecondVariable = $row['mysecondVariable'];
$show = "$myfirstVariable $mysecondVariable";
}
}
?>
Then you can call $show when you want in the HTML.
p.s. there are quite a few errors in your html like;
<input type="hidden" name="subjectID_hidden" value="<?php echo $row["subjectID"]; ?>">
should be
<input type="hidden" name="subjectID_hidden" value="<?php echo $row["subjectID"]; ?>" />
self closing at the end with forwards slash.
I am currently new in PHP can you please guide me on how can I get the value of my textbox? and pass it to my sql query? where I want to become the value of my Column name Page? Please Guide me.
<?php
$sql_query="SELECT * FROM tblpost WHERE Page = '//what to put here?' ";
$result_set=mysql_query($sql_query);
while($row=mysql_fetch_row($result_set)){
?>
<tr>
<td><?php echo $row[1]; ?></td>
<td><?php echo $row[3]; ?></td>
<td><?php echo $row[6]; ?></td>
<td>
<a class="btn btn-primary" href="javascript:edt_id('<?php echo $row[0]; ?>')">Edit</a>
<a class="btn btn-danger" href="javascript:delete_id('<?php echo $row[0]; ?>')">Delete</a>
</td>
</tr>
<?php } ?>
this is my textbox.
<div class="form-group">
<label>Page Title</label>
<input name="title" type="text" value="<?php echo $fetched_row['Title']; ?>" required class="form-control" placeholder="Page Title">
</div>
You may want to search for PHP tutorials in addition to this answer.
First, you'll have to wrap your input field in some sort of form. The form will have to have a submit button that leads back to your page, using method GET.
Second, you can get parameters from a GET request in php with $_GET['name-of-input-field']. name-of-input-field is the value of the name attribute of the input field.
Then, you'll want to create a "PreparedStatement", into which you can bind this get parameter. This is a guide on PreparedStatements in PHP: http://php.net/manual/en/pdo.prepared-statements.php
I'm attempting to make a master-detail search page for my intranet that will allow me to search both staff and hardware from the same page. I've gotten part of the way there but I've gotten myself stuck and need some help.
I have the inventory page (index.php) setup and I've included a form with two button - "Staff" and "Hardware" - to include the master-details .php pages I've designed.
The code for this is as follows:
<div class="content">
<h1>Inventory</h1>
<p></p>
<form action="" method="post">
<input type="submit" name="Staff" value="Staff" />
<input type="submit" name="Hardware" value="Hardware" />
</form>
<p></p>
<p></p>
<?php
if (isset($_POST['Staff']))
{
include 'details.php';
include 'lib/staffsearch.php';
};
if (isset($_POST['Hardware']))
{
include 'detailhw.php';
include 'lib/hwsearch';
};
?>
</div>
Again, this works fine - I click "staff" and it loads both my "staffsearch.php" and "details.php" pages. This is where I run into trouble however. My staffsearch.php includes a form that queries my staff database and returns the matching results in a table. I should be able to click on one of the results and the detailed information is displayed in the details box above. What happens though is that I click on the "Staff" button, my includes are displayed, I enter the search criteria, click "search" and get a blank page as a result.
If I click on the "staff" button again though my includes are reloaded along with the correct search result. Accessing the details however results in the same problem - once my results are displayed and I click on one instead of the details I receive a blank page until I click the "staff" button again - then my includes are reloaded and my results are displayed.
Is there anyway that when I click the search button on my staffsearch form that I can force the index page to reload the includes without having to click the "staff" button again?
Thanks, ahead of time for any advice as I'll throw in the mandatory. "I'm new to php" and my Googling hasn't really netted me any good results. If you need anymore information just ask!
EDIT 1
The code for my searchstaff.php page is as follows:
<table width="598px" border="1" align="center">
<tr valign="middle">
<td alight="left" colspan="3"> <form id="form1" name="form1" method="get" action="">
<label for="name">Search:</label>
<input type="text" name="name" id="name" /><input type="submit" name="search" id="search" value="Submit" style="margin-left:10px";/>
</form>
</td>
<tr>
<td align="center" width="40px">No.</td>
<td width="300px">Name</td>
<td width="158px">IP Address</td>
</tr>
<?php do { ?>
<tr>
<td align="center"><?php echo $row_inventorystaff['staff_id']; ?><?php echo $row_DetailRS1['staff_id']; ?></td>
<td> <?php echo $row_inventorystaff['f_name']; ?> <?php echo $row_inventorystaff['l_name']; ?><?php echo $row_DetailRS1['f_name']; ?> <?php echo $row_DetailRS1['l_name']; ?></td>
<td><?php echo $row_inventorystaff['ip_address']; ?><?php echo $row_DetailRS1['ip_address']; ?></td>
</tr>
<?php } while ($row_inventorystaff = mysql_fetch_assoc($inventorystaff)); ?>
</table>
<br />
<table border="0" style="margin-left:15px;" >
<tr>
<td><?php if ($pageNum_inventorystaff > 0) { // Show if not first page ?>
First
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_inventorystaff > 0) { // Show if not first page ?>
Previous
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_inventorystaff < $totalPages_inventorystaff) { // Show if not last page ?>
Next
<?php } // Show if not last page ?></td>
<td><?php if ($pageNum_inventorystaff < $totalPages_inventorystaff) { // Show if not last page ?>
Last
<?php } // Show if not last page ?></td>
</tr>
</table>
<p style="margin_left:15px">Records <?php echo ($startRow_inventorystaff + 1) ?> to <?php echo min($startRow_inventorystaff + $maxRows_inventorystaff, $totalRows_inventorystaff) ?> of <?php echo $totalRows_inventorystaff ?>
</p>
I have screen shots of the process of clicking through the index and performing a search that I can upload if it helps the explanation.
I would use a radio button to make a decision which will be easier to parse. Double submit buttons are a funny thing and some browsers dont like that.
<input name="dept" value="staff" type="radio"> Staff
<input name="dept" value="hardware" type="radio"> Hardware
<?php
if( isset($_POST['dept'] && $_POST['dept'] == 'staff' ) {
include 'staffForm.php';
} else {
include 'hardwareForm.php';
}
?>
i define below codes to show my products on website. I fetch my products details from Database.
When i click on the enquiry submit button it is not selecting the same id and inserting another product id in to database. Please see below codes which i use to send details in database using enquiry Submit Button
Please see below the updated codes, these are all codes which i am using to inserting data when clicking on enquiry submit button
<?php
session_start();
include'database.php';
$userid=$_SESSION['userid'];
$c=mysql_query("select 'productid','productprice' from products order by rand()");
while(list($productid,$productprice)=mysql_fetch_array($c)):
?>
<td align="center">
<table class="newproducttd" align="center">
<tr>
<td class="code" align="center"><?php echo $productid; ?></td>
<td class="price" align="center"><?php echo $productprice; ?></td>
</tr>
<tr>
<td class="button" align="center"><input type="submit" class="enquiry" name="enquiry" value="ENQUIRY" /></td>
</tr>
</table>
</td><br>
<?php
endwhile;
if($_REQUEST['enquiry'])
{
mysql_query("insert into orders values('$userid','$productid','$productprice')");
}
?>
Your table in your mysql database probably has the columns in a different order. To make sure, specify the columns in your insert query before specifying the values.
You're getting the wrong value for $productid because it's assigning the last value of it in your while loop, as your insertion code (and therefore your reference to it) is below that loop, you want to send the product id and price to the page accessible by $_REQUEST when the user clicks submit, to do this in your case you can use hidden form fields to store the values of each product, and a separate form for each element in your loop.
Also you want to put your submission code above your loop.
Depending where this data comes from you might want to escape it before inserting it in the database, I haven't in this example.
<?php
session_start();
include'database.php';
$userid=$_SESSION['userid'];
//check for submission and insert if set
if($_REQUEST['enquiry'])
{
//use the userid session for userid, and submitted values for productid and productprice
mysql_query("insert into orders values('$userid,'{$_REQUEST['productid']}','{$_REQUEST['productprice']}')");
}
$c=mysql_query("select 'productid','productprice' from products order by rand()");
while(list($productid,$productprice)=mysql_fetch_array($c)):
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<td align="center">
<table class="newproducttd" align="center">
<tr>
<td class="code" align="center"><?php echo $productid; ?></td>
<td class="price" align="center"><?php echo $productprice; ?></td>
</tr>
<tr>
<td class="button" align="center"><input type="submit" class="enquiry" name="enquiry" value="ENQUIRY" /></td>
//hidden form fields to store data to send to page
<input type="hidden" name="productid" value="<?php echo $productid;?>">
<input type="hidden" name="productprice" value="<?php echo $productprice;?>">
</tr>
</table>
</form>
<?php
endwhile;
?>