Un seul "select" pour plusieurs "echo"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Un seul "select" pour plusieurs "echo"

par J-Nicolas » 19 mai 2006, 15:57

Je n'avais pas dit merci. Je le fais maintenant, parce qu'il vaut mieux tard que jamais.

Merci.

Je ne peux pas éditer mon premier post car écrit avant que je m'enregistre, mais mon problème est "RESOLU".

par Hubert Roksor » 22 févr. 2006, 17:01

Waw vous postez drôlement vite les gars, quand j'ai cliqué sur Répondre il n'y avait encore aucune réponse ;)
je me documente sur cette fonction.
C'est quasi-identique à mysql_fetch_array() à la différence que mysql_fetch_array() fait en quelque sorte le double de travail et que tu n'en utilises que la moitié.

par J-Nicolas » 22 févr. 2006, 16:57

Puisque tu utilises PHP, tu dois avoir une ligne du genre
$row = mysql_fetch_assoc($result);
Merci, je me documente sur cette fonction.

par J-Nicolas » 22 févr. 2006, 16:54

Il n'y a qu'une seule table, en voici la structure :

Code : Tout sélectionner

CREATE TABLE `lesactus` ( `news_id` int(11) NOT NULL auto_increment, `date_post` varchar(10) NOT NULL default '', `valide` tinyint(1) default NULL, `titre` varchar(120) NOT NULL default '', `courte` text, `longue` text, `marques` varchar(50) NOT NULL default '', `marques2` varchar(50) NOT NULL default '', `type` varchar(63) NOT NULL default '', `type2` varchar(63) NOT NULL default '', PRIMARY KEY (`news_id`), KEY `date_post` (`date_post`) ) TYPE=MyISAM AUTO_INCREMENT=1063 ;
Et voici une requete :

Code : Tout sélectionner

<? { $db = mysql_connect('*********', '*********', '********'); mysql_select_db('*******',$db); $sql = "SELECT marques,type,type2 FROM lesactus WHERE news_id=$news_id"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_array($req)) { echo '<a href="/'.$data['type'].'.php" class="blancjaune">'.$data['type'].'</a>&nbsp;&nbsp; <a href="/'.$data['type2'].'.php" class="blancjaune">'.$data['type2'].'</a>&nbsp;&nbsp; <a href="/'.$data['marques'].'.php" class="blancjaune">'.$data['marques'].'</a>'; } mysql_close(); } ?>

par Hubert Roksor » 22 févr. 2006, 16:52

Puisque tu utilises PHP, tu dois avoir une ligne du genre
$row = mysql_fetch_assoc($result);
Et bien le contenu de $row ne disparait pas spontanément et tu peux le réutiliser plus loin! :) Ou copier les informations dont tu as besoin dans une autre variable et les réutiliser plus tard. Par exemple, un extrait de ce que pourrait être ta page:
<?php

$sql = 'SELECT titre, contenu FROM articles WHERE article_id = 123';
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

$titre = $row['titre'];
$texte_article = $row['contenu'];
?>
<title><?php echo htmlspecialchars($titre); ?></title>
</head>
<body>
   <div style="article"><?php echo $article; ?></div>
</body>
</html>
vaut-il mieux faire 2 petites requetes tres rapides ou une grosse
2 petites, mais il ne faut pas pour autant les multiplier inutilement. Tu ne devrais jamais avoir à faire 2 requêtes identiques, si tu dois réutiliser le résultat d'une requête sauve le dans une variable.

par mario » 22 févr. 2006, 16:49

Le plus simple serait de nous donner la structure de tes tables

par J-Nicolas » 22 févr. 2006, 16:49

J'avais oublié de dire bonjour, excusez-moi ! :oops:

Je remercie par avance toutes les personnes qui tenteront de m'aider.

Un seul "select" pour plusieurs "echo"

par J-Nicolas » 22 févr. 2006, 16:41

J'ai une page web où j'effectue 3 requetes distinctes sur la meme table de la meme base. C'est assez fou, mais je ne sais comment faire autrement. C'est pour une page d'actualités, dont toutes les données sont dans une table unique.

Je fais une première requete pour donner le titre et la date de l'article. Fin de la requete.

Ensuite j'ai pas mal de code html pour le menu de la page et la barre de nav.

Deuxiène requete pour donner le titre (une deuxième fois) et l'introduction de l'article. Fin de la requete.

Code html pour la banniere de pub.

Troisiène requete pour donner le texte de l'article proprement dit. Fin de la requete.

Code html pour le bas de la page.

Je pourrais envisager de faire un seul select au début, et de mettre tout mon code ensuite derrière un "echo" unique, mais ça me ferait mettre plus de 30k de code derrière cet "echo", alors c'est peut-etre beaucoup...

Alors si quelqu'un a une idée, car je cherche à optimiser mon site et faire 3 requetes sur une page unique, cela me parait trop ?

D'une manière générale, vaut-il mieux faire 2 petites requetes tres rapides ou une grosse ?