Je souhaite afficher en PHP le résultat d'une recherche dans un tableau les informations par exemple : le champ label, le champ artist, le champ titre, le champ titreb etc.. .
En fait ma page affiche les données recherchées mais sous forme de lignes.
J'ai essayé de m'en sortir mais des erreurs sont toujours constatées et j'en perds mon latin , mon cerveau va exploser, .
Je me permet de vous soumettre le problème si ce n'est pas abuser de votre savoir.
$requete = htmlspecialchars($_POST['requete']);//La fonction extract puet t'aidér pour sa $req = $bdd->prepare("SELECT * FROM disques_vinyls WHERE artist LIKE :requete ORDER BY id DESC"); // la requête, que vous devez maintenant comprendre $req->execute(array('requete' => $requete . '%'));
$nb_resultats = $req->rowCount(); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par la suite if($nb_resultats != 0){ // si le nombre de résultats est supérieur à 0, on continue
?> <h3>Résultats de votre recherche.</h3> <p>Nous avons trouvé <?php echo $nb_resultats; // on affiche le nombre de résultats if($nb_resultats > 1) { echo 'résultats'; } else { echo 'résultat'; } // on vérifie le nombre de résultats correctement. ?> dans notre base de données. Voici les fonctions que nous avons trouvées :<br/> <br/> <? while($donnees = $req->fetch()) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction { ?> <a> <?php echo $donnees['label']; ?><?php echo $donnees['artist']; ?><?php echo $donnees['titre']; ?><?php echo $donnees['titreb']; ?></a><br/> <? } // fin de la boucle ?><br/> <br/> <a href="rechercher3.php">Faire une nouvelle recherche</a></p> <? } // Fin d'affichage des résultats else { ?> <h3>Pas de résultats</h3> <p>Nous n'avons trouvé aucun résultat pour votre requête "<? echo $_POST['requete']; ?>". <a href="rechercher3.php">Réessayez</a> avec autre chose.</p> <? }// fin de l'affichage des erreurs $req->closeCursor(); // on ferme mysql } else { // formulaire html ?> <p>Vous allez faire une recherche dans notre base de données concernant les fonctions PHP. Tapez une requête pour réaliser une recherche.</p> <form action="rechercher3.php" method="Post"> <input type="text" name="requete" size="10"> <input type="submit" value="Ok"> </form> <? } // fin ?>
Pour ce qui est de présenter le tout dans un tableau, plusieurs techniques possibles, mais je pense que c'est plutôt une question de HTML/CSS que de PHP
Je pense que tu peux par exemple créer une table avec le total de tous les champs qui existent, ensuite le résultat de la recherche tu le marque dans la table en mettant une chanson par ligne puis après tu utilises un foreach pour afficher complètement la table.
Je suis désolé mais je ne vais pas savoir le faire, je n'ai pas de grandes connaissances dans le domaine :/ Disons que ce que je t'ai dit de faire c'est quelque chose que j'ai fait en plus simple avec 2 champs distincts et pas différents :/ Mais oui si quelquu'n bon dans le domaine s'y connait, il n'a qu'à appliquer ma proposition et ça pourrait marcher.
Voici un code, non testé et non commenté, mais par contre dans la balise code ...
Je te laisse faire un super copier-coller sans comprendre, comme ce qui a du être fait pour l'autre (sans quoi tu aurais sûrement pris la peine de changer les commentaires ou au moins même changer le texte, par ce que afficher des titres et des artistes quand on cherche une fonction ... ) et tester que ça fonctionne .
Par contre, je te préviens, le tableau va très certainement pourrir ton affichage !
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Le titre du site</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
if(!empty($_POST['requete'])) {
try {
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=*****l;dbname=*******', ' ****', '******', $pdo_options);
$requete = htmlspecialchars($_POST['requete']);
$req = $bdd->prepare("SELECT * FROM disques_vinyls WHERE artist LIKE :requete ORDER BY id DESC");
$req->execute(array('requete' => $requete . '%'));
}
catch (Exception $e){
die('Erreur : ' . $e->getMessage());
}
if($donnees = $req->fetchAll()) {
?>
<h3>Résultats de votre recherche.</h3>
<p>Nous avons trouvé <?= $nb_resultats." resultat".($nb_resultats > 1) ? 's' : '';?> dans notre base de données. Voici les fonctions que nous avons trouvées :<br/>
<br/>
<table>
<thead>
<th>LABEL</th>
<th>ARTISTE</th>
<th>TITRE</th>
<th>TITREB</th>
</thead>
<tbody>
<?php
foreach($donnees as $donnee){
echo "<tr><td>".$donnee['label']."</td><td>".$donnee['artist']."</td><td>".$donnee['titre']."</td><td>".$donnee['titreb']."</td></tr>";
}
?>
</tbody>
</table>
<br/>
<br/>
<a href="rechercher3.php">Faire une nouvelle recherche</a></p>
<?php
}
else {
?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun résultat pour votre requête "<?=$requete;?>". <a href="rechercher3.php">Réessayez</a> avec autre chose.</p>
<?php
}
}
else {
?>
<p>Vous allez faire une recherche dans notre base de données concernant les fonctions PHP. Tapez une requête pour réaliser une recherche.</p>
<form action="rechercher3.php" method="Post">
<input type="text" name="requete" size="10">
<input type="submit" value="Ok">
</form>
<?php
}
?>
</body>
</html>
Merci a Ealon, c'est vrai que j'ai fait un peu de bricolage et puiser un peu par ci par la , mais j'ai fais mon possible pour évoluer.
Bonsoir, si je voudrais si possible étendre ma recherche toujours dans la table disques_vinyls mais garder toujours le champ artist ( le code fonctionne à merveille) et y inclure le champ titre .
$req = $bdd->prepare("SELECT * FROM disques_vinyls WHERE artist LIKE :requete ORDER BY id DESC OR SELECT * FROM disques_vinyls WHERE titre LIKE :requete"); $req->execute(array('requete' => $requete . '%')); }</pre>
Mais j'ai toujours des erreur de syntaxe
Dernier message :Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'OR SELECT * FROM disques_vinyls WHERE titre LIKE 'adamo%'' at line 1
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller ton code dans la zone prévue. Si tu utilises l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.
Et ça vaut pour tous les messages que tu as posté dans ce sujet. Merci pour nos yeux.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
$req = $bdd->prepare("SELECT * FROM disques_vinyls WHERE artist LIKE :requete ORDER BY id DESC OR SELECT * FROM disques_vinyls WHERE titre LIKE :requete");
$req->execute(array('requete' => $requete . '%'));
}</pre> .
Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace.
Le but est d'accompagner dans la résolution du problème ...
Je te conseille de suivre le cours PHP/MySQL (cf. ma signature) et de revenir une fois que tu seras opérationnel, avec des questions plus spécifiques ...
Pas d'aide concernant le code par MP, le forum est là pour ça :)