Nom de table variable

[Résolu]
Signaler
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008
-
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009
-
bonjour,

cela fait 2 jours que je ne trouve pas la solution et je viens a votre aide!
je crée une table dont le nom est concatener 'commandex' ou x est une variable.jusque la pas de probleme!
par contre je n arrive pas a faire de requete de la forme SELECT * FROM $commandex
mon code :

$num =  $_GET['variable'];
echo "$num"; // retourne 105 qui est la bonne valeur  d'une variable postée
$num1 =  "commande".$num; // retourne 'commande105' le bon nom de ma table que j'ai créer

mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

$result = mysql_query("SELECT * FROM ' $num1 ' ");
// Recuperation des resultats
while($row = mysql_fetch_row($result)){   //ligne 60
$num_commande = $row[0];
$ref_client = $row[1];
......

mais voila j ai un message d'erreur :

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\wamp\www\commandes.php on line 60

si je met "SELECT * FROM commande105 " cela marche bien!

mon probleme vient donc de l'ecriture de la requete mais j ai beau esseyer toutes les syntaxes que j ai pu trouver donc je pense que le probleme ne vienne pas de la syntaxe mais plutot de la concatenation!

Auriez vous une solution

merci!

le galerien

31 réponses

Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

non fausse joie desolé!!
je parle bien du chiffre "1" ou "un"
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

alors fait un var_dump($num1) ... laurent avait mis var_dump($numl) .... je sais pas si tu as recopier son code ou pas ...
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Et puis su ce n'eest encore pas bon .... fait un gros copier coller de ton code que je regarde si tout va bien, si tout est fait dans le bon ordre etc ...
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

$num =  $_GET['variable'];
$num1 =  "commande".$num;
var_dump($num1);

retourne :

string(13) "commande105
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

<html>
    <head>
    <title>commandes</title>
    </head>

Numero de commande |
Reference client |
Date de commande |
Montant de la commande |
libelle |
prevu |
MOCH |
MOAT |
MOBE |
MOPR |

<?php
// De'claration des parame`tres de connexion
$host = localhost;
$user = root;
$bdd = affaires;
$passwd  = \"\";

$num =  $_GET['variable'];
$num1 =  \"commande\".$num;
var_dump($num1);
//$num1 = 'commande105';

mysql_connect($host, $user,$passwd) or die(\"erreur de connexion au serveur\");
mysql_select_db($bdd) or die(\"erreur de connexion a la base de donnees\");

$result = mysql_query(\"SELECT * FROM `\".$num1.\"` ; \");
if (!$result) {
   die('Requête invalide : ' . mysql_error());
}

while($row = mysql_fetch_row($result)){
$num_commande = $row[0];
$ref_client = $row[1];
$date_commande = $row[2];
$montant = $row[3];
$libelle_commande = $row[4];
$prevu = $row[5];
$moch = $row[6];
$moat = $row[7];
$mobe = $row[8];
$mopr = $row[9];

echo \"----
\n
$num_commande, \n
$ref_client, \n
$date_commande, \n
$montant, \n
$libelle_commande, \n
$prevu, \n
$moch, \n
$moat, \n
$mobe, \n
$mopr, \n
\n\";

  }
mysql_close();
// Deconnexion de la base de donnees

 ?>

<form>
'">
</form>

<form>

</form>

</html>
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Plusieurs questions me taraude :

• tu utilises $_GET['variable'] mais pas de test de si il exite ou non ce qui fait que si tu appel ta page inserer_commande.php sans paramètre et bien ça plante.
• dans ton exemple, $num est toujours le même donc c'est inutile de faire ta requête comme tu le fait ... mais j'ose imaginer que tu as synthétiser ton code.
• Ensuite tu utilise les balises form mais tu n'en n'as aucune utilité puisque tu utilise un bouton et un non un submit ... c que je te conseillerais :

<form action="inserer_commande.php" method="POST">
  " />
 
</form>

et au début de ton php en haut tu fais :

<?php
  if ($_POST['send'])
  {
       $num1 = "commande".$_POST['monNum'];
      puis tout ton code ....
  }
?>

Préfères la méthode POST, cela évite de faire trainer les variables dans l'url etc ...
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

merci les tintins pour tous vos conseils!! c'est laborieux dans mon code mais j arrive a sortir ma table! va falloir je range tous ca!

cela viendrai de la methode get alors tu crois? parce que pour moi elle avai l'air de bien marcher je recuperai la valeur 105 non?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
[../auteur/MIKE1310/1137126.aspx mike1310]
==> le problème résolu n'est a priori pas encore à l'ordre du jour.

Le problème c'est que, a priori, si tu essayes d'exécuter le code suivant, ça ne va marcher que dans 1 cas.
$num1 = "commande105";

$query = "SELECT * FROM `".$num1."` ; ";

echo $query;

$result = mysql_query($query);

if (!$result) {

   die('Requête invalide : ' . mysql_error());

}


$query = "SELECT * FROM commande105 ; ";

$result2 = mysql_query($query);


if (!$result2) {


   die('Requête invalide : ' . mysql_error());


}
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Problème résolu, réponse accepté : c'est pareil tous ça
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

question con! c'est ou que l'on mentionne resolu?
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Bin en fait je voulais dire "réponse accepté" comme tu la fait c'est bon .... j'me suis emmêlé les mains dans le clavier :D