[resolu] Comment éviter une requete inutile ?

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 : [resolu] Comment éviter une requete inutile ?

par fab » 28 sept. 2007, 14:16

Pour ajouter le tag Résolu il ne faut pas éditer le titre du sujet, mais au contraire cliquer sur le bouton Résolu en haut de la page de visualisation du sujet. ce bouton n'est visible que si c'est un sujet dont tu es l'auteur.

par d0m » 28 sept. 2007, 13:41

J'ai pas trop compris pour celle avec do while, je vais regarder la doc
le do while permet simplement d'executer le bloc avant d'incrémenter, de ce fait tu n'effaces pas ton premier élement.

par supercanard » 28 sept. 2007, 13:21

Merci avec toutes ses possibilité je crois que je peut mettre résolu :D

J'ai pas trop compris pour celle avec do while, je vais regarder la doc :wink:

par Berzemus » 28 sept. 2007, 13:17

Ou bien simplement contrôler le nombre de rangées retournées.. ( mysql_num_rows() )
// SELECTION DE TOUTES LES NEWS EN RAPPORT AVEC LE GROUPE
$req_newsfull= mysql_query("SELECT id,titre FROM grunge_news WHERE id_groupe='".$id."' AND statut= 1");

// SI id N'EST PAS NULL ON EXECUTE
if (mysql_num_rows($req_newsfull) > 0) {
    echo '<div id="infosgroupe_news"><h1>'.$data_groupe['nom'].' dans l\'actu</h1><ul>';
    while ($data_newsfull= mysql_fetch_array($req_newsfull)) {
        echo '<li><a href="news_lecture.php?id='.$data_newsfull['id'].'">'.$data_newsfull['titre'].'</a></li>';
    }
    echo '</ul></div>';
}

par d0m » 28 sept. 2007, 13:07

c'est là que le très peu souvent utilisé do...while sert.
do{
    echo '<li><a href="news_lecture.php?id='.$data_newsfull['id'].'">'.$data_newsfull['titre'].'</a></li>';
    } while ($data_newsfull= mysql_fetch_array($req_newsfull));
ton bloc sera executé sur la première valeur (celle que tu as testée) avant de passer aux suivantes

par Thegritch » 28 sept. 2007, 13:05

Salut,

Je pense que si tu fais un truc du genre :

if (!$data_newsfull) { ...

ou encore un

if ( test1 && test2 ) { ...

Mais en regardant des exemples de "mysql_fletch" tu va pouvoir trouver ton bonheur je pense.
Sur les manuels en ligne et leurs commentaires notament.

[resolu] Comment éviter une requete inutile ?

par supercanard » 28 sept. 2007, 13:00

Bonjour,

Voilà j'ai un petit problème, sur lequel j'ai une solution mais je suis sur qu'il y a mieux :

J'ai une requete ($req_newsfull) qui va piocher un id et un titre dans une de mes tables

En premier je voudrais tester si le résultat est vide ou non, car si rien est trouvé dans la table je veut que la suite du code ne s'exécute pas. Donc je teste :
$data_newsfull= mysql_fetch_array($req_newsfull);
if ($data_newsfull['id'] != '') { ...
Si la valeur id est vide tout va bien on s'arrete là.
Par contre si il y a résultat ça se complique car j'ai besoin de faire une boucle :
while ($data_newsfull= mysql_fetch_array($req_newsfull)) {
Sauf que juste avant je viens de faire
$data_newsfull= mysql_fetch_array($req_newsfull);
ça ne marche donc pas

Le solution facile est de faire une autre requête, mais faire une requête en double je n'ai pas envie car je sais très bien que niveau optimisation c'est pas terrible.
Seulement je trouve pas d'autres solutions, j'espère que vous pourrez m'aider :wink:

Bon week end a tous

// SELECTION DE TOUTES LES NEWS EN RAPPORT AVEC LE GROUPE
$req_newsfull= mysql_query("SELECT id,titre FROM grunge_news WHERE id_groupe='".$id."' AND statut= 1");
$data_newsfull= mysql_fetch_array($req_newsfull);

// SI id N'EST PAS NULL ON EXECUTE
if ($data_newsfull['id'] != '') {
	echo '<div id="infosgroupe_news"><h1>'.$data_groupe['nom'].' dans l\'actu</h1><ul>';
	while ($data_newsfull= mysql_fetch_array($req_newsfull)) {
		echo '<li><a href="news_lecture.php?id='.$data_newsfull['id'].'">'.$data_newsfull['titre'].'</a></li>';
	}
	echo '</ul></div>';
}
[/php]