Page 1 sur 1

Probleme utilisation de deux listes

Posté : 19 nov. 2007, 17:29
par caidoz
Bonjours,
j'apprends actuellement le php a l'aide de bouquins et différents site.
Je me suis donné un petit projet a réaliser (cela existe deja tout fais mais aucun intérêt pour l'apprentissage ^^ )
Je suis sur un MMORPG et je souhaite faire un fiche de création de personnage.

J'ai placé dans la base de donnée les classes et les races possible.

J'ai donc utilisé une liste de selection pour le formulaire de création :

raceselect.php

<?php
include ("config.inc");

$connexion = mysql_connect($host, $user, $password)
	or die ("Connexion au serveur impossible");
$db = mysql_select_db($database,$connexion)
	or die ("Selection de la base de données impossible");
$rq = "SELECT DISTINCT raceNom FROM race ORDER BY raceNom";
$result = mysql_query($rq)
	or die ("Exécution de la requête impossible");

// Création d'un formulaire contenant une liste de sélection

echo "<form>
	<select name='raceNom'>\n";

while ($ligne = mysql_fetch_array($result))
{ extract($ligne);
  if ($raceNom<>"")
 echo "<option value='$raceNom'>$raceNom\n";
}
echo "</select>\n";
echo "</form>\n";
?>
et
classeselect.php

<?php
include ("config.inc");

$connexion = mysql_connect($host, $user, $password)
	or die ("Connexion au serveur impossible");
$db = mysql_select_db($database,$connexion)
	or die ("Selection de la base de données impossible");
$rq = "SELECT DISTINCT classeNom FROM classe ORDER BY classeNom";
$result = mysql_query($rq)
	or die ("Exécution de la requête impossible");

// Création d'un formulaire contenant une liste de sélection

echo "<form>
	<select name='classeNom'>\n";

while ($ligne = mysql_fetch_array($result))
{ extract($ligne);
  if ($classeNom<>"")
 echo "<option value='$classeNom'>$classeNom\n";
}
echo "</select>\n";
echo "</form>\n";
?>

Ces deux "sous programme" marche bien et si je teste cachun de leurs coté avec un simple
<?php
$nom = $_POST['raceNom'];
echo "$nom";
?>
J'arrive bien a afficher la selection.

Par contre lorsque je les integre tous les deux dans le formulaire :
<html>
<head>
<title> Création de personnage</title>
</head>
<body>

Affin de créer votre personnage, veuillez saisir :

<form action = "ajoutperso.php" method="POST">
<Table>
<tr>
<td align="right">Son Nom :</td> 
<td><input type="text" name="personom" value="Saisir le nom" size ="15" maxlenght="15"></td>
</tr>
<tr>
<td align="right">Sa Classe :</td>
<td> <?php include("classeSelect.php"); ?></td>
</tr>
<tr>
<td align="right">Sa Race :</td>
<td><?php include("raceSelect.php"); ?></td>
</tr>
<tr>
<td align="right">Son Niveau :</td> 
<td><input type="text" name="persolvl" value="LVL" size ="2" maxlenght="2"></td>
</tr>

<tr>
<td align="right">Sa Résistance Arcane:</td> 
<td><input type="text" name="ra" value="RA" size ="2" maxlenght="2"></td>
</tr>
<tr>
<td align="right">Sa Résistance Feu:</td> 
<td><input type="text" name="rf" value="RF" size ="2" maxlenght="2"></td>
</tr>
<tr>
<td align="right">Sa Résistancen Nature:</td> 
<td><input type="text" name="rn" value="RN" size ="2" maxlenght="2"></td>
</tr>
<tr>
<td align="right">Sa Résistance Givre:</td> 
<td><input type="text" name="persorg" value="RG" size ="2" maxlenght="2"></td>
</tr>
<tr>
<td align="right">Sa Résistance Ombre:</td> 
<td><input type="text" name="persoro" value="RO" size ="2" maxlenght="2"></td>
</tr>
</table>
<input type="submit" value="Valider votre personnage">
</form>
</body>
</html>
Quand je valide, j'affiche
Notice: Undefined index: raceNom in c:\program files\easyphp1-8\www\raid\ajoutperso.php on line 10
Joueur ajouté.
monnom
Guerrier
LVL
RA,RF,RN,RG,RO.
Apres diferent test, il semblerais que ce soit le fait d'integrer les deux liste dans la meme page qui me pose probleme.
J'ai essayé avec d'autre liste cela semble fonctionner tans que je n'en met pas deux dans la meme page par un appel de fichier.
J'ai essayé l'envois en GET pour voir les information et la seconde liste ne figure pas dans "l'adresse".
Donc d'apres moi l'information n'est meme pas transmise, mais je ne comprend pas pourquoi.
J'ai pensé a un conflit de nom mais il semble pas...
Enfin bon depuis hier je cherche mais j'arrive vraiment pas a comprendre ??

Posté : 19 nov. 2007, 18:03
par caidoz
Je viens de tester de simplement deplacer la partie concernant la race au dessus de celle concernant la classe
Notice: Undefined index: classeNom in c:\program files\easyphp1-8\www\raid\ajoutperso.php on line 9
Joueur ajouté.
Amazonne
Elfe de la nuit
60
10,15,20,25,30.
En fait cela interprete toujours le premier choix mais pas le second ??

Posté : 20 nov. 2007, 19:17
par caidoz
Erf :(
Se qui me rassure d'un autre coté c'est que je suis pas le seul à pas comprendre a parement

:D

Posté : 20 nov. 2007, 22:46
par Berzemus
Je vois déjà un problème structurel.

Quand tu fais un include, le code du fichier est traité comme si il était écrit dans le fichier ou il à été inclus.

Donc, à la suite de cela, tu exécute deux fois ceci:
include ("config.inc"); 
De plus les variables portent le même nom. Il y a peut-être un conflit à ce niveau.

Posté : 20 nov. 2007, 23:10
par Calimero
Bonjour,

On peut voir plusieurs problèmes (fautes de typo dans les attributs HTML, redondance de la balise <form>, etc...) dans ton code, peut-être liés à une méconnaissance du fonctionnement d' include() comme Berzemus l'a remarqué. Dans l'intérêt de ton apprentissage, je te conseille vivement de passer ta page au validateur HTML du w3c, il t'aidera à avoir une page qui fonctionne bien et à prendre de bonnes habitudes.

Car il n'y a pas que le PHP dont il faut respecter les règles, il y a aussi l'HTML ;-)

Posté : 21 nov. 2007, 12:42
par caidoz
Merci bcp deja pour ces informations et ce lien :)
Je fais essayer de comprendre :)

(vrai qu'en fait j'avais fais les fichier a part pour tester et en les "fusionnant" j'avais pas penssé que je repaitait tout ^^ )

Posté : 22 nov. 2007, 16:16
par caidoz
Merci bcp vos indications m'ont mis sur la bonne voie.
Tout marche :)