8768 sujets

Développement web côté serveur, CMS

Bonjour,

Dernier étape et j'ai fini mon travail de migration de php 5.4 vers 7.
J'ai créer un petit moteur de recherche qui me permet de trouver des articles en cherchant dans la désignation. Ca fonctionne mais que je n'ai une ligne, je souhaite avoir toutes les lignes ou le mot clavier est dans ma bdd.

Je tape clavier, et j'ai toute les désignations et ou le mot clavier est dans la description, je veux la liste des articles qui contiennent le mot clavier.
Ca fonctionne à merveille en mysql et en pdo ça plante comme d'habitude.
Mon code :
 <?php    
$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8"); 
$req=$connexion->query("SELECT d FROM Articles WHERE d LIKE '%".($_POST['d'])."%' Order by d Asc "); 
while($d=$req->fetch())
$data = $req->fetch(); 
		  ?>

Je pense qu'il faut faire une boucle pour passer l'ensemble de la bdd en revue. Aucun message d'erreur sauf que je trouve qu'un champs alors qu'il y en a + 20.
Après, ça j'ai fini
Merci d'avance de vos retours.
Modifié par Tintin75 (30 Jan 2016 - 14:25)
$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8"); 

$req=$connexion->query("SELECT d FROM Articles WHERE d LIKE '%".($_POST['d'])."%' Order by d Asc "); 
while($d=$req->fetch())
$data = $req->fetch(); 


Résultat 1 seule ligne d'afficher alors qu'il y a un paquet !!! Un coup de main serait sympa je deviens fou. Pour moi la requête est bonne, bref n'étant pas un spécialiste de pdo, je galère comme un malade.

Je ne m'en sort pas Smiley bawling
Modifié par Tintin75 (29 Jan 2016 - 19:57)
salut c'est pas une probleme d'accolade ?


while($d=$req->fetch())
{
$data = $req->fetch();
}
$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8");

$req=$connexion->query("SELECT d FROM Articles WHERE d LIKE '%".($_POST['d'])."%' Order by d Asc ");
while($d=$req->fetch())
{
$data = $req->fetch();
}

Pareil, merci de ton aide j'y suis depuis 14 heures !!! Ma requête est bonne ou il faut que je passe en préparé ?

J'ai un champ Recherche : je tape ma recherche par exemple batterie et ça va chercher toutes les lignes dans ma bdd de donnée dans la colonne d oui il y a batterie. Je veux afficher la liste complète. C'est pour faire un petit moteur de recherche. Ca fonctionne nickel en mysql. Je déteste pdo !!!! Smiley fache J'ai beau lire les tutos, regarder sur le net pas moyen de faire fonctionner ce code.
Modifié par Tintin75 (29 Jan 2016 - 20:25)
$req=$connexion->query("SELECT d FROM Articles WHERE d LIKE '%".($_POST['d'])."%' Order by d Asc ");
while($d=$req->fetch())
var_dump($data['d']);
$data = $req->fetch();

NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL

Comme l'âne qui est derrière le clavier Smiley lol J'ai trouvé !!!!

while ($data = $req->fetch())
echo $data['d'] ."</br></br>";
$data = $req->fetch();

Par contre, lorsque je me connecte à ma page de recherche, j'ai la liste complète de mes articles à l'écran. Je voudrai rien avoir. Si je tape boulon, avoir mes résultats pour boulon.

J'avais déjà le problème sur l'ancienne version.

Genre veuillez taper votre recherche on affiche aucun résultat, on tape siège et on les résultats.
Modifié par Tintin75 (30 Jan 2016 - 08:36)
$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8");

$req=$connexion->query("SELECT * FROM Articles WHERE d LIKE '%".($_POST['d'])."%' Order by d Asc ");

if(empty($_POST['d']))
{
echo'<div align = "center"><font color="#003186" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Désolé, mais aucun resultat ne correspond à votre recherche, veuillez recommencer merci.</strong></font><br><br></div>';
}
$req->execute();
while ($data = $req->fetch())
echo $data['d'] ."</br></br>";
$data = $req->fetch();

J'ai bien le message si rien n'est rempli mais j'ai toujours la liste complète à l'écran et je veux rien voir. Si champ de recherche rempli le message s'efface bien.
Modifié par Tintin75 (30 Jan 2016 - 14:09)