Page 1 sur 1
Apostrophes et guillemets requête
Posté : 26 mai 2020, 16:47
par ChrisCMoi62
Bonjour,
je galère avec ma requête qui n'affiche pas les apostrophes ni les guillemets,
j'ai créé un moteur de recherche sur la 1ère page et le code ci-dessous sur ma 2e page, j'ai tenté avec htmlspecialchars, et str_replace pour essayer de contourner le problème mais rien n'y fait, j'en ai marre, si quelqu'un pouvait m'aider ça serat super.
Merci d'avance
<h3>Resultat pour <? echo $search;?> :</h3>
<br />
<?
try{
$bdd = new PDO('mysql:host=localhost;dbname=dbname', 'user', 'mdp') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}
$req = $bdd->query("SELECT * FROM livres WHERE titre LIKE '%$search%' OR auteur LIKE '%$search%'");
if($req->rowCount()>0)
{
while($data = $req->fetch(PDO::FETCH_OBJ))
{
$titre = $data->titre;
$titre = html_entity_decode($titre);
$search = html_entity_decode($search);
$auteur = $data->auteur;
$reference = $data->reference;
$dispo = $data->dispo;
?>
<form method="post" enctype="multipart/form-data" action="mediatheque-livres-reservation">
<?
$dispo = $dispo;
if ($dispo == '2') { $message =" : ---- EMPRUNTE ----";
}
?>
<input type="text" name="search" style="width:100%; border:none" value="réf : (<? echo $reference ?>) - <?php echo $titre ?> - <? echo $auteur ?> <? echo $message ?>" readonly="readonly">
<button class="button">Réserver</button>
</form>
Re: Apostrophes et guillemets requête
Posté : 26 mai 2020, 20:03
par LGV
Bonjour,
Ça donne quoi avec ça ?
$req = $bdd->query('SELECT * FROM livres WHERE titre LIKE \'%'.$search.'%\' OR auteur LIKE \'%'.$search.'%\' ');
Re: Apostrophes et guillemets requête
Posté : 26 mai 2020, 20:38
par Figuedi
j'y connais surement moins que vous mais j'utilise régulièrement un echo en lieu et place de la query pour voir si les paramètres passent bien comme je le veux
Re: Apostrophes et guillemets requête
Posté : 26 mai 2020, 21:21
par Figuedi
chez moi ça fonctionne comme ça
$query = "SELECT *from vividparts where Product_Name='$produit' AND Part_Description like '%$search%'";
Re: Apostrophes et guillemets requête
Posté : 26 mai 2020, 21:52
par Figuedi
Chez moi cela fonctionne parfaitement, j'ai juste une page avant pour choisir le produit
<?php
require('_connexion_pdo.php');
if (!isset ($_POST['produit'])){$produit="%";}
else $produit=$_POST['produit'];
if (!isset ($_POST['search'])){$search="%";}
else $search=$_POST['search'];
echo'<h1>'.$produit.'</h1>';
echo '<div>';
echo'<a href="./lire.php">Choix du type de machine</a>';
echo'<form action="toto.php" method="POST">';
echo '<input type="text" name="search" value="'.$search.'" ;/>';
echo '<input type="checkbox" name="produit" value="'.$produit.'" checked style.visibility="hidden";/>';
echo'<input type="submit" name="submit" value="cherche";/>';
echo'</form>';
echo'</div>';
$query = "SELECT *from vividparts where Product_Name='$produit' AND Part_Description like '%$search%'";
//echo "SELECT *from vividparts where Product_Name='$produit' AND Part_Description like '%$search%'";
try {
$pdo_select = $pdo->prepare($query);
$pdo_select->execute();
$NbreData = $pdo_select->rowCount();
$rowAll = $pdo_select->fetchAll(); // tout dans le meme tableau
}
catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
//affichage en fonction du resultat de la division Euclidiene "modulo" X%Nbcol si =col-1 tu es a la derniere colone si 0 tu es sur l premiere
$nbcol=1;
echo '<table id="u1">';
for($i=0;$i<$NbreData;$i++){
$valeur1=$rowAll[$i]['Part_Number'];
$valeur2=$rowAll[$i]['Part_Description'];
if($i%$nbcol==0) echo '<tr class="ligne">';
echo '<td>'.$valeur1.'</td><td>'.$valeur2.'</td>';
if($i%$nbcol==($nbcol-1)) echo '</tr>';
}
echo '</table>';
Re: Apostrophes et guillemets requête
Posté : 27 mai 2020, 08:57
par ChrisCMoi62
Bonjour et merci à vous pour vos réponses, hélas j'en suis toujours au même point, j'ai testé vos idées mais ça ne fonctionne malheureusement pas, je redonne mon code :
première page :
<!--Formulaire-->
<form action="mediatheque-result" method="post">
<div class="wrap">
<div class="search">
<input type="text" class="searchTerm" id="search" name="search" placeholder="Votre recherche..." value="'.$search.'">
<button type="submit" class="searchButton">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</form>
<!--/formulaire-->
2e page :
<!--Traitement formulaire-->
<?php
if(empty($_POST) || empty($_POST['search']))
{
header('Location: mediatheque-livres2');
}
else
{
extract($_POST);
}
?>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=mabase;charset=utf8', 'user', 'mdp');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<h3>Resultat pour <? echo $search;?> : </h3>
<br />
<?
try{
$bdd = new PDO('mysql:host=localhost;dbname=^mabase', 'user', 'mdp') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}
$req = $bdd->query("SELECT * FROM livres WHERE titre LIKE '%$search%' OR auteur LIKE '%$search%'");
if($req->rowCount()>0)
{
while($data = $req->fetch(PDO::FETCH_OBJ))
{
$titre = $data->titre;
$auteur = $data->auteur;
$reference = $data->reference;
$dispo = $data->dispo;
?>
<form method="post" enctype="multipart/form-data" action="mediatheque-livres-reservation">
<?
$dispo = $dispo;
if ($dispo == '2') { $message =" : ---- EMPRUNTE ----";
}
?>
<input type="text" name="search" style="width:100%; border:none" value="réf : (<? echo $reference ?>) - <? echo str_replace("'", '5',$titre) ?> - <? echo $auteur ?> <? echo $message ?>" readonly="readonly">
<button class="button">Réserver</button>
</form>
<!--/Traitement formulaire-->
Re: Apostrophes et guillemets requête
Posté : 27 mai 2020, 19:52
par Figuedi
quand ut dis que cela ne fonctionne pas, c'est un message d'erreur ? une page vierge ?
si tu teste en fixant ta variable $search est ce que cela fonctionne ?
Re: Apostrophes et guillemets requête
Posté : 28 mai 2020, 09:47
par ChrisCMoi62
Bonjour, j'ai trouvé la solution, il suffisait de changer ma reqête, je lap ublie pour vous faire voir :
Encore merci à vous pour votre aide
Nouvelle reqûete
$req = $bdd->query('SELECT * FROM `livres` WHERE `titre` LIKE "%'.$search.'%" OR `auteur` LIKE "%'.$search.'%"');
Ancienne requête :
$req = $bdd->query("SELECT * FROM livres WHERE titre LIKE '%$search%' OR auteur LIKE '%$search%'");