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 :

Mettre une variable dans array


Sujet :

Langage PHP

  1. #1
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut Mettre une variable dans array
    Bonjour à tous,

    J'avais un petit quiz sur un fichier, que j'ai voulu mettre sur base de données et je me heurte à un petit problème.
    Le fichier se servait de la fonction array pour écrire la question et les réponses, sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $quizz= array(
    array("1/ Question 1",	"réponse1","réponse2","réponse3")
    J'ai donc rentré toute la chaîne "1/ Question 1", réponse1","réponse2","réponse3" dans la bdd dans un champ 'question1' et j'ai ensuite fait la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query("SELECT * FROM quiz WHERE num='$id'"); 
    $data = mysql_fetch_assoc($req);
    $question1 = $data["question1"]; 
    $quizz= array(
     array("$question1"),
    et bien ça ne marche pas du tout ! Il renvoie toute la chaîne au lieu de séparer en questions/réponses... Je ne vois plus où se trouve l'erreur, quelqu'un peut-il m'aider ? Merci d'avance.
    Le mieux n'est pas forcément l'ennemi du bien.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    L'erreur c'est d'ecrire une concatenation dans une base de donnée.
    Il faut naturellement inscrire une donnée par champ, surtout que tes données sont déjà séparées.
    Il serait absurde de rassembler les données pour devoir ensuite les re-séparer.

    Sinon pour la partie purement syntaxe quand tu ecris array($toto), il ajoute la valeur de la chaine $toto dans le tableau, il n'interprete pas $toto
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    Tu peux essayer un truc comme ça (si j'ai bien compris la structure) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $question1 = $data["question1"]; 
     
    for ($i = 0; $i < count($question1); $i++){
     
      if($i ==0){
      //la question à l'index 0
      echo "Question 1 : " . $question1[$i] . "<br />";
      }
      else{
      //les reponses
      echo "<input type='radio' name='radio" . $i . "' >" . $question1[$i] . "<br />" ;
      }
    }

  4. #4
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Citation Envoyé par sabotage Voir le message
    L'erreur c'est d'ecrire une concatenation dans une base de donnée.
    Il faut naturellement inscrire une donnée par champ, surtout que tes données sont déjà séparées.
    Il serait absurde de rassembler les données pour devoir ensuite les re-séparer.
    En fait, c'est parce qu'il y a 10 questions et que ça commence à faire beaucoup de champs dans la table, ainsi que dans le fichier admin où je rentre les questions. C'est pourquoi je voulais rassembler questions et réponses dans un même champ. En effet, il n'interprète pas la virgule comme un séparateur dans ce cas.
    J'ai essayé de re-séparer avec explode et ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data1 = $data["question1"];
    list($question1,$rep1,$rep2,$rep3,$br) = explode(",", $data1);
    $quizz= array(
     array($question1,$rep1,$rep2,$rep3,$br),
    Le mieux n'est pas forcément l'ennemi du bien.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ça commence à faire beaucoup de champs dans la table,
    Il faut peut etre revoir la structure de ta base alors.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Oui, c'est probable. Cela dit, la fonction explode m'a permis de faire ce que je voulais.
    En revanche, j'ai une autre petite question. Je ne suis pas fort en concaténation et le formulaire envoyé de retrouve pas l'id nécessaire à la requête sql. L'action est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "<form action=\"$PHP_SELF\" method=\"POST\">";
    Comment puis-je glisser mon "?id=$id" là-dedans ? Merci d'avance.
    Le mieux n'est pas forcément l'ennemi du bien.

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 668
    Points : 5 237
    Points
    5 237
    Par défaut
    Le $PHP_SELF n'est plus accessible directement depuis quelques version de PHP. Il faut passer par la varaible $_GLOBALS["PHP_SELF"]

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Moi je dirais $_SERVER['PHP_SELF']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<form action="' . $_SERVER['PHP_SELF'] . '" method=\"POST\">
    <input type="hidden" name="id" value="' . $id . '"';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 668
    Points : 5 237
    Points
    5 237
    Par défaut
    Moi je dirais $_SERVER['PHP_SELF']
    +1

    Il faut que je révise un petit peu

  10. #10
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Merci Sabotage, ton pseudo est tout à fait contraire au service que tu me rends Ca marche nickel, mille mercis.
    Le mieux n'est pas forcément l'ennemi du bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] mettre une variable dans un array
    Par sinifer dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/02/2011, 20h43
  2. [Debutant] Mettre une variable dans un value
    Par kimar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/06/2007, 14h33
  3. mettre une variable dans Target.Address
    Par lilemy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2007, 15h47
  4. Réponses: 2
    Dernier message: 10/04/2007, 23h43
  5. [Excel]Mettre une variable dans une fonction
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/04/2006, 12h00

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