Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1581 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petite question PHP, noob :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petite question PHP, noob :)

n°2142963
Extravagen​t Fail
Posté le 19-05-2012 à 11:37:43  profilanswer
 

Alors je vous explique mon problème.  :o  
 
J'ai une page theatre.php

Code :
  1. <?php
  2. $reponse = $bdd->query('SELECT * FROM spectacle_spc WHERE spc_tsp_id=2' );
  3. while($donnees = $reponse->fetch())  {?>
  4.      <a href="affichage.php" style="color:white">La piece <strong><?php echo $donnees['spc_titre']; ?></strong>, realise par <strong><?php echo $donnees['spc_real']; ?></strong>.</a> <br />
  5. <?php
  6. } ?>


 
Ma page theatre.php fonctionne comme je le désire  :D (elle propose tous les choix des pièces présentes sur ma BDD) Mais j'aimerais qu'en cliquant sur un des liens proposé, elle me renvoie à la page affichage.php tout en gardant la donnée spc_titre en mémoire. Puisque cette page affichage.php sera la même pour tout les liens, seul le contenue sera différent selon la pièce sur laquelle on a cliqué. ( j’espère avoir été clair  :o )
 
La page affichage.php

Code :
  1. <?php
  2. $req = $bdd->prepare('SELECT * FROM spectacle_spc WHERE spc_title=?');
  3. $req->execute(array($donnees['spc_titre']));
  4. ?>
  5. <?php echo $donnees['spc_titre']; ?>
  6. <?php echo $donnees['spc_real']; ?>
  7. <?php echo $donnees['spc_desc']; ?>


 
Merci d'avance à celui qui pourra m'éclairer sur ce petit problème. ;)

mood
Publicité
Posté le 19-05-2012 à 11:37:43  profilanswer
 

n°2142968
xaeon
Profil: TT
Posté le 19-05-2012 à 13:12:30  profilanswer
 

Au plus simple comme ca je dirais que chaque lien crée sur theatre.php peut contenir l'identifiant de son spectacte (spc?) du type:
 

Code :
  1. <?php
  2. $reponse = $bdd->query('SELECT * FROM spectacle_spc WHERE spc_tsp_id=2' );
  3. while($donnees = $reponse->fetch())  {?>
  4.      <a href="affichage.php?spc_title=<?php echo  $donnees['spc_titre']; ?>" style="color:white">La piece <strong><?php echo $donnees['spc_titre']; ?></strong>, realise par <strong><?php echo $donnees['spc_real']; ?></strong>.</a> <br />
  5. <?php
  6. } ?>


 
Derrière sur affichage tu n'as qu'à récupérer les données dans $_GET pour retrouver le spc_title.

n°2142971
Extravagen​t Fail
Posté le 19-05-2012 à 13:48:00  profilanswer
 

Déjà merci pour cette super réponse, puisque j'arrive à récupérer le titre sur la page affiche.php  ;)  

Code :
  1. <?php echo $_GET['spc_titre']; ?>


 
Mais comment faire si je veux afficher les données qui correspondent à ce titre ?  
J'ai réalisé ca :

Code :
  1. <?php
  2. $req = $bdd->prepare('SELECT * FROM spectacle_spc WHERE spc_titre=?');
  3. $req->execute(array($_GET['spc_titre']));
  4. <?php echo $req['spc_titre']; ?>
  5. <?php echo $req['spc_real]; ?> // etc ...
  6. ?>


 
Mais ca ne fonctionne pas.  
Encore merci.

n°2142974
xaeon
Profil: TT
Posté le 19-05-2012 à 14:05:44  profilanswer
 

à la ligne 4 de ton code, il faudrait utiliser ta ressource. Un petit fetch sur $req me semble tout indiqué :)

n°2142977
Extravagen​t Fail
Posté le 19-05-2012 à 14:29:25  profilanswer
 

Génial, ca fonctionne parfaitement [:gum]
D'ailleurs je comprend mieux l'utilité de Fetch d'un coup  :o  
 
Vraiment merci pour ces réponses si rapide ;)

n°2143036
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2012 à 10:43:37  profilanswer
 

Petite remarque : ça serait sans doute mieux de faire le même traitement mais sur l'ID (clé primaire dans la table spectacle_spc de ta BD, a priori qui se nommerait spc_id) et non sur le titre. Ca t'évitera tout un tas de pbs de caractères à gérer si le titre de ta pièce contient des ", des /, des espaces... Et t'arriveras au même résultat ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2143050
Extravagen​t Fail
Posté le 20-05-2012 à 12:18:18  profilanswer
 

Remarque prise en compte  :o  
Surtout que j'avais bien une clé primaire spc_id ;)
 
Merci bien ;)

n°2143680
Extravagen​t Fail
Posté le 25-05-2012 à 15:37:13  profilanswer
 

Je me permet de vous poster un nouveau problème, vu la qualité de vos réponses ;)

 

J'ai tenté de créer une fonction recherche sur un seul attribut "spc_titre" de la table "spectacle_spc".
J'ai donc une case de type formulaire de name "requete" qui renvoie à ma page rechercher.php

 

rechercher.php

Code :
  1. <?php
  2. $query = "SELECT count(spc_titre) FROM spectacle_spc WHERE spc_titre LIKE \"%$requete%\"";
  3. $reponse = mysql_query($query);
  4. $row = mysql_fetch_row($reponse);
  5. $nombre = $row[0];
  6. if(empty($nombre)) {?>
  7. <?php echo "<h2>Aucun résultat ne correspond à votre recherche</h2>"; }
  8. else {
  9.       while($row = mysql_fetch_row($reponse))  { ?>
  10. <a href="affichage.php?spc_titre=<?php echo  $row['spc_titre']; ?>" class="beau" ><?php echo $row['spc_titre']; ?></a> <br />
  11. <?php
  12. } } ?>
 

Voyez vous ce qui ne colle pas ?
Je n'ai pas d'erreur de codage pure mais j'ai aucun résultat affiché.  :o  (comme si ca ne passait pas dans le if/else, j'ai d'ailleurs un doute sur la bonne utilisation de la fonction empty)
Merci à celui qui pourra tenter de me débloquer.


Message édité par Extravagent Fail le 25-05-2012 à 15:38:07
n°2143691
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2012 à 16:01:02  profilanswer
 

Ben ta requête remonte qu'un nb de titres trouvés. Je vois pas comment tu espères avoir la liste :/ Vire le count().


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2143724
Extravagen​t Fail
Posté le 25-05-2012 à 18:19:21  profilanswer
 

J'ai tenté une autre version mais toujours pas de résultat correct  :/
J'ai remplacé le count()
Et mes fetch_row par un fetch_array

 
Code :
  1. $query = "SELECT * FROM spectacle_spc WHERE spc_titre LIKE \"%$requete%\"";
  2. $reponse = mysql_query($query);
  3. $donnees = mysql_fetch_array($reponse);
  4. if(empty($donnees) {?>
  5. <?php echo "<h2>Aucun résultat ne correspond à votre recherche</h2>"; }
  6. else {
  7.         while($donnees = mysql_fetch_array($reponse))  { ?>
  8.      <a href="affichage.php?spc_titre=<?php echo  $donnees['spc_titre']; ?>" class="beau" ><strong><?php echo $donnees['spc_titre']; ?></strong></a> <br />
  9. <?php
  10. } } ?>
 

J'suis naze. ( Mais merci ;) )


Message édité par Extravagent Fail le 25-05-2012 à 18:53:44
mood
Publicité
Posté le 25-05-2012 à 18:19:21  profilanswer
 

n°2143756
xaeon
Profil: TT
Posté le 26-05-2012 à 02:00:17  profilanswer
 

Dans l'absolu, je pense qu'il faut que tu écrives ton algo avant de coder, là tu fais 2 fois la même chose.
 
Il me semble que là dans tous les cas, si tu as des données, il va te manquer 1 ligne, de même si tu as 1 seule ligne en retour, rien ne s'affichera. J'aurai plutot vu un:
 

Code :
  1. $query = "SELECT * FROM spectacle_spc WHERE spc_titre LIKE \"%$requete%\"";
  2. $reponse = mysql_query($query);
  3. $donnees = mysql_fetch_array($reponse);
  4. // $flag permet de savoir si tu as un enregistrement ou pas
  5. $flag = false;
  6. while($donnees = mysql_fetch_array($reponse))  { ?>
  7.      <a href="affichage.php?spc_titre=<?php echo  $donnees['spc_titre']; ?>" class="beau" ><strong><?php echo $donnees['spc_titre']; ?></strong></a> <br />
  8. <?php
  9. $flag = true;
  10. }
  11. // si $flag est toujours à false, c'est que tu n'es jamais rentré dans ton while
  12. if(!$flag)
  13.     echo "<h2>Aucun résultat ne correspond à votre recherche</h2>";
  14. ?>


 
Bon il y a sans doute plus facile mais je dois t'avouer utiliser PDO pour les connexions en BDD et je te conseillerai d'y jeter un oeil si tu as le courage car je le trouve bien plus simple à maîtriser (quand tu auras le temps :o )
http://fr.php.net/manual/fr/book.pdo.php

n°2143759
Extravagen​t Fail
Posté le 26-05-2012 à 08:31:10  profilanswer
 

xaeon a écrit :

Dans l'absolu, je pense qu'il faut que tu écrives ton algo avant de coder, là tu fais 2 fois la même chose.
 
Il me semble que là dans tous les cas, si tu as des données, il va te manquer 1 ligne, de même si tu as 1 seule ligne en retour, rien ne s'affichera. J'aurai plutot vu un:
 

Code :
  1. ...


 
Bon il y a sans doute plus facile mais je dois t'avouer utiliser PDO pour les connexions en BDD et je te conseillerai d'y jeter un oeil si tu as le courage car je le trouve bien plus simple à maîtriser (quand tu auras le temps :o )
http://fr.php.net/manual/fr/book.pdo.php


 
Déjà merci pour tes conseils je vais vite allez voir ca ;)
Après pour PDO, c'est de cette façon que je commençais à coder (comme mes premiers codes laissés sur ce post) mais vu que je fais tous ca pour un projet scolaire à la con, et que pour le monsieur qui corrige PDO="vousnemaitrisezpascavousavezcopiercollersurlenet" j'ai du retourner à cette vieille version de papy :/

n°2143761
Extravagen​t Fail
Posté le 26-05-2012 à 09:39:44  profilanswer
 

Disons que y'a du mieux  :o  
Mais c'est pas tout a fait ca  :D  
 
Là maintenant, peut importe ce que l'on recherche, ca affichera tous les spectacles de la BDD. (sauf le premier)
Pourtant j'ai tout vérifié, les noms des requetes, titre etc.. et c'est bien ca.

n°2143763
xaeon
Profil: TT
Posté le 26-05-2012 à 10:16:08  profilanswer
 

Fais voir ton code complet sur cette page :)

n°2143767
Extravagen​t Fail
Posté le 26-05-2012 à 10:57:54  profilanswer
 

Avec plaisir  :o  
 

Code :
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="utf-8" />
  5.  <link rel="stylesheet" href="recherche.css" />
  6.         <title>Recherches</title>
  7.     </head>
  8.     <body>
  9.    <div id="fond">
  10.    </div>
  11.  
  12.    <div id="resultat">
  13.  
  14.   <?php
  15. $host ='db416209894.db.1and1.com';
  16. $user = 'dbo416209894';
  17. $bdd = 'db416209894';
  18. $passwd ='******';
  19. mysql_connect($host, $user, $passwd) or die("erreur de connexion au serveur" );
  20. mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
  21. $query = "SELECT * FROM spectacle_spc WHERE spc_titre LIKE '%$requete%'";
  22. $reponse = mysql_query($query);
  23. $don = mysql_fetch_array($reponse);
  24. // $flag permet de savoir si il y a un enregistrement ou pas, fonction binaire
  25. $flag = false;
  26. while($don = mysql_fetch_array($reponse))  { ?>
  27.      <a href="affichage.php?spc_titre=<?php echo  $don['spc_titre']; ?>" class="beau" ><strong><?php echo $don['spc_titre']; ?></strong></a> <br />
  28. <?php
  29. $flag = true;
  30. }
  31. // si $flag est toujours à false, c'est que tu n'es jamais rentré dans ton while
  32. if(!$flag)
  33.     echo "<h2>Aucun résultat ne correspond à votre recherche</h2>";
  34. ?>
  35.    </div>
  36.    </body>
  37.   </html>


 
Et je te rajoute mon formulaire de recherche :

Code :
  1. <div id="recherche">
  2.    <form action="rechercher.php" method="Post" class="recherche"> 
  3.    <input type="text" name="requete" size="27">
  4.    <input type="submit" value="ok">
  5.    </form>
  6.    </div>


 
Merci d'essayer de m'aider ;)

n°2143768
xaeon
Profil: TT
Posté le 26-05-2012 à 11:11:48  profilanswer
 

Alors plusieurs conseils qui ne tienne qu'à moi:
 
- affiche ta requête sql $query et tu te rendras vite compte qu'elle ne change jamais et qu'avec de la chance est "fonctionne" en était toujours
SELECT * FROM spectacle_spc WHERE spc_titre LIKE '%%'
Résultat tu sélectionnes tous les champs de ta base.
 
- il faut donc valoriser ta variable $requete (que tu utilises dans $query) avec ce que tu as récupéré de ton formulaire avant d'exécuter ta requête.

Code :
  1. // récupération sécurisée du champ requete de ton formulaire
  2. $requete = htmlspecialchars(trim($_POST['requete']));


 
Essaie déjà de voir de ce coté :)

n°2143770
Extravagen​t Fail
Posté le 26-05-2012 à 11:22:53  profilanswer
 

Là ca affiche qu'aucun résultat ne correspond à ma recherche, meme si je recherche un titre exact. Je ne dois donc pas rentrer dans le While.
 
En fait avant j'avais rajouté cette ligne là

Code :
  1. $requete = $_POST['requete'];


 
Qui je crois doit avoir la même fonction que la tienne.
Mais à force de bidouiller elle avait disparue de mon codage.

n°2143772
xaeon
Profil: TT
Posté le 26-05-2012 à 11:51:47  profilanswer
 

Non mais c'est moi aussi qui suis grave con ma parole...

Code :
  1. $query = "SELECT * FROM spectacle_spc WHERE spc_titre LIKE \"%$requete%\"";
  2. $reponse = mysql_query($query);
  3. // Bah ouai sinon si on a 1 ligne en retour, on ne rentre jamais dans le while...
  4. $donnees = mysql_fetch_array($reponse);
  5. // $flag permet de savoir si tu as un enregistrement ou pas
  6. $flag = false;
  7. while($donnees = mysql_fetch_array($reponse))  { ?>
  8.      <a href="affichage.php?spc_titre=<?php echo  $donnees['spc_titre']; ?>" class="beau" ><strong><?php echo $donnees['spc_titre']; ?></strong></a> <br />
  9. <?php
  10. $flag = true;
  11. }
  12. // si $flag est toujours à false, c'est que tu n'es jamais rentré dans ton while
  13. if(!$flag)
  14.     echo "<h2>Aucun résultat ne correspond à votre recherche</h2>";
  15. ?>
 

Mais tu as toujours besoin de ton $requete = $_POST['requete'] (ma syntaxe est juste plus sûre vis à vis des saisies utilisateur)


Message édité par xaeon le 26-05-2012 à 11:53:01
n°2143773
Extravagen​t Fail
Posté le 26-05-2012 à 11:59:38  profilanswer
 

SUPER, SUPER, SUPER §§§§§§§§§
Ca marche du feu de dieu.  :o  
 
Vraiment merci de ton soutien ;)
C'est cool de trouver des gens comme toi ;)
 

Spoiler :

Mais il me reste plein de fonction à travailler [:petoulachi]

n°2143775
xaeon
Profil: TT
Posté le 26-05-2012 à 12:05:22  profilanswer
 

De nada :) C'est blindé de gens prêt à aider ici, suffit d'accepter les règles de base et de ne pas arriver les mains vides en espérant que la solution tombera du ciel :D
 
Bon courage pour la suite, vu la chaleur tu en auras bien besoin.

n°2144918
Poisse
Jukenhou Hakke Rokujuu Yonsho
Posté le 06-06-2012 à 22:05:27  profilanswer
 

Etant donné qu il y a du noob dans le titre je tente ma chance...
Je dois mettre un site en maintenance, les sites html c est simple je vais je créé une page index.htm avec serveur maintenance et ça roule sur le www.
 
 
Par contre sur un site PHP quel page je dois modifier pour rendre le site en down ?
 
Merci par avance


---------------
Moards : Challenge Everything. - En fait l'idée c est que t arrives comme un porc à l entrée en glisse ! Là tu te jettes comme un porc ! Et là tu sors comme un goret
n°2144929
xaeon
Profil: TT
Posté le 06-06-2012 à 22:57:05  profilanswer
 

index.php à tout hasard?
 
Dans lequel tu fais un include(<fichier maintenance.html> )

n°2145262
Poisse
Jukenhou Hakke Rokujuu Yonsho
Posté le 10-06-2012 à 16:24:23  profilanswer
 

Merci de ta reponse.
Pour info c etait plus compliqué que ça... le ftp qu on m a donné correspondait pas au site en prod, mais au site en dev :)
 
Je pouvais toujours modifier les trucs  :)


---------------
Moards : Challenge Everything. - En fait l'idée c est que t arrives comme un porc à l entrée en glisse ! Là tu te jettes comme un porc ! Et là tu sors comme un goret
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petite question PHP, noob :)

 

Sujets relatifs
formulaire Php[PHP] extraire des données d'une page html
Fan Gate Facebook et API PHPSessions PHP
nombre d'occurrences dans un XML avec PHPProbleme avec Easy PHP
[jquery] Question un peu bateau sur les bouclesVBA excel, petite macro a reparer
[boucle PHP remplissage tableautinyMCE => PHP => MySQL : erreur UTF-8 (Incorrect string value)
Plus de sujets relatifs à : Petite question PHP, noob :)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR