Autor Zpráva
pavelec
Profil
Dobrý den

Mám problém s provedením jednoho dotazu. Tedy chci vyfiltrovat data z tabulky, když uživatel zadá všechny informace vše funguje normálně, ale pokud nezadá jméno tak se mi vypíše "There was no matching record for the name" a nehledá dle přijmení. Jednoduše potřebuji aby to dokázalo hledat i dle jednoho kriteria, dle které vypíše všechny dostupné infromace z tabulky. S PHP začínám takže pokud by byl někdo ochotný a vysvětlil mi to po lopatě byl bych moc vděčný

Html soubor:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8" />
<title>Search</title>
</head>
<body>
<h1>Seacrh By Name</h1>
<form action="hledej.php" method="get">
<select name="Jmeno">
<option value="Peter" selected="selected">Peter</option>
<option value></option>
<option value="Glenn" >Glenn</option>
<option value="Pavel" >Pavel</option>
</select>
<select name="Prijmeni">
<option value="Neco" selected="selected">Neco</option>
<option value="Novak" >Novak</option>
<option value="Novak" >Novak</option>
  <input type="submit" value="Search" />
</form>
</body>
</html>

PHP soubor:
[pre
<?php

//capture search term and remove spaces at its both ends if the is any
$searchTerm = trim($_GET['Jmeno']);
$searchTerm1 = trim($_GET['Prijmeni']);

//check whether the name parsed is empty
if($searchTerm == "")
{
    echo "Enter name you are searching for.";
    exit();
}

//database connection info
$host = "localhost"; //server
$db = "mydata"; //database name
$user = "root"; //dabases user name
$pwd = ""; //password

//connecting to server and creating link to database
$link = mysqli_connect($host, $user, $pwd, $db);

//MYSQL search statement

$query = "SELECT * FROM Persons WHERE FirstName Like '%$searchTerm%' AND LastName Like '%$searchTerm1%' ";



$results = mysqli_query($link, $query);

/* check whethere there were matching records in the table
by counting the number of results returned */
if(mysqli_num_rows($results) >= 1)
{
    $output = "";
    while($row = mysqli_fetch_array($results))
    {

        $output .= "FirstName: " . $row['FirstName'] . "<br />";
        $output .= "Name: " . $row['LastName'] . "<br />";

        
    }
    echo $output;
}
else
    echo "There was no matching record for the name " . $searchTerm;
?>
juriad
Profil
 ... připojení k DB

$query = "SELECT * FROM Persons";
$cond = false;
if (!empty($_GET['Jmeno'])) {
  $query .= " WHERE FirstName LIKE '%" . mysqli_real_escape_string(trim($_GET['Jmeno'])) . "%'";
  $cond = true;
}

if (!empty($_GET['Prijmeni'])) {
  if ($cond) {
    $query .= " AND ";
  } else {
    $query .= " WHERE ";
  }
  $query .= "LastName LIKE '%" . mysqli_real_escape_string(trim($_GET['Prijmeni'])) . "%'";
}

$results = mysqli_query($link, $query);
...

Mimochodem, ten název PERSONS myslíš vážně? Množné číslo je PEOPLE.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: