Auteur Sujet: Lister Une Base  (Lu 7925 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #30 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 ?

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #31 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>

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #32 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.

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #33 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

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é  :(  
« Modifié: 02 septembre 2005 à 14:35:46 par jppj »

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #34 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...
 

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #35 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.

P.S. : Ooops, merci pour le '

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #36 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>";


?>

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #37 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:  

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #38 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
« Modifié: 02 septembre 2005 à 16:20:37 par Ice »

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #39 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>

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #40 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.

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #41 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.

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #42 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>";

.....

}

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #43 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_
« Modifié: 02 septembre 2005 à 20:32:40 par jppj »

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #44 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>";


}

?>
« Modifié: 02 septembre 2005 à 22:17:30 par Ice »