PHP expert |
|
Het probleem zit hem in je if-constructies: De query wordt enkel en alleen uitgevoerd als je zowel een POST als 2 GET requests stuurt. Je moet voor elke geval appart een zoekstring opstellen om zo in de database te zoeken.
Edit:
...
<?php
if(isset($_POST['verzend'], $_GET['go']) || isset($_GET['by']))
{
if(isset($_POST['verzend'], $_GET['go']))
{
$zoekstr = mysql_real_escape_string($_POST['verzend']);
}
elseif(isset($_GET['by']))
{
$zoekstr = mysql_real_escape_string($_GET['by']);
}
if(preg_match("/[A-Z | a-z]+/", $zoekstr))
{
$db = mysql_connect ("localhost", "***", "***") or die ('Kon geen connectie maken met de database. Foutmelding: ' . mysql_error());
$mydb = mysql_select_db("***");
$sql = "SELECT id, username, email, ip FROM users WHERE username LIKE '%" . $zoekstr . "%' OR email LIKE '%" . $zoekstr ."%' OR ip LIKE '%" . $zoekstr ."%'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$username = $row['username'];
$email = $row['email'];
$ip = $row['ip'];
echo "<ul>\n";
echo "<li>" . "<a href=\"zoeken.php?id=" . $id . "\"> " . $id . " " .$username . " " . $email . " " . $ip . "</a></li>\n";
echo "</ul>";
}
}
else
{
echo "Vul iets in om te zoeken...";
}
}
?>
...
... <?php if(isset($_POST['verzend'], $_GET['go']) || isset($_GET['by'])) { if(isset($_POST['verzend'], $_GET['go'])) { } elseif(isset($_GET['by'])) { } { $sql = "SELECT id, username, email, ip FROM users WHERE username LIKE '%" . $zoekstr . "%' OR email LIKE '%" . $zoekstr ."%' OR ip LIKE '%" . $zoekstr ."%'"; { $id = $row['id']; $username = $row['username']; $email = $row['email']; $ip = $row['ip']; echo "<li>" . "<a href=\"zoeken.php?id=" . $id . "\"> " . $id . " " .$username . " " . $email . " " . $ip . "</a></li>\n"; } } else { echo "Vul iets in om te zoeken..."; } } ?> ...
Nog iets dat ik vreemd vond: Je zoekt in je database ook op IP, maar je regex voorkomt dat je zoekstring cijfers mag bevatten... |