php


my while loop is in php its too much its out of control


This is my code in which my while is going out of order and I don't know what to do with it.
index.php
<!DOCTYPE html>
<html>
<head>
<title>Search</title>
</head>
<body>
<form action="process.php" method="post">
<input type="Search" name="search">
<br>
<input type="submit" name="submit">
</form>
<?php
$search_result = $_GET['result'];
while($search_result)
echo $search_result;
?>
</body>
And the problem is that the above while loop is iterating for the whole life and I can not stop it. What's the matter with it.
process.php
<?php
$conn = new mysqli('localhost', 'root', '', 'posts');
if(isset($_POST['submit']))
{
$search = htmlentities($_POST['search']);
$query = $conn->query("SELECT * FROM posts WHERE heading LIKE'%".$search."%'");
while ($row = $query->fetch_assoc()) {
$search1 = $row['heading'];
header("location:index.php?result='".$search1."'");
}
} else {
header('location:index.php');
}
?>
There are some problems, but you're actually pretty close to getting this working. Others have mentioned the SQL injection vulnerability in the comment, and it's a valid concern that you should address, but I'll just focus on the logic errors in this answer. There are really just two main problems.
First, you aren't getting all of your data in process.php.
Here, you're iterating your query results, but you're only going to get a header with the value of the last one.
while ($row = $query->fetch_assoc()) {
$search1 = $row['heading'];
header("location:index.php?result='".$search1."'"); // overwrites the location header
}
You need to accumulate the headings during the loop and call header once after the loop.
while ($row = $query->fetch_assoc()) {
$result['headings'][] = $row['heading']; // append the row value to an array instead
}
header('Location: index.php?' . http_build_query($result));
(http_build_query will convert the array to a string you can use in the URL.)
Second, you're using the wrong kind of loop in index.php.
Back in index.php, instead of
while($search_result) echo $search_result;
You can use a foreach loop (after checking that the array you're looking for really exists).
if (isset($_GET['headings'])) {
foreach($_GET['headings'] as $heading) {
echo $heading;
}
}
while($search_result) would only work if you were popping items off of $search_result until it became empty, or if you had a break based on some predictable condition.
Be careful not to try to pass too much data in the URL like this. There is a limit to how much it can take. If you're fetching much data, it would probably be better to include process.php and output the query results in the same page rather than submitting your form to process.php and redirecting back to index.php with the results in the query string.

Related Links

Callback constraint is not a valid callable when uploading an image
How to make Image Upload Required
Attribute data options not being applied when created programmatically
Failed to connect to accounts.google.com port 443: Connection timed out
Get the_excerpt of a child page from within a parent page
Not able to upload phpunit larvel files on cpanel
PHP not being able to pick data from HTML form
PHP - Operations with date/time
PHP CGI and FPM, what are they?
Wordpress WP_User_Query search first name & last name
Track Link clicks posted on facebook
docker with two separated php-services on one php container
CodeIgniter 3.1.0 to 3.1.2 upgrade miserable fail
How to access query variables in wordpress
Which PHP $_SERVER variables can be reliably used for a session fingerprint?
foreach in blade template not working correctly

Categories

HOME
qt
magento2
activex
operating-system
hid
loopbackjs
mongoid
tabs
drag-and-drop
ag-grid
graphql-js
specifications
polymer-2.x
lc3
getopenfilename
pm2
mpu6050
complexity-theory
mailgun
nest-api
nose
codefluent
infrared
adminlte
workday
bosun
maven-surefire-plugin
amazon-sns
raima
pubxml
data-collection
xdebug
jsonresult
phpstorm-2016.1
rspec-rails
kendo-listview
nppexec
pdfminer
ms-solver-foundation
tidal-scheduler
rdp
windows-store
utf
contactless-smartcard
sendinput
ipp-protocol
common-table-expression
photoswipe
beeline
maven-jaxb2-plugin
gtk#
palindrome
email-forwarding
swiperefreshlayout
oid
metabase
fuzzer
tsqlt
openseadragon
android-syncadapter
exists
polymerfire
perceptron
bjam
knife
supercomputers
console.log
scala-macros
html-escape-characters
ildasm
libgcc
accessory
cpu-time
django-sites
apache-shindig
form-for
apportable
notin
asp.net-mvc-3-areas
session-0-isolation
nsmutablestring
audiotoolbox
border-box
gamesalad
platform-independent
hardcode
opends
exponent
memory-pool
background-repeat
infopath-2007
servercontrol
azure-acs
fragment-identifier
gaelyk
downgrade
eaccelerator
resharper-5.0
zend-test
activex-exe
remote-working
parentid

Resources

Encrypt Message