+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    février 2006
    Messages
    212
    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 : 212
    Points : 176
    Points
    176

    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 :
    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 :
    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.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 437
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 437
    Points : 31 235
    Points
    31 235

    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

  3. #3
    Rédacteur/Modérateur
    Avatar de N1bus
    Homme Profil pro Thierry Godin
    Dev. Web & OpenERP
    Inscrit en
    janvier 2003
    Messages
    2 787
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Godin
    Âge : 50
    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 787
    Points : 5 264
    Points
    5 264

    Par défaut

    Bonjour,

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

    Code :
    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
    212
    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 : 212
    Points : 176
    Points
    176

    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 :
    1
    2
    3
    4
    $data1 = $data["question1"];
    list($question1,$rep1,$rep2,$rep3,$br) = explode(",", $data1);
    $quizz= array(
     array($question1,$rep1,$rep2,$rep3,$br),

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 437
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 437
    Points : 31 235
    Points
    31 235

    Par défaut

    Code :
    ça commence à faire beaucoup de champs dans la table,
    Il faut peut etre revoir la structure de ta base alors.

  6. #6
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    février 2006
    Messages
    212
    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 : 212
    Points : 176
    Points
    176

    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 :
    print "<form action=\"$PHP_SELF\" method=\"POST\">";
    Comment puis-je glisser mon "?id=$id" là-dedans ? Merci d'avance.

  7. #7
    Membre Expert Avatar de popo
    Homme Profil pro Jérémy
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    808
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérémy
    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 : 808
    Points : 1 053
    Points
    1 053

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 437
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 437
    Points : 31 235
    Points
    31 235

    Par défaut

    Moi je dirais $_SERVER['PHP_SELF']

    Code :
    1
    2
    echo '<form action="' . $_SERVER['PHP_SELF'] . '" method=\"POST\">
    <input type="hidden" name="id" value="' . $id . '"';

  9. #9
    Membre Expert Avatar de popo
    Homme Profil pro Jérémy
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    808
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérémy
    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 : 808
    Points : 1 053
    Points
    1 053

    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
    212
    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 : 212
    Points : 176
    Points
    176

    Par défaut

    Merci Sabotage, ton pseudo est tout à fait contraire au service que tu me rends Ca marche nickel, mille mercis.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •