CM5 : Présentation de la semaine 2
Dernière mise à jour
Dernière mise à jour
vous devez avoir 2 tables liées entre elles, avec . Il devra y avoir un champs avec une photo (du produit, du film, du chanteur...) pour chaque enregistrement. De plus il devra y avoir au moins 50 enregistrements sur une des tables et au moins 10 sur la deuxieme.
vous devrez avoir au moins 6 champs (sans compter l'id) dans une de vos tables et dans l'autre au minimum 3 champs (toujours sans compter l'id).
rappelez vous, il vous faut aussi un dossier "images" dans votre dossier racine de votre site pour y stocker toutes vos photos car dans votre base de données vous ne stockez que le nom des fichiers photos.
vous devez suivre scrupuleusement le nommage des pages de ces illustrations:
une partie de la note sera sur l'éco-conception (css mimifié, js idem, images optimisées...)
vérifiez bien vos nommages de fichiers! et leur accessibilité pour un visiteur extérieur
pour la partie front, il reste à mettre en place la page de réponse au formulaire (reponse_recherche.php). Cette page admet un parametre envoyé depuis le formulaire, ici dans l'exemple c'est le nom d'un auteur mais cela peut etre aussi le prix d'un album (variable $texte passé dans l'URL)
il faut déjà s'assurer dans form_recherche.php que le champs de recherche se nomme bien texte comme demandé ci-dessus (vous pouvez bien sur lui donner un autre nom, mais il faudra être cohérent dans la page reponse_recherche.php pour bien récupérer cette variable)
extrait de form_recherche.php:
on vérifie tout de suite que le formulaire envois bien dans l'url notre variable en testant le formulaire:
maintenant il reste à faire la page reponse_recherche.php. Elle ressemble completement à la page listing.php sauf que l'affichage se limite à la liste des bandes dessinées correspondant au critère saisie dans le formulaire précédent.
il faut déjà en début de fichier (reponse_recherche.php) récupérer dans l'url la valeur du parametre 'texte' (ou un autre nom de variable si vous en avez choisi un autre):
il faut maintenant modifier la requete SQL utilisée au départ pour afficher toutes les bandes dessinées pour restreindre le nombre d'albums affichés:
vous pouvez tester votre recherche.
il faut déjà changer un peu le texte dans le formulaire:
la requete dans la page reponse_recherche sera bien différente. Dans un premier temps, on peut juste changer la requete comme cela:
si l'on ne fait que ce changement, cela ne marchera pas car le champ auteur_nom est de type CHAR: il faut donc entourer le texte (donc la variable $nom) avec des guillemets (')
il faut donc écrire:
attention aux enchainements de " et de ' ! (bien comprendre leur sens)
Le resultat est maintenant fonctionnel: on peut faire une recherche sur le nom de l'auteur. Mais il faut taper le nom exact!
une requete de recherche avec LIKE peut s'ecrire:
SELECT * FROM table WHERE champs1 LIKE '%toto%' ;
ce qui donnerais pour nous ici:
on peut maintenant tester notre recherche approximative.
Il est bien sur possible de compliquer la recherche en
Améliorons la recherche en faisant une recherche approximative avec jsute quelques lettre du nom de l'auteur (par exemple si on tape dans la zone de recherche "tib" on doit trouver les albums créés par Bautiburg et Pantino. Pour cela nous allons utiliser en SQL la notion de LIKE ()
voir