IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] recuperation de nom variable


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut [Tableaux] recuperation de nom variable
    Bonjour,

    voila j'utilise du php et du sql mais j'ai un probleme, je recupere un tableau d'une valeur avec du php, et je souhaite que cette valeur soit la nom de ma table mais quand je veux créer la table ca me met une erreur qui est la suivante :

    "Switch12"
    Erreur SQL !
    CREATE TABLE "Switch12" ( id INT( 255 ) NOT NULL AUTO_INCREMENT , mac VARCHAR( 18 ) NOT NULL , nom_port VARCHAR( 25 ) NOT NULL , vitesse INT( 4 ) NOT NULL , etat_admin VARCHAR( 15 ) NOT NULL , etat_oper VARCHAR( 15 ) NOT NULL , PRIMARY KEY ( id ) );
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Switch12" ( id INT( 255 ) NOT NULL AUTO_INCREMENT ,
    mais ce ne me créer rien du tout, voici mon code si quelqu'un peut m'aider fodrait qu'il marche pour demain donc je suis SOUS PRESSION lol
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $host = "localhost";
    $login = $_POST["user"];
    $pass = $_POST["mdp"];
    $database = "projet port mapper"; 
    $db = mysql_connect($host, $login, $pass) or die ("Impossible de joindre la DataBase"); 
    mysql_select_db($database,$db);
     
     
     
    $nom_switch = @snmpwalk ($_POST["Adresse_IP"], $_POST["comm"], ".1.3.6.1.2.1.1.5"); 
    If ($nom_switch != FALSE) 
    foreach ($nom_switch as $vale) 
    echo $vale."<br>";
    $sql = 'DROP TABLE IF EXISTS '.$nom_switch;
    $rep=mysql_query($sql) or die('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
     
     
    $sql1 ="CREATE TABLE ".$vale." (
    id INT( 255 ) NOT NULL AUTO_INCREMENT ,
    mac VARCHAR( 18 ) NOT NULL ,
    nom_port VARCHAR( 25 ) NOT NULL ,
    vitesse INT( 4 ) NOT NULL ,
    etat_admin VARCHAR( 15 ) NOT NULL ,
    etat_oper VARCHAR( 15 ) NOT NULL ,
    PRIMARY KEY ( id )
    );";
    $rep1 = mysql_query($sql1) or die('Erreur SQL ! <br>'.$sql1.'<br>'.mysql_error());
    mysql_close();
    Merci, par contre je savais pas s'il fallait que je le poste ici ou sous php donc s'il est pas au bonne endroit dsl

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Tu n'as qu'à tester ta requête dans phpmyadmin pour voir si ça marche, et après tu fais des essais dans phpmyadmin pour trouver ce qui cloche (guillemets, quotes, ...).

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    le probleme vient du .$vale. car c'est une valeur dans un tableau et il arrive pas à me le créer, et si je met un nom directement dans mon script ca marche niquel .

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Il te créé pas le tableau Pourquoi dans le message d'erreur il y a bien un nom à la table que tu veux créer alors (switch12).

    Un truc bizarre dans ton code tu fais un foreach mais juste pour faire un echo, donc au final tu créés la table uniquement pour la dernière valeur... Si tu as qu'une valeur le foreach sert à rien, si tu en as plusieurs il faut mettre des accolades quelque part...

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    j'ai du mal m'expliquer, j'ai la valeur qui se met dans une variable, mais la valeur est dans un tableau alors qu'il n'y a qu'une seule valeurs,

    et je veux que cette valeure soit le nom de ma table, mais ceci ne veut pas,

    donc je pense que la facon la plus simple serait de recuperer la valeur du tableau donc switch12 et la mettre dans une variable pour pouvoir l'utiliser plus facilement mais je ne sai spas comment je peux faire.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    Citation Envoyé par suya95
    j'ai du mal m'expliquer, j'ai la valeur qui se met dans une variable, mais la valeur est dans un tableau alors qu'il n'y a qu'une seule valeurs,

    et je veux que cette valeure soit le nom de ma table, mais ceci ne veut pas,

    donc je pense que la facon la plus simple serait de recuperer la valeur du tableau donc switch12 et la mettre dans une variable pour pouvoir l'utiliser plus facilement mais je ne sai spas comment je peux faire.
    Et si je ne met pas le foreach le resultat ne s'affiche pas.

  7. #7
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Oulà c'est de plus en plus space...

    Je suppose que c'est $nom_switch le fameux tableau ? Tu récupères $vale en faisant $vale = $nom_switch[0], c'est plus logique.

    Prends ton temps pour expliquer parce que tes phrases veulent pas dire grand chose, et comme ton code est pas commenté c'est chaud pour comprendre.

    Truc bizarre aussi pour le DROP TABLE tu utilises $nom_switch alors que je pene que c'est plutôt $vale qu'il faut mettre.

    Le problème c'est que ton tableau $nom_switch ne contient pas le nom de la table que tu veux créer c'est ça ???

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    heu mon ,problème c'est que ma table ne prend pas le nom du switch

  9. #9
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par suya95
    heu mon ,problème c'est que ma table ne prend pas le nom du switch
    Il te créé une table mais avec un nom différent du switch ???

  10. #10
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    quand il me créait une table, elle s'appelle array

  11. #11
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    $nom_switch c'est un tableau à 1 dimension ou c'est un tableau de tableaux ? Tu as modifié ce que je t'ai dit plus haut ($vale et pas $nom_switch) dans le DROP TABLE ?

  12. #12
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    c'est un tableau a une dimension et oui j'ai modifier mais aucun changement helas

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Citation Envoyé par suya95
    quand il me créait une table, elle s'appelle array

    php te retournes array quand ta variable est un tableau dont tu n'as pas specifié la case

  14. #14
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Un truc qui m'échappe, tu dis que la table créée a pour nom ARRAY, mais dans le message d'erreur de ton premier post il tente un CREATE TABLE "switch12", c'est bien ça que tu veux non ? Ton premier post est un problème de requête, mais ça s'est transformé en problème de manipulation de tableau, c'est bizarre... Si tu pouvais éclaircir tout ça ça pourrait être pas mal...

  15. #15
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    au debut il essayait de me créer la table mais rien ne se créait dans ma base de donnée,
    avec quelques modif je n'ai plus les erreurs et il me créait la table array.

    Dsl si je ne suis pas clair mais je ne suis pas programmeur c'est un projet qu'on m'a donné alors que je m'y connais pas alors je me debrouille comme je peux .

    En tout ca merci de tout ton aide c'est super sympa

  16. #16
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Ok, donc le problème a bougé depuis le début, ça aurait pu être sympa de tenir au courant...

    Le mieux c'est que tu remettes ton dernier code (l'équivalent de ton premier post mais ta dernière version), on verra avec ça.

  17. #17
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    revoici mon code



    <?php
    $host = "localhost";
    $login = $_POST["user"];
    $pass = $_POST["mdp"];
    $database = "projet port mapper";
    $nomswitch = $_POST["nom_switch"];
    $db = mysql_connect($host, $login, $pass) or die ("Impossible de joindre la DataBase");
    mysql_select_db($database,$db);


    $sql1 ="CREATE TABLE ".$nomswitch." (
    id INT( 255 ) NOT NULL AUTO_INCREMENT ,
    mac VARCHAR( 18 ) NOT NULL ,
    nom_port VARCHAR( 25 ) NOT NULL ,
    vitesse INT( 4 ) NOT NULL ,
    etat_admin VARCHAR( 15 ) NOT NULL ,
    etat_oper VARCHAR( 15 ) NOT NULL ,
    PRIMARY KEY ( id )
    );";
    $rep1 = mysql_query($sql1) or die('Erreur SQL ! <br>'.$sql1.'<br>'.mysql_error());
    ?>
    l'erreur qu'il me dit

    "Switch2"
    Erreur SQL !
    CREATE TABLE Switch2 ( id INT( 255 ) NOT NULL AUTO_INCREMENT , mac VARCHAR( 18 ) NOT NULL , nom_port VARCHAR( 25 ) NOT NULL , vitesse INT( 4 ) NOT NULL , etat_admin VARCHAR( 15 ) NOT NULL , etat_oper VARCHAR( 15 ) NOT NULL , PRIMARY KEY ( id ) );
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Switch2 ( id INT( 255 ) NOT NULL AUTO_INCREMENT , ma
    Merci pour l'aide

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Par défaut
    il me semble qu'il faut mettre des `autour de t nom de champs dans les requetes de créations

    edit : désolé j'ai dit une connerie je viens d'ésséyé ta requete et ca fonctionne bien en direct sous mysql

  19. #19
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Par défaut
    si je met des ' voici l'erreur que ca me le fait


    "Switch2"
    Erreur SQL !
    CREATE TABLE if not exists Switch2 ( 'id' INT( 255 ) NOT NULL AUTO_INCREMENT , 'mac' VARCHAR( 18 ) NOT NULL , 'nom_port' VARCHAR( 25 ) NOT NULL , 'vitesse' INT( 4 ) NOT NULL , 'etat_admin' VARCHAR( 15 ) NOT NULL , 'etat_oper' VARCHAR( 15 ) NOT NULL , PRIMARY KEY ( id ) );
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Switch2 ( 'id' INT( 255 ) NOT NULL AUTO_INCREMENT ,

Discussions similaires

  1. Utiliser des tableaux avec un nom variable
    Par Yokav dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 07/04/2011, 14h01
  2. [Tableaux] Recuperation de variable dynamiques
    Par zevince dans le forum Langage
    Réponses: 10
    Dernier message: 18/09/2006, 16h28
  3. [Tableaux] test performance nom de variable
    Par maximenet dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2006, 14h30
  4. [Tableaux] Concaténation du nom d'une variable
    Par nebule dans le forum Langage
    Réponses: 11
    Dernier message: 18/05/2006, 11h30
  5. Réponses: 7
    Dernier message: 13/03/2006, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo