FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » [PHP] Probleme pour dynamiser ma page avec des liens automatique
 

[PHP] Probleme pour dynamiser ma page avec des liens automatique

Overclocking & Tuning : fifi2191 et 100 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [PHP] Probleme pour dynamiser ma page avec des liens automatique
 
Plus d'informations

salut a tous !
 
donc voila
je fait un petit system de news  
mais pour afficher les news j'ai decidez de compliqué un peu la chose ...  
 
j'ai en faite 2 partie dans mon system de news
partie "titre" qui est en faite une liste de tous les titre des news
partie "detail" qui est en faite le reste des news ... le contenu en clair
 
ces deux partie sont relié avec des liens automatique qui se trouve au niveau de la partie "titre" sur les titre de news  
 
( ça va vous suivez encore ??  :pt1cable:  )
 
le probleme c'est que quand je lance ma page tous le contenu est deja affiché et pour toute les news ... alors que je voudrais que le contenu s'affiche que quand on clique sur le lien automatique  :fou:  et que si par exemple :
on clique sur le lien A ça affiche le contenu A
et dès qu'on clique sur le lien C ça enleve le contenu A pour le remplacer par le contenu C
 
voila j'espère avoir bien detailler pour que vous comprennez bien ...
je vous file maintenant le code :
 

Code :
  1. <h2>Les dernieres news</h2>
  2. <?php
  3. mysql_connect("***", "***", "***" );
  4. mysql_select_db("***" );
  5. $donnees_bdd = mysql_query("SELECT * FROM B_news" );
  6. while ($donnees = mysql_fetch_array($donnees_bdd) )
  7. {
  8. ?>
  9. <div class="titre">
  10. <?php
  11. echo '<h4><a href="news.php?id=';
  12. echo $donnees['id'];
  13. echo '">';
  14. echo htmlentities($donnees['titre']);
  15. echo '</a><br/></h4>';
  16. ?>
  17. <h5><em>Le
  18. <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
  19. par <?php echo $donnees['pseudo']; ?>.</em><br/></h5>
  20. </div>
  21. <div class="detail">
  22. <?php
  23. if(isset($_GET['id']))
  24.     $id = $_GET['id'];
  25. else
  26.     $id = 1;
  27. if(isset($id))
  28. {
  29. mysql_query('SELECT * FROM B_news WHERE id='.$id.' LIMIT 1');
  30. ?>
  31. <h1><?php echo $donnees['titre']; ?></h1>
  32. <p><span id="categorie"><em>catégorie: <?php echo
  33. $donnees['categ']; ?></em></span><br/>
  34. <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
  35. par <?php echo $donnees['pseudo']; ?>.<br/><br/>
  36. <?php echo $donnees['contenu']; ?><br/><br/>
  37. <em><?php echo$donnees['source']; ?></em>
  38. </div>
  39. <?php
  40. unset($id);
  41. }
  42. }
  43. mysql_close();
  44. ?>


 
voila et je vous file la structure de ma table pour que vous voyier un peu de ce que je parle :
http://img135.imageshack.us/img135/5981/tablenewsdv0.png
 
voili voilou
 
donc j'ai pensé a du Javascript mais comme je le connais pas du tout j'ai abondonné ...
peut etre aussi a enregistrer le contenu dans une nouveau champ dans ma table et la resortir avec un LIMIT 1 mais je suis aps sur que ça fonctionnera ...
donc voila j'espère que vous avez quelque idée pour me faire décoincer  :D  
 
PS: si je clique quand meme sur les lien automatique ça m'enleve tous sur la page pour me laissez que un "titre" et une notice me disant que la ligne 33 a un probleme  
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1"

Profil : Pointeur
Plus d'informations

faudrait peut etre penser a apprendre comment fonctionne une base de donnée...
et accessoirement aussi l'algorithmique ...

Plus d'informations

euh je sais comment fonctionne une BDD ... mais ça ce n'est pas du resort de la BDD  
si tu arrive a regler mon probleme avec la BDD dit le moi au plus vite
 
c'est plutot du resort du JS ou PHP ( encore que je suis pas sur pour le PHP )

Profil : Pointeur
Plus d'informations

aucun rapport avec le php, et encore moins avec le js
 
le problème viens de ta logique.
ta page actuelle fait exactement ce que tu lui demandes : lister tous le contenu de tes news, en prendre le titre et l'id puis refaire une requete pour tout reprendre ...  
 
ps : et au vues de tes select * laisse moi douter de tes connaissances en sql...

Profil : Pointeur
Plus d'informations

surtout sans order by

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Et puis le latin1_swedish machin ça me parrait louche pour un site en Français :o

Plus d'informations

hum hum  
tu essaye de me rabaissez en disant publiquement que mes connaissance en SQl sont nul ...  
 
peut etre que mes connaissance en SQl sont limiter comparer a toi ( et encore j'en doute ) mais moi au moins je sais lire  
car ce que le script fait ... ba c'est exactement ce que j'ai envie qu'il fasse ( je l'ai dit plus haut en plus ce que je veut faire )
 
moi je demandais comment on peut faire apparaitre/disparaitre du texte via un lien automatique ...
et toi tu repond completement hors sujet :
 

Citation :

aucun rapport avec le php, et encore moins avec le js
 
le problème viens de ta logique.
ta page actuelle fait exactement ce que tu lui demandes : lister tous le contenu de tes news, en prendre le titre et l'id puis refaire une requete pour tout reprendre ...  


 
 :non:  
 
et pour info c'est bien du JS qu'il falait et j'ai reussit a faire ce que je voulais ( apparaitre/disparaitre du texte )
 
et pour en revenir a tes connaissance en SQl tu ferais mieux de les revoir toi aussi car normal que je mette select * puisque j'ai besoin de toute les info de ma table ...
 
allez pour que tu comprenne le SQL je vais te faire un petit tuto improviser :
 
SELECT veut dire en language SQl "prendre"
* en SQl veut dire "tous les champs"
 
en clair :
 
SELECT * veut dire : Prend moi tous les champs
 
donc la prochaine fois que tu a envie de rabaissez quelqu'un ... fait un peu plus attention a la personne en face de toi

Plus d'informations

boubpopsyt eam ==> oui je sais mais je programme pour un site et le webmaster n'est pas là ... et il ne veut pas qu'on modifie les table pendant sont absence donc je m'integre comme je peut  :D

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Oui c'est sur enfin c pas au webmaster à voir ça vu que vu ce que tu fais c'est toi là :ange:
 
C'est a l'admin BDD :o
 
(et sinon l'idée de kangol d'ajouter un ORDER BY était bonne AMHA même si indépendnte du problème de base)


Message édité par boub popsy team le 28-12-2006 à 01:10:09
Plus d'informations

lol le ORDER BY c'est pas mon probleme principal pour le moment ^^
 
en faite pour la BDD je doit pas y toucher car ça risque de faire buger l'administration ...
donc j'attend mais c'est pas non plus très génant d'avoir ça :D j'ai connu pire

Profil : Pointeur
Plus d'informations

je m'excuse mais j'avais mal lu ton code...
 
 
c'est encore pire que ce je ne pensait [:pingouino]
elle sert a quoi la seconde requete ?
 

Plus d'informations

hum
si tu repond sur ce post juste pour rien dire je pense que tu peut te dispenser de repondre  ;)  
 
et pour ma requete ... je pense que tu peut savoir a quoi elle sert si tu est si bon en programmation

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

a écrit :

hum
si tu repond sur ce post juste pour rien dire je pense que tu peut te dispenser de repondre  ;)  
 
et pour ma requete ... je pense que tu peut savoir a quoi elle sert si tu est si bon en programmation

[:marsien]

zeb
Profil : Modérateur libre
Plus d'informations

Pas de bataille rangée, s'il vous plaît, ni de prise de position.
 
yaboc> si tu as une solution, publie-la stp, au risque de la voir se faire critiquer. (Mais ce sera pour son bien)
 
KangOl> Oufti! Ce que tu es cinglant sur ce coup là.

pourquoi faire cent fois la même chose ?
Plus d'informations

au hasard :
- le code n'est pas indenté
- la valeur de retour de la seconde requette est ignorée, donc l'appel du coup ne sert à rien
- ton code est surement vulnerable à des injections SQL
- y a des vieux <br /> dans ton code.
- y a plein d'echos qui peuvent être factorisés (tu gache au moins 3 octet par echo en trop si y a pas un accelerateur avec ton php)

Message cité 1 fois
Message édité par Batchy le 28-12-2006 à 20:09:11
Profil : Pointeur
Plus d'informations

elch a écrit :


- le code n'est pas indenté


qu'il commence par ca, je pense qu'il verra mieux d'ou viennent ses erreurs ...
 
 
 

Profil : Pointeur
Plus d'informations

a écrit :


et pour ma requete ... je pense que tu peut savoir a quoi elle sert si tu est si bon en programmation


je sais ce qu'elle fait  
ce que je te dit juste c'est qu'elle sert a rien dans ton code puisque tu n'en récupère pas le résultat...
de plus cette requete est inutile puisque tu as déja les infos avec ta première requete...

Plus d'informations

oui je suis d'accord que je n'indente jamais mes code et c'est une grave erreur mais je code depuis longtemps et les mauvaise habitude sont malheuresement dur a changer  :(  
 
pour les <br/> et les injection SQl ... ba on va dire que ce n'est pas non plus mon probleme pour le moment car en faite je cherche d'abord a avoir un script qui fonctionne bien et après l'améliorer ( notament sur la securité  ;) )
 

Citation :

KangOl    
Batchy a écrit :
 
 
- le code n'est pas indenté
 
 
 
qu'il commence par ca, je pense qu'il verra mieux d'ou viennent ses erreurs ...
 


 
n'essaye pas repeter betement ce que les autre ont dit inteligement stp
 
pour de ce qui est mon probleme de faire dynamiser ma page j'ai trouver voici mon code :
 

Code :
  1. <h2>Les dernieres news</h2>
  2. <?php
  3. mysql_connect("***", "***", "***" );
  4. mysql_select_db("***" );
  5. $donnees_bdd = mysql_query("SELECT * FROM B_news" );
  6. while ($donnees = mysql_fetch_array($donnees_bdd) )
  7. {
  8. ?>
  9. <div class="titre">
  10. <?php
  11. echo '<h4><a href="news.php?id=';
  12. echo $donnees['id'];
  13. echo '"><a href="javascript: switchInfoPersos();">';
  14. echo htmlentities($donnees['titre']);
  15. echo '</a></a><br/></h4>';
  16. ?>
  17. <h5><em>Le
  18. <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
  19. par <?php echo $donnees['pseudo']; ?>.</em><br/></h5>
  20. </div>
  21. <div class="detail">
  22. <?php
  23. if(isset($_GET['id']))
  24.     $id = $_GET['id'];
  25. else
  26.     $id = 1;
  27. if(isset($id))
  28. {
  29. mysql_query('SELECT * FROM B_news WHERE id='.$id.'');
  30. ?>
  31. <script type="text/javascript">
  32. <!-- fonction pour faire disparaitre le texte
  33. function switchInfoPersos()
  34. {
  35. divInfo = document.getElementById('divacachers');
  36. if (divInfo.style.display == 'none')
  37. divInfo.style.display = 'block';
  38. else
  39. divInfo.style.display = 'none';
  40. }
  41. -->
  42. </script>
  43. <div id="divacachers" style="display: none;background-color:#EEF2F7;border:1px solid #000000;padding:5px;">
  44. <h1><?php echo $donnees['titre']; ?></h1>
  45. <p><span id="categorie"><em>catégorie: <?php echo
  46. $donnees['categ']; ?></em></span><br/>
  47. <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
  48. par <?php echo $donnees['pseudo']; ?>.<br/><br/>
  49. <?php echo $donnees['contenu']; ?><br/><br/>
  50. <em><?php echo$donnees['source']; ?></em>
  51. </div>
  52. </div>
  53. <?php
  54. unset($id);
  55. }
  56. }
  57. mysql_close();
  58. ?>


 
( et comme on peut le vois le JS est bien necessaire pour ce probleme )
 
ce script est encore basique et comporte pas mal de default mais la structure est là ...
juste encore un bug qu'il faut regler qui est assez embettant car en faite c'est toujour le meme detail qui apparait ... c'est bloquer dessus et j'arrive pas a le rendre different en fonction des lien automatique  :fou:  
 
pour les autre question je vais vous repondre :
 

Citation :

- y a plein d'echos qui peuvent être factorisés (tu gache au moins 3 octet par echo en trop si y a pas un accelerateur avec ton php)


 
si tu a bien regarder mon script ces petite erreur sont vite compensé grace a la vitesse incroyable que ce script se réalise pour ce system de news car en faite tous se tien sur une page donc pas d'autre page a charger ce qui n'est pas négligeable
mais je suis d'accord avec toi qu'un bon coup de menage une fois le probleme regler sera pas de refus ^^
 

Citation :

KangOl    
yaboc a écrit :
 
 
et pour ma requete ... je pense que tu peut savoir a quoi elle sert si tu est si bon en programmation
 
 
je sais ce qu'elle fait  
ce que je te dit juste c'est qu'elle sert a rien dans ton code puisque tu n'en récupère pas le résultat...
de plus cette requete est inutile puisque tu as déja les infos avec ta première requete...


 
oui ça je suis d'accord que j'aurais du vous expliquer et d'ailleur sur beaucoup de forum on me fait cette remarque ...
la raison est simple ... cette requete est dans mon script car elle permet de supprimer une notice assez génante ... c'est la seule façon que j'ai trouver pour l'enlever  
mais ça vous n'auriez pas pu le savoir ;)

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations