Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2007, 13h51   #1
Invité de passage
 
Inscription : mars 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 1
Points : 0
Points : 0
Par défaut [Conception] Mysql et tableau associatif

Bonjour à tous,

Pouvez vous m’aider à résoudre un problème avec les tableaux associatifs.
Voilà, je dispose de l’information suivante dans une table « user »dans un champ intitulé « suivi »
L’enregistrement textuelle est la suivante :
Citation:
"date_1"=>"retard", "date_2"=>"absence", "date_3"=>"sortie", "date_4"=>"exclus"
Le script que j’ai rédigé pour extraire cet enregistrement est le suivant :
Il faut dire que je suis quasi nul en PHP et je veux apprendre,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include_once("../Regisys/includes/config.inc.php");
$id_user=1;
$req=mysql_query("select * from user where id='$id_user' "); 
$res=mysql_fetch_array($req);
$liste=explode(',', $res[suivi]);
$nbr=count($liste);
$liste_out=array();
for($i=0;$i<$nbr;$i++)
{
array_push($liste_out,"$liste[$i]");
}
//Extraire les enregistrements
while(list($key,$valeur)=each($liste_out))
{
echo "Key=$key et Val=$valeur <br>";
}
?>
Le résultat affiché est le suivant
Citation:
Key=0 et Val="date_1"=>"retard"
Key=1 et Val= "date_2"=>"absence"
Key=2 et Val= "date_3"=>"sortie"
Key=3 et Val= "date_4"=>"exclus"
Alors que moi je m’attendais à avoir ceci
Citation:
Key=date_1 et Val= retard
Key=date_2 et Val= absence
Key=date_3 et Val= sortie
Key=date_4 et Val= exclus
Je vous prie de m’aider et de me corriger pour pouvoir résoudre ce problème
dite moi si mon enregistrement est bon sur la table ou comment faire pour extraire cet enregistrement correctement ou ou !....................

Je vous remercie infiniment
Draaoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2007, 17h36   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Insert un foreach pour $valeur, et tu auras ce que tu veux !!!

Code :
1
2
3
4
5
6
7
8
 
//Extraire les enregistrements
while(list($key,$valeur)=each($liste_out))
{
foreach($valeur as $cle=>$value){
   echo "cle : ".$cle." valeur : ".$value;
}
}
Bon, c'est une méthode paliative, en vrai ton code pourrait être mieux....

Mais pour l'instant, essaye ca pour que tu puisse en intégrer le fonctionnement : les tableaux sont primordiaux en PHP !!!!
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 11h38   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Juste une remarque : Pourquoi faire ça
Code :
array_push($liste_out,"$liste[$i]");
quand ceci fonctionne et est plus rapide
Code :
array_push($liste_out,$liste[$i]);
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 12h31   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Attention, il y a a priori une erreur de conception dans la bd.
Avoir des colonnes qui contiennent ce type d'information :
Citation:
"date_1"=>"retard", "date_2"=>"absence", "date_3"=>"sortie", "date_4"=>"exclus"
C'est mal

Il est plus sage (toujours a priori, je ne connais pas le contexte) de mettre ces informations dans une table spécifique. Plus le modèle de la bd sera normalisé et plus la manipulation des informations contenues dedans sera aisée...



Sinon pour répondre à la question, mais déconseillé toutefois vu la remarque ci-dessus, tant qu'on est dans le crade on peut partir sur la solution suivante (non testée) :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php 
include_once("../Regisys/includes/config.inc.php"); 
$id_user=1; 
$req=mysql_query("select * from user where id='$id_user' "); 
$res=mysql_fetch_array($req); 
eval('$liste_out = array('. $res['suivi'] .')'); 
//Extraire les enregistrements 
foreach($liste_out as $key => $valeur)) { 
   echo "Key=$key et Val=$valeur <br>"; 
} 
?>
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h43.


 
 
 
 
Partenaires

Hébergement Web