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...
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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); ?>
Partager