8791 sujets

Développement web côté serveur, CMS

Bonjour, je viens de creer une table avec plusieurs critères (id, nom, prenom, ville, email).
Suite à cela j'ai demander en php que la liste compléte de ma table soit afficher sur ma page dans l'ordre alphabétique, jusque là pas de problémes.

Maintenant et voici ma question, je souhaite afficher toutes les lignes mais seulement celles qui contienne le mot que j'indique dans un champ texte et tjr en ordre alpahbétique.

il y à surment une simple modification à faire à mon code actuel mais je coince fortement.

Le champ texte n'est pas encore intégrer au code !

<table>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Ville</th>
<th>E-mail</th>
</tr>
<?php
try
{
	// On se connecte à MySQL
	$bdd = new PDO('mysql:host=localhost;dbname=annuaire', 'root', 'azx33f22');
}
catch(Exception $e)
{
	// En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
}

// Si tout va bien, on peut continuer

// On récupère tout le contenu de la table jeux_video
$reponse = $bdd->query('SELECT * FROM info ORDER BY info_nom, info_prenom');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>

<tr bgcolor="<?php echo switchcolor(); ?>" >
<td><?php echo $donnees['info_nom'];?></td>
<td><?php echo $donnees['info_prenom'];?></td>
<td><?php echo $donnees['info_ville'];?></td>
<td><?php echo $donnees['info_email'];?></td>
</tr>

<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>
</table>
Salut,

T'es sûr qu'au lieu de poser des questions de débutant++ tu ne préfèrerais pas plutôt lire au moins un tutoriel SQL ?

Genre celui-ci : http://sqlpro.developpez.com/cours/sqlaz/select/

On est là pour aider, et non pour faire à la place des autres, surtout quand ceux-ci n'ont même pas pris la peine d'apprendre les bases.
Modifié par Agylus (03 Dec 2010 - 10:24)
alors voila ce que je tire de tous ca lol
$reponse = $bdd->query('SELECT * FROM info WHERE xxxxxxxxxxx IN ('.$recherche.') ORDER BY info_nom, info_prenom');


Dans le code à la place des xxxxxxxxxxx il faut que je lui indique tout les nom des champs ou il dois recherche le terme donner par la variable $recherche comment l'écrire les nom de mes champs sont
(info_id, info_nom, info,prenom, info_ville, info_email)

Merci
j'ai oublier voila l'erreur qu'il me met quand je test en lui disant de chercher dans le champ info_nom



Fatal error: Call to a member function fetch() on a non-object in D:\xampp\www\annuaire\recherche.php on line 44
Donc si je comprend bien je dois le marquer de cette façon ?

$reponse = $bdd->query('SELECT * FROM info WHERE info_id = '$recherche' AND info_nom = '$recherche' AND info_prenom = '$recherche' AND info_ville = '$recherche' AND info_email = '$recherche' ORDER BY info_nom, info_prenom');
Modifié par Designarca (03 Dec 2010 - 11:02)
Avec les erreurs de syntaxe en moins et en prenant compte la dernière phrase de mon précédent post.
$reponse = $bdd->query('SELECT * FROM info WHERE (info_id = '$recherche') OR (info_nom = '$recherche') OR (info_prenom = '$recherche') OR (info_ville = '$recherche') OR (info_email = '$recherche') ORDER BY info_nom, info_prenom');

aprés pour l'écriture je suis perdu comment l'écrire correctement ? stp

merci
Modifié par Designarca (03 Dec 2010 - 11:17)
en fait il ne m'indique pas d'erreurs de synthax seulement

Fatal error: Call to a member function fetch() on a non-object in D:\xampp\www\annuaire\recherche.php on line 48

// On récupère tout le contenu de la table jeux_video
$reponse = $bdd->query('SELECT * FROM info WHERE (info_id = '.$recherche.') OR (info_nom = '.$recherche.') OR (info_prenom = '.$recherche.') OR (info_ville = '.$recherche.') OR (info_email = '.$recherche.') ORDER BY info_nom, info_prenom'); 


// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{

Modifié par Designarca (03 Dec 2010 - 11:27)
Ton erreur PHP vient du fait que tu as une erreur de syntaxe dans ta requête. Si tes champs sont des chaines de caractères, tu dois entourer les valeurs par des guillemets.
en effet de simple "" merci beaucoup à toi ma fonction de recherche fonctionne à merveille et surtout m'affiche bien toutes les lignes quand le meme terme et trouver sur plusieurs ligne de ma table merci beaucoup


$reponse = $bdd->query('SELECT * FROM info WHERE (info_id = "'.$recherche.'") OR (info_nom = "'.$recherche.'") OR (info_prenom = "'.$recherche.'") OR (info_ville = "'.$recherche.'") OR (info_email = "'.$recherche.'") ORDER BY info_nom, info_prenom'); 

Modifié par Designarca (03 Dec 2010 - 11:37)
Me revoila et si je souhaite ajouter deux autres critères de recherche sur seulement deux champs comme "fonction et ville" de façon a pouvoir n'afficher que les personnes de la meme fonction ou de la même ville ?

reponse = $bdd->query('SELECT * FROM info WHERE (info_id = "'.$recherche.'") OR (info_nom = "'.$recherche.'") OR (info_prenom = "'.$recherche.'") OR (info_ville = "'.$recherche.'") OR (info_email = "'.$recherche.'") ORDER BY info_nom, info_prenom'); 


Le code suivant avec l'ajout des critères est-il correcte ?

// On récupère les données
$recherche = $_POST['recherche'];
$recherchef = $_POST['recherchef'];
$recherchev = $_POST['recherchev'];

// On récupère tout le contenu de la table jeux_video
$reponse = $bdd->query('SELECT * FROM info WHERE (info_id = "'.$recherche.'") OR (info_nom = "'.$recherche.'") OR (info_prenom = "'.$recherche.'") OR (info_fonction = "'.$recherchef.'") OR (info_ville = "'.$recherchev.'") OR (info_tel = "'.$recherche.'") OR (info_email = "'.$recherche.'") ORDER BY info_nom, info_prenom'); 


// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>



SI VOUS NE VOYEZ PAS LE CODE DITE LE MOI MERCI OU ALORS AIDER MOI A PARTIR DE LA PREMIERE PARTIE DU CODE PRESENTER POUR AJOUTER DEUX CRITERE SUR FONCTION ET VILLE MERCI
Modifié par Designarca (03 Dec 2010 - 16:37)