Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/07/2008, 22h10   #1
Freedolphin
Membre habitué
 
Avatar de Freedolphin
 
Homme
Webmaster
Inscription : février 2006
Messages : 173
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 : 173
Points : 134
Points : 134
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.
Freedolphin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 22h16   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 857
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 857
Points : 21 919
Points : 21 919
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
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 22h27   #3
N1bus
Rédacteur/Modérateur
 
Avatar de N1bus
 
Homme Thierry Godin
Développeur Web
Inscription : janvier 2003
Messages : 2 210
Détails du profil
Informations personnelles :
Nom : Homme Thierry Godin
Âge : 48
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 2 210
Points : 3 698
Points : 3 698
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 />" ;
  }
}
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 22h34   #4
Freedolphin
Membre habitué
 
Avatar de Freedolphin
 
Homme
Webmaster
Inscription : février 2006
Messages : 173
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 : 173
Points : 134
Points : 134
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),
Freedolphin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 08h39   #5
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 857
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 857
Points : 21 919
Points : 21 919
Code :
ça commence à faire beaucoup de champs dans la table,
Il faut peut etre revoir la structure de ta base alors.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 12h33   #6
Freedolphin
Membre habitué
 
Avatar de Freedolphin
 
Homme
Webmaster
Inscription : février 2006
Messages : 173
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 : 173
Points : 134
Points : 134
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.
Freedolphin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 13h20   #7
popo
Membre émérite
 
Avatar de popo
 
Homme Jérémy
Analyste programmeeur Delphi / C#
Inscription : mars 2005
Messages : 738
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : mars 2005
Messages : 738
Points : 984
Points : 984
Le $PHP_SELF n'est plus accessible directement depuis quelques version de PHP. Il faut passer par la varaible $_GLOBALS["PHP_SELF"]
popo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 13h21   #8
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 857
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 857
Points : 21 919
Points : 21 919
Moi je dirais $_SERVER['PHP_SELF']

Code :
1
2
echo '<form action="' . $_SERVER['PHP_SELF'] . '" method=\"POST\">
<input type="hidden" name="id" value="' . $id . '"';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 13h33   #9
popo
Membre émérite
 
Avatar de popo
 
Homme Jérémy
Analyste programmeeur Delphi / C#
Inscription : mars 2005
Messages : 738
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : mars 2005
Messages : 738
Points : 984
Points : 984
Citation:
Moi je dirais $_SERVER['PHP_SELF']
+1

Il faut que je révise un petit peu
popo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 13h43   #10
Freedolphin
Membre habitué
 
Avatar de Freedolphin
 
Homme
Webmaster
Inscription : février 2006
Messages : 173
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 : 173
Points : 134
Points : 134
Merci Sabotage, ton pseudo est tout à fait contraire au service que tu me rends Ca marche nickel, mille mercis.
Freedolphin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h29.


 
 
 
 
Partenaires

Hébergement Web