PHPNET Assistance

Support et Entraide PHPNET => Forum de programmation => Discussion démarrée par: jppj le 01 avril 2005 à 22:53:30

Titre: Lister Une Base
Posté par: jppj le 01 avril 2005 à 22:53:30
Bon, une explication la plus clair et simple possible :

J'ai une base SQL ayant une table utilisateurs, on trouve dans cetta table (utile pour le code) :
- pseudo
- equipe
- url

Mon but est de lister les joueurs dans un tableau celon leur équipe comme :
(http://www.holonet-system.com/ex.jpg)

Donc dans la base de donnée, dans les enregistements pour équipe il est donc indiqué dedans :
equipe 1
equipe 2
equipe 3
equipe 4

J'arrive sans problème à afficher pour une équipe en m'aidant du code de phpdebutant :

<?php
// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql="SELECT pseudo, equipe, url FROM utilisateurs WHERE equipe = equipe 1' ";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
echo '<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a</div> ';
    }

// on ferme la connexion à mysql
mysql_close();
?>

Mais bon, je m'imagine mal remettre 4 fois ce code, est ce que vous pouvez m'indiquez comment je peux faire s'il vous plaît ?  :(  
Titre: Lister Une Base
Posté par: NICO100 le 02 avril 2005 à 01:04:25
<?php
// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL  sans preciser l'equipe mais en l'ordonnant
$sql="SELECT pseudo, equipe, url FROM utilisateurs ORDER By equipe ASC";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

//On lit la premiere entrée
$data = mysql_fetch_assoc($req);
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data)
{
    //On vient de changer d'equipe (ou la premiere)
    $eq = $data['equipe'];
    echo "Equipe $eq<br>";
    //Boucle sur l'equipe $eq
    while($eq==$data['equipe'])
    {
    // on affiche les informations de l'enregistrement en cours
    echo '<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a</div> ';
         //joueur suivant
         $data = mysql_fetch_assoc($req);
    }
}

// on ferme la connexion à mysql
mysql_close();
?>

Sans tests!
Titre: Lister Une Base
Posté par: jppj le 02 avril 2005 à 10:04:38
Ce que tu ùe donnes comme code fonctionne impeccablement, mais je ne vois pas comment diviser les équipes dans mes tableaux.  ;)  
Titre: Lister Une Base
Posté par: Ice le 02 avril 2005 à 11:10:01
Je verrai plutot comme ca :
<?php
// on initialise les équipes
$equipe1 = "";
$equipe2 = "";
$equipe3 = "";
$equipe4 = "";

// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql="SELECT pseudo, equipe, url FROM utilisateurs WHERE equipe = equipe 1' ";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
   {
   // on affiche les informations de l'enregistrement en cours
SWITCH ($data['equipe'])
{
  CASE "1": $equipe1.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
  CASE "2": $equipe2.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
  CASE "3": $equipe3.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
  CASE "4": $equipe4.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
  default: break;
}
   }

// on ferme la connexion à mysql
mysql_close();

// on affiche le tableau
echo "<table border=0><tr>
<td>Equipe 1</td><td>Equipe 2</td>
</tr><tr>
<td>$equipe1</td><td>$equipe2</td>
</tr></table>
<br><br>
<table border=0><tr>
<td>Equipe 3</td><td>Equipe 4</td>
</tr><tr>
<td>$equipe3</td><td>$equipe4</td>
</tr></table>
";
?>
Titre: Lister Une Base
Posté par: jppj le 02 avril 2005 à 11:33:00
Euh Ice, tu es sûr pour la requette ?

// on crée la requête SQL
$sql="SELECT pseudo, equipe, url FROM utilisateurs WHERE equipe = equipe 1' ";
Titre: Lister Une Base
Posté par: Ice le 02 avril 2005 à 11:54:17
Oups , j'avais pas fait gaffe au WHERE :
// on crée la requête SQL
$sql="SELECT pseudo, equipe, url FROM utilisateurs";
Titre: Lister Une Base
Posté par: jppj le 02 avril 2005 à 12:39:05
Je pense qu'il doit y avoir quelque chose que je ne comprend pas ton le code.

Dans ma base de données, dans les enregistrements, j'ai comme :
pseudo         equipe      url
Ben             equipe1     xxx
JBB             equipe2     xxx
Darkklem    equipe1     xxx

J'ai exactement repris ton code, et il ne m'affiche que ca :
(http://www.holonet-system.com/ex2.jpg)
Titre: Lister Une Base
Posté par: Ice le 02 avril 2005 à 13:39:37
Faut voir au niveau des CASE
Si equipe est noté : equipe1 alors , faire le code qui suit
si equipe est noté : equipe 1  , remplacer equipe1 par equipe 1 juste apres les CASE
<?php
// on initialise les équipes
$equipe1 = "";
$equipe2 = "";
$equipe3 = "";
$equipe4 = "";

// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql="SELECT pseudo, equipe, url FROM utilisateurs' ";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
  {
  // on affiche les informations de l'enregistrement en cours
SWITCH ($data['equipe'])
{
 CASE "equipe1": $equipe1.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
 CASE "equipe2": $equipe2.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
 CASE "equipe3": $equipe3.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
 CASE "equipe4": $equipe4.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
 default: break;
}
  }

// on ferme la connexion à mysql
mysql_close();

// on affiche le tableau
echo "<table border=0><tr>
<td>Equipe 1</td><td>Equipe 2</td>
</tr><tr>
<td>$equipe1</td><td>$equipe2</td>
</tr></table>
<br><br>
<table border=0><tr>
<td>Equipe 3</td><td>Equipe 4</td>
</tr><tr>
<td>$equipe3</td><td>$equipe4</td>
</tr></table>
";
?>
Titre: Lister Une Base
Posté par: jppj le 02 avril 2005 à 13:47:06
Ah oki, désolé, je n'avais pas compris. :ph34r:, ca marche impeccablement !

Une fois n'est pas coutume ==> Encore merci de ton aide.  
Titre: Lister Une Base
Posté par: Ice le 02 avril 2005 à 13:47:12
Rien à voir , mais vérifie l'adresse de ton site dans ton profil :D
Ca serait plutot : http://www.parcoursjedi.com/ (http://www.parcoursjedi.com/)  :P  
Titre: Lister Une Base
Posté par: jppj le 02 avril 2005 à 13:51:55
Oui à une époque je travaillais avec le webmaster du Parcours du Jedi, mais travailler avec quelqu'un c'est toujours un peu dur et on s'est enguelé.

Ca faisait longtemps que je n'avais pas mis mon profil à jour. Je viens de le remettre au goût du jour  B)  
Titre: Lister Une Base
Posté par: jppj le 06 avril 2005 à 16:55:05
Désolé pour le double post...

Je suis en train de faire évoluer un peu le système d'affichage.

Donc j'ai toujours mes équipes, mais à une nuance prés, je veux que les membres s'affichent si le champ du joueur "valide" est égale à 1.

Donc je pense qu'il faut que je mette quelque part un "&&", mais où ?  :(  
Titre: Lister Une Base
Posté par: Ice le 06 avril 2005 à 18:27:01
je ne comprends pas ce que tu veux dire par :
Citer
les membres s'affichent si le champ du joueur "valide" est égale à 1.

pour l'affichage, ca se passe ici :
// on affiche le tableau
echo "<table border=0><tr>
<td>Equipe 1</td><td>Equipe 2</td>
</tr><tr>
<td>$equipe1</td><td>$equipe2</td>
</tr></table>
<br><br>
<table border=0><tr>
<td>Equipe 3</td><td>Equipe 4</td>
</tr><tr>
<td>$equipe3</td><td>$equipe4</td>
</tr></table>
";
?>
Donc, avec des if .... tu affiches ou non.
Titre: Lister Une Base
Posté par: jppj le 06 avril 2005 à 18:53:53
Pour savoir si ils s'affichent ou pas c'est au cas par cas.

J'ai un peu de mal à voir où tu veux que je le mette  :huh:, désolé, je ne suis pas très doué.
Titre: Lister Une Base
Posté par: smilynet le 06 avril 2005 à 19:24:35
ici je suppose :

Citer
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
 {
 // on affiche les informations de l'enregistrement en cours
if($data['valide']==1){
SWITCH ($data['equipe'])
{
CASE "equipe1": $equipe1.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
CASE "equipe2": $equipe2.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
CASE "equipe3": $equipe3.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
CASE "equipe4": $equipe4.='<div align="center"><a href="http://jeu.holonet-system.com/'.$data['url'].'">'.$data['pseudo'].'</a></div> '; break;
default: break;
}
}
 }
ne pas oublier de fermer ton if
Titre: Lister Une Base
Posté par: Ice le 06 avril 2005 à 19:29:51
La requete est alors, dans le cas du code de smilynet:
$sql="SELECT pseudo, equipe, url, valide FROM utilisateurs";
Titre: Lister Une Base
Posté par: jppj le 06 avril 2005 à 21:02:59
Vous êtes des perles les gars, merci d'avoir la patience d'aider un p'tit noob débutant du PHP...

Ca marche impec vos codes !
Titre: Lister Une Base
Posté par: Ice le 06 avril 2005 à 22:03:23
Plus rapide , à partir du code de départ :
$sql="SELECT pseudo, equipe, url FROM utilisateurs WHERE valide=1";Un gain de vitesse assez important si tu as bcp d'utilisateurs :)
Titre: Lister Une Base
Posté par: jppj le 06 avril 2005 à 22:05:29
En fait ca n'irait pas car en bah de ma page j'affiche tous les joueurs dont le compte n'est pas validé.
Titre: Lister Une Base
Posté par: jppj le 09 avril 2005 à 10:22:50
Je suis à nouveau confronté à un problème.

C'est au sujet de la partie du code qui traitre l'enregistrement d'un membre.

Le code du formulaire est le suivant :
<FORM METHOD="POST" ACTION="?page=etape03">
<input class="form" name="login" type="text" size="30"> Pseudo<br>
<input class="form" name="mdp" type="text" size="30"> Mot de passe<br>
<input class="form" name="mel" type="text" size="30"> Adresse Mél<br>
<input class="form" name="msn" type="text" size="30"> Adresse MSN Messenger<br>
select class="form" name="faction">
      <option>Ancienne R&eacute;publique</option>
      <option>Consortium Imp&eacute;rial</option>
      <option>Empire Galactique</option>
      <option>Nouvelle R&eacute;publique</option>
    </select> Faction<br>
<select class="form" name="equipe">
      <option>Neutre</option>
      <option>En attente</option>
      <option>Cr&eacute;er une &eacute;quipe</option>
        </select> Rejoindre une &eacute;quipe<p>
<INPUT class="form" TYPE="submit" VALUE="&lt;--Valider--&gt;">
</FORM>


Jusque là tout va bien.


Le code de la page "?page=etape03" :
<?php
// on se connecte à MySQL
$db = mysql_connect('xxx', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// Récupération des champs formulaires
$login=$_POST["login"];
$mdp=$_POST["mdp"];
$mel=$_POST["mel"];
$msn=$_POST["msn"];
$faction=$_POST["faction"];
$equipe=$_POST["equipe"];

// Vérification validité du mél
$mel = $_POST['mel'];
$point = strpos($mel,".");
$aroba = strpos($mel,"@");

if($point=='') { echo "Votre email doit comporter un <b>point</b>"; }
elseif($aroba=='') { echo "Votre email doit comporter un <b>'@'</b>"; }

// Envoi des informations vers la BDD si tout est bon
else{
$table="utilisateurs";
$sql="INSERT INTO $table(id, pseudo, mdp, mel, msn, faction, equipe)
       VALUES('', '$login', '$mdp', '$mel', '$msn', '$faction', '$equipe')";
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}

// Affichage d'information
echo "<p>
<i><b>Important :</b></i><br>
Le message suivant n'est valide que si il n'y a aucun message d'erreur ci-dessus.<p>
Votre inscription a bien &eacute;t&eacute; r&eacute;alis&eacute;e. Vous devriez normallement voir votre pseudo dans la liste des membres &quot;A valider&quot; dans la page &quot;Membres&quot;.<br>
Si ce n'est pas le cas, contacter le Ma&icirc;tre du Jeu, NE SURTOUT PAS refaire votre inscription.<p>
Il vous sera envoyé dans les heures à venir une confirmation par mél de votre inscription par le Président du Sénat avec toutes les informations nécessaires à la gestion de votre compte.
";
}
mysql_close($db);
?>


Jusque là ca fonctionne encore à merveille, mais dans ce code je voudrais vérifier si le pseudo que veut le joueur n'existe pas déjà dans la base de données.

J'avais pensé au code :
// Récupération des pseudos
while($data = mysql_fetch_assoc($req))
{
if($val["pseudo"]=="$login") { echo "Le pseudo que vous est demandé est déjà pris, veuillez en choisir un autre"; }
}

Mais ca merde à un niveau, surement avec le if où à moins que je ne le code soit pas du tout adapté à la situation.

J'ai mis dans le code en haut, déjà les informations pour récupérer les pseudos de la BDD :
// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';


Si je commence ) vous enkikinet, n'hésitez pas à me le dire  :unsure:
Titre: Lister Une Base
Posté par: Ice le 09 avril 2005 à 10:39:39
<?php
// on se connecte à MySQL
$db = mysql_connect('xxx', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// Récupération des champs formulaires
$login=$_POST["login"];
$mdp=$_POST["mdp"];
$mel=$_POST["mel"];
$msn=$_POST["msn"];
$faction=$_POST["faction"];
$equipe=$_POST["equipe"];

// Vérification validité du mél
$mel = $_POST['mel'];
$point = strpos($mel,".");
$aroba = strpos($mel,"@");

$test_pseudo = "SELECT id from utilisateurs WHERE pseudo='$login'";
$result_pseudo = mysql_query($test_pseudo);
$nb_pseudo = mysql_num_rows($result_pseudo);

if($point=='') { echo "Votre email doit comporter un <b>point</b>"; }
elseif($aroba=='') { echo "Votre email doit comporter un <b>'@'</b>"; }
elseif ($nb_pseudo>0) { echo "Le pseudo que vous est demandé est déjà pris, veuillez en choisir un autre"; }

// Envoi des informations vers la BDD si tout est bon
else{
$table="utilisateurs";
$sql="INSERT INTO $table(id, pseudo, mdp, mel, msn, faction, equipe)
      VALUES('', '$login', '$mdp', '$mel', '$msn', '$faction', '$equipe')";
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}

// Affichage d'information
echo "<p>
<i><b>Important :</b></i><br>
Le message suivant n'est valide que si il n'y a aucun message d'erreur ci-dessus.<p>
Votre inscription a bien &eacute;t&eacute; r&eacute;alis&eacute;e. Vous devriez normallement voir votre pseudo dans la liste des membres &quot;A valider&quot; dans la page &quot;Membres&quot;.<br>
Si ce n'est pas le cas, contacter le Ma&icirc;tre du Jeu, NE SURTOUT PAS refaire votre inscription.<p>
Il vous sera envoyé dans les heures à venir une confirmation par mél de votre inscription par le Président du Sénat avec toutes les informations nécessaires à la gestion de votre compte.
";
}
mysql_close($db);
?>

Titre: Lister Une Base
Posté par: jppj le 09 avril 2005 à 10:47:34
Merci de ta patience, ca fonctionne à merveille.
Titre: Lister Une Base
Posté par: Ice le 09 avril 2005 à 10:53:03
Pour revenir à ton formulaire , pour la ligne :
<input class="form" name="mdp" type="text" size="30"> Mot de passe<br>Il serait ptet mieux que le mot de passe soit caché :)
<input class="form" name="mdp" type="password" size="30"> Mot de passe<br>
Titre: Lister Une Base
Posté par: jppj le 09 avril 2005 à 11:52:51
Yep, je comptais le faire lorsque je finaliserai le site mais en même temps Je pense que mettrai aussi tapper deux fois le mot de passe pour être certain que les membres ne fassent pas d'erreur.

Côté sécurité ca suffira ?
Titre: Lister Une Base
Posté par: Ice le 09 avril 2005 à 12:18:44
Pour les mots de passe oui...
Apres , faut voir niveau sécurité quand tu fais : ?page=etape03

et si tu fais : include $page.".php";
Et si tu fais ca , je crois que c pas tres sécurisé
Titre: Lister Une Base
Posté par: jppj le 25 avril 2005 à 13:48:53
J'ai le droit à la traduction pour débutant de ce que tu viens de dire ?  :huh:

J'utilise des pseudos frame avec les "case", comme indique sur le site de phpdubutant.
Titre: Lister Une Base
Posté par: Ice le 25 avril 2005 à 20:51:55
ok, avec des Case , c'est mieux :)
Titre: Lister Une Base
Posté par: jppj le 25 avril 2005 à 23:17:03
On m'avait rabaché d'utiliser des Cases, vu que le site que je fais est petit je peux sans problème utiliser les pseudos frames type Case.

Je vous monterai le résultat quand ca sera fini, mais pour le moment ca s'annonce plutot pas mal !


Bon, j'ai voulu régler cette histoire de mot de passe, donc mon formulaire j'ai mis :
 <tr>
    <td><input class="form" name="mdp" type="password" size="30"></td>
    <td>Mot de passe</td>
  </tr>
  <tr>
    <td><input class="form" name="mdp2"  type="password" size="30"></td>
    <td>Mot de passe (v&eacute;rification) </td>
  </tr>

J'ai bien mis dans la récupération des données du formulaire :
$mdp=$_POST["mdp"];
$mdp2=$_POST["mdp2"];

Ensuite dans la partie qui vérifie toutes les erreurs possibles j'ai ajouté le code :
elseif ($mdp <> $mdp2) { echo "Vous avez entré deux mots de passe différents, veuillez recommencer votre inscription."; }
Quand je valide le formulaire j'ai le droit à l'erreur :
Citer
Erreur SQL !

Query was empty

10 contre 1 que je me suis glandé quelque part  :(  
Titre: Lister Une Base
Posté par: Ice le 26 avril 2005 à 08:20:59
Ton code semble correct.
Mais tu as une erreur sql, et dans ce que tu nous montres, il n'y a pas de sql.

D'apres ton erreur, tu dois surement faire un mysql_query de qq chose qui n'existe pas.
Titre: Lister Une Base
Posté par: jppj le 26 avril 2005 à 09:24:14
J'avoue que je ne comprend pas trop, je viens de faire un copier collé du code que tu m'avais donné avant, j'ai rerajouté les infos pour la vérification du mot de passe est ca marche impec...

Surement un petit truc qui s'était modifié.

Désolé du dérangement...
Titre: Lister Une Base
Posté par: jppj le 30 mai 2005 à 00:18:28
Je suis maintenant confronté à un autre problème pour lister ma base.

Je voudrais prendre un champ de ma base puis le lister un dans un menu déroulant...

J'avais pensé au code suivant :
<?php
// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxxxx',$db);

// on crée la requête SQL
$sql = 'SELECT pla FROM planetes ORDER BY pla';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement

while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
    '<option>'.$data['pla'].'</option>';
    };
// on ferme la connexion à mysql
mysql_close();
?>
<form name="form2" method="post" action="">
  <select name="select">
    <? echo $op ?>
  </select>
</form>

Mais le problème c'est que je ne sais pas où mettre le : $op = xxx;

Auriez-vous une solution à ce problème ?
Titre: Lister Une Base
Posté par: Ice le 30 mai 2005 à 07:58:31
Pour reprendre ce que tu as donné :<?php
// on se connecte à MySQL
$db = mysql_connect('cl2-sql1', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxxxx',$db);

// on crée la requête SQL
$sql = 'SELECT pla FROM planetes ORDER BY pla';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
$op="";
while($data = mysql_fetch_assoc($req))
   {
   // on affiche les informations de l'enregistrement en cours
   $op.= "<option>".$data['pla']."</option>\n";
   };
// on ferme la connexion à mysql
mysql_close();
?>
<form name="form2" method="post" action="">
 <select name="select">
   <? echo $op ?>
 </select>
</form>
Titre: Lister Une Base
Posté par: jppj le 30 mai 2005 à 10:13:42
Oki super c'est bon.

J'ai maintenant quasiment terminé mon projet, je vais bientôt (Septembre je pense) pouvoir vous le montrer.
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 14:33:36
Bon, j'ai pris un peu de retard, ce qui fait que je suis obligé de repousser l'ouverture du jeu que je réalise pour Octobre.

Mais là je suis face à un nouveau problème. Les membres doivent réaliser leurs achats via un formulaire qui sera ensuite envoyer à une personne qui modifiera la page du membre.

Le pseudo du membre est indiqué au début de la page sous la forme :
$pseudo="membrex";
Dans une table SQL, j'ai la liste de toutes les planètes avec indiqué leur pseudo dans un champ.
Pour Clairement la table se présente sous la forme :
> ID
> pla
> x
> y
> secteur
> propri

Donc au debut de ma page j'ai une requête SQL qui me permet de relever le nom des planètes d'un même joueur :

<?php
// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri="pseudo'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
Euh là je bloque
    }

// on ferme la connexion à mysql
mysql_close();
?>

Bon on va dire que pour ce joueur il nous trouve deux planètes :
> Planète1
> Planète 2

Mon but après, et que mon formulaire s'affiche de la sorte :
Accès à la demonstration de la forme du formulaire (http://holonet-system.com/essai/demonstration)

Enfin surtout que ca me mette pour les "name" du "input" des noms différents pour éviter que ca bug magistralement quand je valide mon fomulaire.

Quelqu'un peut m'aider ? C'est en gros mon dernier soucis technique et après ca j'aurais quasiment terminé  :(  
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 14:56:27
Pas tout compris.
Déjà, une tite erreur d'apostrophe :
$sql="SELECT pla, propri FROM planetes WHERE propri='pseudo'";
Ensuite, l'unité et le prix par unité, c'est fixe ? (je suppose que oui)
bon , je sais pas si c'est ca que tu veux, tu me diras :

<?php
// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='pseudo'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();


// On affiche le tableau :
echo "Economie<br>";
echo "<table border='0'>
  <tr>
    <td>Unité</td>
    <td>Prix à l'unité</td>
    <td>Nombre - Destination</td>
  </tr>
  <tr>
    <td>Astroport</td>
    <td>50</td>
    <td>";
while($data = mysql_fetch_assoc($req))
   {
     echo "<input type='text' name='astroport_".$data[pla]."'> pour ".$data[pla]."
        <br>";
   }
echo  "</td>";
echo "</tr>
    <td>Cargo</td>
    <td>25</td>
    <td>";
while($data = mysql_fetch_assoc($req))
   {
     echo "<input type='text' name='cargo_".$data[pla]."'> pour ".$data[pla]."
        <br>";
   }
echo "</td>";
echo "</tr>";
// ...... Idem pour le reste


?>
Et ensuite ,tu récup les valeurs par (du style) :
$astroport_planete1,$astroport_planete2,$astroport_planete3
$cargo_planete1,$cargo_planete2,$cargo_planete3 etc...
 
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 15:26:47
Yep, c'est exactement ce qu'il me fallait, mais apparemment il y a un petit problème : il m'affiche bien les deux champs de formulaire pour l'astroport mais il semble qu'il ne veut rien entendre du cargo.

J'ai modifié comme code (j'ai mis directement un pseudo pour aller plus vite) :
// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='Ben'";

Et aussi à la fin pour finir le tableau avec un </table>:
echo "</td>";
echo "</tr>";
echo "</table>";
// ...... Idem pour le reste

?>

Je te passe le code de la page pour que tu vois à peu près ce qu'il met comme résultat : Accès à la page. (http://holonet-system.com/essai/nv.php)

P.S. : Ooops, merci pour le '
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 15:36:01
ok , c'est ce que je pensais qu'il allait se produire ... Je suis pas très amis avec les mysql_fetch_ :D
<?php
// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='pseudo'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();



$nb_result = @mysql_num_rows($req);


// On affiche le tableau :
echo "Economie<br>";
echo "<table border='0'>
 <tr>
   <td>Unité</td>
   <td>Prix à l'unité</td>
   <td>Nombre - Destination</td>
 </tr>
 <tr>
   <td>Astroport</td>
   <td>50</td>
   <td>";
for ($i=0;$i<$nb_result;$i++)
  {
    $planete = @mysql_result($req,$i,pla);
    echo "<input type='text' name='astroport_".$planete."'> pour ".$planete."
       <br>";
  }
echo  "</td>";
echo "</tr>
   <td>Cargo</td>
   <td>25</td>
   <td>";
for ($i=0;$i<$nb_result;$i++)
  {
     $planete = @mysql_result($req,$i,pla);
   echo "<input type='text' name='cargo_".$planete."'> pour ".$planete."
       <br>";
  }
echo "</td>";
echo "</tr>";
// ...... Idem pour le reste
echo "</table>";


?>
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 15:58:33
Oki super ca fonction à merveille, merci.

Mais en fait je crois que j'ai magistralement merdé.  :o

Car ici pour la récupération des valeurs du formulaire, je me retrouve avec des "name" des "input" qui sont on va dire "aléatoire" car jusqu'à aujourd'hui j'ai toujours travaillé pépérement avec comme méthode de récupération "$xxx = $_POST['xxxx'];"
Tu ne connaîtrais pas un site qui donne pas mal d'astuces pour ce qui est de la récupération des valeurs d'un formulaire ?  :unsure:  
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 16:14:45
Citer
Tu ne connaîtrais pas un site qui donne pas mal d'astuces pour ce qui est de la récupération des valeurs d'un formulaire ?  :unsure:
Nope, je n'en connais pas.
C'est sur que la récupération des variables ne va pas être facile.
Si tu as peu d'unité et peu de planète , tu peux les faire une par une.
Sinon, il doit y avoir moyen de coder ca, mais c'est un peu plus compliqué.

<?php

// Il faudrait récup le pseudo à partir du formulaire
....

// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='pseudo'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$nb_result = @mysql_num_rows($req);

for ($i=0;$i<$nb_result;$i++)
{
   $variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
   $variableB = "astroport_".$$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
   $$variableB = $_POST[$$variableB];

   $variableA = @mysql_result($req,$i,'pla');
   $variableB = "cargo_".$$variableA;
   $$variableB = $_POST[$$variableB];

.....

}

Bref, voilà , je suis pas sûr du résultat .... ca peut marcher , sait on jamais :)

EDIT : Si ca marche , il faudrait faire ce que tu veux faire pdt le traitement de ces variables, pour ne pas avoir à les réutiliser par la suite
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 16:22:02
Dail dail dail, ca tourne autour des 38 unités  :lol:

Je regarderai ca demain matin à tête reposée. ;)

Ah oui aussi, une tite question, j'ai pu observer ca dans tes codes :
echo "Economie<br>";
echo "<table border='0'>
<tr>

Ca ne marche pas aussi bien si on met :

echo "Economie<br>
<table border='0'>
<tr>
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 16:25:14
Pareil , sauf que qd j'ai ecris le code au départ , j'avais oublié economie , c'est pour cela que je l'ai rajoutté ensuite.
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 18:13:40
Citer
EDIT : Si ca marche , il faudrait faire ce que tu veux faire pdt le traitement de ces variables, pour ne pas avoir à les réutiliser par la suite
Je viens juste d'apercevoir ton edit et euh, je n'ai pas très bien compris ce que tu as dit.
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 18:37:22
qd je fais :
for ($i=0;$i<$nb_result;$i++)
{
  $variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
  $variableB = "astroport_".$$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
  $$variableB = $_POST[$$variableB];

  $variableA = @mysql_result($req,$i,'pla');
  $variableB = "cargo_".$$variableA;
  $$variableB = $_POST[$$variableB];

.....

}
Il faudrait traiter tes variables ici ... Par exemple :
echo "Le pseudo a donné comme info :";
for ($i=0;$i<$nb_result;$i++)
{
  $variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
  $variableB = "astroport_".$$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
  $$variableB = $_POST[$$variableB];
  echo "$variableB a pour valeur : $$variableB<br>";


  $variableA = @mysql_result($req,$i,'pla');
  $variableB = "cargo_".$$variableA;
  $$variableB = $_POST[$$variableB];
  echo "$variableB a pour valeur : $$variableB<br>";

.....

}
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 20:32:03
A ce niveau ca commence à me dépasser, enfin si j'ai bien compris, en prenant comme ca vient je devrais mettre comme code :

<?php

// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='Ben'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$nb_result = @mysql_num_rows($req);

echo "Le pseudo a donné comme info :";
for ($i=0;$i<$nb_result;$i++)
{
 $variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
 $variableB = "astroport_".$$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
 $$variableB = $_POST[$$variableB];
 echo "$variableB a pour valeur : $$variableB<br>";


 $variableA = @mysql_result($req,$i,'pla');
 $variableB = "cargo_".$$variableA;
 $$variableB = $_POST[$$variableB];
 echo "$variableB a pour valeur : $$variableB<br>";


}

?>

Donc j'ai fait un test avec ca et ca m'a mis un joli message disant :

Citer
Le pseudo a donné comme info :astroport_ a pour valeur : $astroport_
cargo_ a pour valeur : $cargo_
astroport_ a pour valeur : $astroport_
cargo_ a pour valeur : $cargo_
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 22:10:08
sans doute un $ en trop pour variableA
<?php

// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='Ben'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$nb_result = @mysql_num_rows($req);

echo "Le pseudo a donné comme info :";
for ($i=0;$i<$nb_result;$i++)
{
$variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
$variableB = "astroport_".[B]$variableA[/B]; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
$$variableB = $_POST[$$variableB];
echo "$variableB a pour valeur : ".$$variableB."<br>";


$variableA = @mysql_result($req,$i,'pla');
$variableB = "cargo_".[B]$variableA[/B];
$$variableB = $_POST[$$variableB];
echo "$variableB a pour valeur : ".$$variableB."<br>";


}

?>
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 22:34:24
Arf non, il n'a pas aimé :

Citer
Parse error: parse error, unexpected '[' in /home/users/j/jppj/www/essai/sim.php on line 30

La ligne correspond à :
$variableB = "astroport_".[B]$variableA[/B]; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
J'ai enlevé pour le moment les

On peut noter un net progrés :
Citer
Le pseudo a donné comme info :astroport_Khomm a pour valeur :
cargo_Khomm a pour valeur :
astroport_Tynna a pour valeur :
cargo_Tynna a pour valeur :

J'avais bien mis des valeurs dans mon formulaire...  ;)
Titre: Lister Une Base
Posté par: Ice le 02 septembre 2005 à 23:15:00
Si c'est çà , je suis vraiment nul :)
Essaie :
<?php

// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='Ben'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$nb_result = @mysql_num_rows($req);

echo "Le pseudo a donné comme info :";
for ($i=0;$i<$nb_result;$i++)
{
$variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
$variableB = "astroport_".$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
$variableC = $_POST[$$variableB];
echo "$variableB a pour valeur : ".$variableC."<br>";


$variableA = @mysql_result($req,$i,'pla');
$variableB = "cargo_".$variableA;
$variableC = $_POST[$$variableB];
echo "$variableB a pour valeur : ".$variableC."<br>";


}

?>
Titre: Lister Une Base
Posté par: jppj le 02 septembre 2005 à 23:50:48
Nan, il ne veut toujours pas en entendre parler, il me laisse comme résultat :

Citer
Le pseudo a donné comme info :astroport_Khomm a pour valeur :
cargo_Khomm a pour valeur :
astroport_Tynna a pour valeur :
cargo_Tynna a pour valeur :
Titre: Lister Une Base
Posté par: Ice le 03 septembre 2005 à 06:58:24
Je crois que je suis allé chercher trop compliqué...
(J'ai compris mon erreur, sur mes scripts, je récupérais directement par la variable sans utiliser $_POST, d'où l'utilisation des $$ ... La ca doit etre bon, enfin j'espere)
<?php

// on se connecte à MySQL
$db=mysql_connect('cl2-sql1', 'jppj1', 'xxx');

// on sélectionne la base
mysql_select_db('jppj1',$db);

// on crée la requête SQL
$sql="SELECT pla, propri FROM planetes WHERE propri='Ben'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$nb_result = @mysql_num_rows($req);

echo "Le pseudo a donné comme info :";
for ($i=0;$i<$nb_result;$i++)
{
$variableA = @mysql_result($req,$i,'pla'); // ex : $variableA = "Khomm";
$variableB = "astroport_".$variableA; // ex : en espérant qu'on obtienne $variableB = astroport_Khomm
$variableC = $_POST[$variableB];
echo "$variableB a pour valeur : ".$variableC."<br>";


$variableA = @mysql_result($req,$i,'pla');
$variableB = "cargo_".$variableA;
$variableC = $_POST[$variableB];
echo "$variableB a pour valeur : ".$variableC."<br>";


}

?>
Titre: Lister Une Base
Posté par: cheminots le 03 septembre 2005 à 07:41:37
En premier, tu peux récupérer toutes tes variables en faisant foreach($_POST as $k=>$v){
 $$k=$v;
}

Ensuite, il y a un p'tit problème dans
$variableA = @mysql_result($req,$i,'pla'); // ca, c'est ok
$variableB = "cargo_".$variableA; //ca, ca pourrait l'être
$variableC = $_POST[$variableB];//ca, ca ne l'est plus car tu as déjà défini $variableB, et qu'ici tu lui réassigne une nouvelle valeur
echo "$variableB a pour valeur : ".$variableC."<br>";

Ce que je veux dire, c'est que si tu te sers plusieurs fois d'une variable originale, n'y touche pas.

Par exemple :
$variableA = @mysql_result($req,$i,'pla');
$variableC = "cargo_".$variableA;
//$variableC = $_POST[$variableB]; Plus nécéssaire avec le foreach
echo "$variableC a pour valeur : $variableB <br>";
Titre: Lister Une Base
Posté par: jppj le 03 septembre 2005 à 09:07:20
Voilà je viens d'essayer vos codes.

Bon bah Ice toutes mes félicitations, ca marche à merveille !

Cheminots, tu crois que ca vaut la peine de continuer sur sur que tu as mis ou pas ?
Titre: Lister Une Base
Posté par: Ice le 03 septembre 2005 à 14:58:48
:)
C'est vrai que le foreach peut marcher , mais je ne l'ai jamais utilisé. (et je ne sais pas s'il peut récupérer le nom de variable avec le foreach)
Titre: Lister Une Base
Posté par: cheminots le 04 septembre 2005 à 08:13:53
ice> j'utilise le foreach pour récupérer mes données sur un hébergement ou le register-global est à off

jppj>A toi de voire. Mais si ton code s'étoffe, tu va être très vite perdu
 
Titre: Lister Une Base
Posté par: jppj le 04 septembre 2005 à 09:38:08
Je tenterai ca dans la semaine pour voir ce que ca donne. Je te tiens au courant pour dire si ca fonctionne ou non.

Merci.