JeuWeb - Crée ton jeu par navigateur
Désolé je ne trouve pas de titre pour mon problème... - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Désolé je ne trouve pas de titre pour mon problème... (/showthread.php?tid=610)

Pages : 1 2


Désolé je ne trouve pas de titre pour mon problème... - fiatt - 06-01-2007

Hello les girls and boys!

Voici mon soucis:

Je désire afficher du texte au sein d'une boucle while. Dans cette boucle il y a le résultat d'un mysql_fetch_assoc.
Là où ça bloque c'est que le texte que je souhaite afficher diffère selon le contenu d'une colonne de mysql_fetch_assoc.
De plus je souhaite faire des requètes SQL dans ce fameux texte.

Je ne pense pas avoir été très clair alors je vous mets le code.

Code PHP :
<?php 
//SELECTIONNER LES MODULES POUR AFFICHAGE
$sql = "SELECT * FROM modules LEFT JOIN couts ON modules.nom_module = couts.nom_objet WHERE categorie = 'modules_production' AND modules.id_joueur = '" . $_SESSION['id_joueur'] . "' ORDER BY nom_module";
$result = mysql_query($sql) or die(mysql_error());

while (
$assoc = mysql_fetch_assoc($result))
{
Jusqu'içi rien de bien méchant, tout roule.

Code PHP :
<?php 
while ($assoc = mysql_fetch_assoc($result))
{
echo
" <tr><td><a href=\"\">" . $assoc['nom_module'] ."<span><table><tr><td>TEXTETEXTETEXTE<br />TEXTETEXTETEXTE DONNEES PRISES DANS UN SELECT</td></tr></table></span></a></td>
<td class=\"donnee\"> "
. $assoc['cout_tml'] ."</td>
<td class=\"donnee\"> "
. $assoc['cout_ste'] ."</td>
<td class=\"donnee\"> "
. $assoc['cout_pol'] ."</td>
<td class=\"donnee\"> "
. $assoc['temps_fabrication'] ."</td>
<td><input type=\"radio\" name=\"module\" value=\""
. $assoc['nom_module'] ."\" /></td>
</tr> "
;
}
mysql_free_result ($result);
mysql_close();
Cette partie est le coeur de mon problème. Je veux mettre du texte entre les balises <span> (comme ce que j'ai mis en majuscule) mais SELON le résultat de $assoc['nom_module'].
Malheureusement la liste des possibilités de $assoc['nom_module'] peut être assez longue alors je me vois mal faire toute une série de if...


RE: Désolé je ne trouve pas de titre pour mon problème... - Chewbacca - 06-01-2007

essaye la méthode switch, même si elle est un peu moins optimisée :
http://www.siteduzero.com/tuto-3-100-1-les-conditions.html#ss_part_2


RE: Désolé je ne trouve pas de titre pour mon problème... - fiatt - 06-01-2007

Chewbacca a écrit :essaye la méthode switch, même si elle est un peu moins optimisée :
http://www.siteduzero.com/tuto-3-100-1-les-conditions.html#ss_part_2
Je connais switch et cela reviens au même que de faire des if, cad devoir citer toutes les possibilités, ce que je ne veux pas.

Il y aurais peut-être la solution d'inclure un fichier, si je le nomme comme $assoc['nom_module']?
Et dans ce fichier je pourrais mettre des requètes sql?


RE: Désolé je ne trouve pas de titre pour mon problème... - Chewbacca - 06-01-2007

Désolé, je crois que ton problème dépasse mes compétences.
J'espère que tu en trouveras la solution, mais pour ma part je ne peux pas t'aider
Sur ce, bon courage et bonne chance ;-)


RE: Désolé je ne trouve pas de titre pour mon problème... - Shidame - 06-01-2007

Créé une variable de type array avec chacunes de tes possibilités et dont la clef est $assoc['nom_module'].

Ca devrait marcher, j'espère avoir été clair et surtout avoir cerné ton problème.


RE: Désolé je ne trouve pas de titre pour mon problème... - fiatt - 06-01-2007

Merci tout le monde pour votre aide.
Je vais essayer de développer l'idée du include demain, je vous tiens au courant.


RE: Désolé je ne trouve pas de titre pour mon problème... - fiatt - 07-01-2007

Je viens de faire un premier essai et cela semble prometteur.

Voici ce que j'ai fais:
Code PHP :
<?php 
while ($assoc = mysql_fetch_assoc($result))
{

echo
" <tr><td><a href=\"\">" . $assoc['nom_module'];
include_once
"./includes/".$assoc['nom_module'].".php";
echo
"<td class=\"donnee\"> " . $assoc['cout_tml'] ."</td>
<td class=\"donnee\"> "
. $assoc['cout_ste'] ."</td>
<td class=\"donnee\"> "
. $assoc['cout_pol'] ."</td>
<td class=\"donnee\"> "
. $assoc['temps_fabrication'] ."</td>
<td><input type=\"radio\" name=\"module\" value=\""
. $assoc['nom_module'] ."\" /></td>
</tr> "
;
}
Ca c'est pour le script principal.

J'ai créer deux fichiers qui ont pour nom deux possibilités de $assoc['nom_module'] et j'y ai mis ca:

Code PHP :
<?php 
include './mysql_connect.php';


$sql25 = "SELECT id_joueur FROM joueurs WHERE pseudo = 'test6' ";
$result25 = mysql_query($sql25) or die(mysql_error());
$assoc25 = mysql_fetch_assoc($result25);

echo
" <span><table><tr><td>blablabla TEST numero 1.<br />le joueur est connu de Mysql gràce au numéro: " . $assoc25['id_joueur'] . "</td></tr></table></span></a></td> ";

mysql_free_result ($result25);

A première vue ce système fonctionne. On verra les détails après une nuit de sommeil bien mérité.


RE: Désolé je ne trouve pas de titre pour mon problème... - NicoMSEvent - 08-01-2007

attention aux problemes de sécurité...
vérifie que personne ne puisse mettre comme 'nom_module' quelque chose du genre : '../../../nom_fichier_systeme'


RE: Désolé je ne trouve pas de titre pour mon problème... - gtsoul - 08-01-2007

pourquoi tu n'utilises pas des classes ?
tu ferais toujours un require_once($nomdetaclasse); avec recherche d'expression (/ ou \ ou .) pour le hack, tu instancies cette classe
et tu ferais appel à une méthode pour afficher le contenu du span
toutes les classes auraient une méthode d'un même nom et tout dépendrait du typage de ton instance

je trouve que c'est plus propre que d'un require au plein milieu du html
surtout que tu peux à tout moment avoir besoin de récupérer des renseignements propres à la valeur de $assoc['nom_module']


RE: Désolé je ne trouve pas de titre pour mon problème... - fiatt - 08-01-2007

oh là! doucement! lol

@gtsoul:
Si je comprend bien tu parles en POO. N'ayant pour l'instant que survoler la notion de POO, je suis totalement incompétent dans ce domaine.

Pour ce qui est de la sécurité des scripts, je n'ai absolument aucune connaissances dans ce domaine non plus. Pour l'instant je code mon projet comme je le peux et c'est déjà pas mal.
Je pensais voir la sécurité une fois que j'aurais estimé l'avancement du projet suffisant car je n'ai pas beaucoup de temps à y consacrer (1/2 journée par semaine et pas toutes les emaines). A cette fin je demanderais probablement l'aide d'une bonne âme en privé car je lui passerais les scripts complets.
Ce jour étant pour l'instant loin d'arriver, je prend du plaisir en codant et en approfondissant mes connaissances en PHP/MYSQL.
La mise en ligne ne fait pour l'instant pas partie de mes objectifs à court termes, alors je ne veux pas perdre trop de temps à stagner sur tel ou tel problème de sécurité.

Je sais bien que ce n'est pas la bonne méthode pour être efficace mais je souhaite avant tout prendre du plaisir et me dire: Cool! cette page fonctionne exactement comme je le veux!

J'espère néanmoins pouvoir un jour mettre en ligne mon projet qui ,pour moi et aux vues de mes capacités, est plutôt ambitieux.