PHP MySQL Live Search sur deux colonnes sans succès
Bonjour a tous,
j'ai réussi a créer un champ de recherche 'live' sur ma page principale a l'aide d'un script java, ajax et php pour accéder a ma base de donnes. le script ci dessous fonctionne tres bien lorsque la recherche ce fait une colonne de la base de données mais si je veut rechercher sur deux colonnes , rien ne va plus... :roll:
J,ai donc tenté de declarer la variable $sql = "SELECT * FROM `TABLE 1` WHERE `titrefr` LIKE ?"; EN: $sql = "SELECT * FROM `TABLE 1` WHERE `titrefr` LIKE ? OR `titreor` LIKE ? de façon a rechercher en LIVE sur les deux colonnes de ma base de données";
Ansi Que mysqli_stmt_bind_param($stmt, "s", $param_term); EN mysqli_stmt_bind_param($stmt, "ss", $param_term);
le tout sans Success. j'ai bien sur essaye d'autres syntaxes differentes mais rien
Code d'erreur dans ERROR.log : Number of elements in type definition string doesn't match number of bind variables in /var/www/test.com/public_html/backend-search1.php on line 25
Le fichier ci-dessous fonctionne parfaitement avec recherche sur un seul champ: comme je l'ai dit plus haut j'ai essaye plusieurs syntaxes differentes, j'espere trouve une ame charitable qui pourra m'aider. :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="ISO-8859-1">
<title>PHP Live MySQL Database Search</title>
</head>
<table border="1" align="center">
<tr>
<td>Titre FR</td>
<td>Titre Original</td>
<td>Resultat(s) Visionner</td>
</tr>
<?php header('Content-Type: text/html; charset=ISO-8859-15');
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "ff", "", "filmos");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
if(isset($_REQUEST["term"])){
// Prepare a select statement
//$key = $_GET['term'];
$sql = "SELECT * FROM `TABLE 1` WHERE `titrefr` LIKE ?";-----------------------------------------LIGNE Modifiée pour recherche sur deux champs
$parm = "%";
$param_term = $parm . $_REQUEST["term"] . "%";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_term);------------------------------------------------------LIGNE 25
// Set parameters
//$param_term = $parm . $_REQUEST["term"] . "%";
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
$result = mysqli_stmt_get_result($stmt);
//$vision = "<a>href={$row['lien']} download>{$row['titrefr']}</a>";
// Check number of rows in the result set
if(mysqli_num_rows($result) > 0){
// Fetch result rows as an associative array
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo
"<tr>
<td>{$row['titrefr']}</td>
<td>{$row['titreor']}</td>
<td><a href={$row['lien']} download>VISIONNER </a></t
</tr>\n";
}
} else{
echo "<p>Pas de Resultat(s)...</p>";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
// Close statement
mysqli_stmt_close($stmt);
}
// close connection
mysqli_close($link);
?> |
finalement trouve la solution
Finalement j,ai trouve la solution , voici le morceau du code change:
Code:
1 2 3 4 5 6
| $sql = "SELECT * FROM `TABLE 1` WHERE `titrefr` LIKE ? OR `titreor` LIKE ?" ;
$parm = "%";
$param_term = $parm . $_REQUEST["term"] . "%";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "ss", $param_term, $param_term); |
dans la dernière ligne ajouter un s et un $param_term
Cool çà pourra servir peut-être a des novices comme moi