Fork me on GitHub






Requête sql dans des blocks personnalisés
Régulier
Inscrit: 27/01/2006 23:21
De Puteaux
Messages: 214
Bonjour,

j'ai fait une requête sql dans des blocks personnalisés en php pour afficher un article,
cela me permet de mettre des blocks à différents endroits que je peux éditer avec mon éditeur préféré Tinyeditor, comme par exemple une page d'intro sur le site ou aussi une par module.

La requête fonctionne très bien mais la syntaxe n'est par parfaite alors je vous la soumet pour correction et optimisation.

Merci d'avance.

Xavier

global $xoopsDB;
$sql "SELECT hometext, bodytext FROM ".$xoopsDB->prefix("stories")." where storyid='23'";
$result=$xoopsDB->query($sql);
while (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br>';
}

Posté le : 20/10/2006 19:27
Partager Twitter Partagez cette article sur GG+
Re: Requête sql dans des blocks personnalisés
Régulier
Inscrit: 27/01/2006 23:21
De Puteaux
Messages: 214
Bonjour,

Je vois que personne n'a eu d'idées pour optimiser ce code.
Je vais aller traîner sur d'autres forums plus orientés sur le php et sql.

Je remercie la vingtaine de personnes qui ont jeté un coup d'oeil à mon Post.

Xavier

Posté le : 24/10/2006 22:33
Partager Twitter Partagez cette article sur GG+
Re: Requête sql dans des blocks personnalisés
Aspirant
Inscrit: 30/09/2005 11:22
Messages: 40
Tout dépend de ce que tu appelles optimiser. En soit ta requete est extremement simple, je vois pas comment l'améliorer davantage.

Apres, si tu souhaites en faire autre chose, precise le. La seule optimisation que je vois c'est le mettre le storyid dans une variable. ça te permet de modifier bien plus rapidement ton code (et encore dans ce cas, ce n'est pas une optimisation)

Posté le : 17/11/2006 16:49
Partager Twitter Partagez cette article sur GG+
Re: Requête sql dans des blocks personnalisés
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
tu peux corriger la sortie du echo deja :
global $xoopsDB;
$sql "SELECT hometext, bodytext FROM ".$xoopsDB->prefix('stories')." where storyid='23'";
$result=$xoopsDB->query($sql);
while (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br />';
}


Tu peux effectivement coller ton 23 dans une variable.
a priori si je me souviens bien de la table tu attrapes par l'id donc ta requete est optimisé tu peux pas faire plus rapide et cela te ramene une seule ligne de toutes façons donc tu peux virer la boucle while et faire juste un test
global $xoopsDB;
$sql "SELECT hometext, bodytext FROM ".$xoopsDB->prefix('stories')." where storyid='23'";
$result=$xoopsDB->query($sql);
if (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br />';
}


En optimisant un peu plus on arrive a cela aussi
global $xoopsDB;
$sql 'SELECT hometext, bodytext FROM '.$xoopsDB->prefix('stories').' where storyid= 23 ';
$result=$xoopsDB->query($sql);
if (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br />';
}

storyid c'est du numerique ca sert a rien de lui passer '23' (une chaine de caractere). Tu obliges alors MySQL a faire un cast de la chaine de caractere vers un numerique (il perd un petit peu de temps)

Et avec une variable ca donne ca :
global $xoopsDB;
$storyid 23;
$sql 'SELECT hometext, bodytext FROM '.$xoopsDB->prefix('stories').' where storyid= '$storyid;
$result=$xoopsDB->query($sql);
if (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br />';
}

la variable $storyid peut etre initialise par un parametre d'une fonction ou autre, la elle sert pas a grand chose comme cela mais par contre sous forme de fonction comme au dessous ca peut etre utile :
function affiche($storyid ){
    global 
$xoopsDB;
    
$sql 'SELECT hometext, bodytext FROM '.$xoopsDB->prefix('stories').' where    storyid= '$storyid;
    
$result=$xoopsDB->query($sql);
    if (list(
$hometext$bodytext) = $xoopsDB->fetchRow($result)) {
    echo 
''.$hometext.''.$bodytext.'<br />';
    }
}

Apres comme on n'a pas vraiment d'info sur ce que tu veux faire, si tu veux afficher dans un template ou autre etc... on peut pas dire grand chose sur un code de 5 lignes

Posté le : 17/11/2006 17:24
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

89 Personne(s) en ligne (69 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 89 | Plus ...