[PHP] fonction qui retourne deux tableaux [Résolu/Fermé]

Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
Bonjour,

j'ai la variable $champs suivante : R0910R1002R1001RR1001.
qui contient deux types d'informations : par exemple un champs de type R0911 veut dire que Recu le 09/11/2010

je voudrais une fonction qui me retourne deux listes $etat et $date que je pourrais importer dans une base de données Mysql. Voila un petit shema pour illustrer cela:

champs etat date
R0910 True 2010/10/09
R1002 True 2010/02/10
R1001 True 2010/01/10
R True (Null ou autre)
R1001 True 2010/01/10

le premier gros problème que j'ai c'est que visiblement $champs n'est pas un tableau et du coup je n'arrive pas à le manipuler. Le deuxième est que je ne sais pas faire de fonction qui retourne deux variables en php.

Si quelqu'un peut m'aider à resoudre l'un (ou les deux problèmes j'apprecierai enormement )

Merci beaucoup

Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334
1
Merci
En gros tu veux découper une chaîne de caractère de façon à séparer les infos qui t'intéresse. Voici qui peut t'être utile :

http://php.net/manual/fr/function.substr.php

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62683 internautes nous ont dit merci ce mois-ci

saad0n
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
le problème est qu'il ne me traite pas $champs comme une seule chaine de caractères
normalement si je fais substr("R1002R1005R0909",5) il doit me retourner R1005R0909
et lui il supprime tout pcq jai limpression qu'il me fait un substr("R****",5 ) sur tous les blocs
Breub62
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334 -
Ah oui je n'avais pas vu. Tu peux me montrer comment est initialisé $champs?
saad0n
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
c'est un peu long pcq c'est un champs excel et que ce n'est pas le seul à etre extrait
donne moi un peu de temps histoire d'isoler les informations utiles
merci de ton aide en tout cas
Breub62
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334 -
Son comportement fais quand même bien penser à un tableau...

Si tu fais
 echo $champs[0]; 
echo $champs[1]; 
...


ça donne quoi??
saad0n
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
désolé pour le retard
quand je fais echo $champs[2];
ca me donne ceci :
Notice: Uninitialized string offset: 2 in C:\wamp\www\test\Copie de importation1\index2.php on line 153
Messages postés
3526
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2019
919
1
Merci
Bonjour,

Déjà, il faudrait savoir ce qu'est la variable $champs.

Je te conseille donc de mettre ce bout de code :
var_dump($champs);

Ensuite, pour mieux visualiser le résultat, il est préférable d'afficher le code source de la page dans le navigateur (pour avoir les retours à la ligne, sinon on ne voit rien c'est tout sur une ligne).

Xavier

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62683 internautes nous ont dit merci ce mois-ci

Reivax962
Messages postés
3526
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2019
919 -
T'as rien oublié ? Y a pas un array() quelque chose tout au début ?
Parce que là, ça ne ressemble pas à un tableau mais plutôt à des variables de chaînes mises bout à bout...
Breub62
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334 -
Oui ça ressemble à un tableau de string mais sans en être un. Je sais pas exactement quel type de variable c'est...
saad0n
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
si ca peut vous aider je vous remets dans le contexte de mon projet :
l'idée est d'importer des données reparties dans une feuille CSV vers uen table MySql.
Donc j'importe le fichier et je l'ouvre : $fp = fopen ($_FILES["userfile"]["tmp_name"], "r");
puis je fais :
while (!feof($fp)) {
$ligne = fgets($fp,4096);
$liste = explode(";",$ligne); // je cree un tableau des données séparés par un ;
$liste[8] = ( isset($liste[8]) ) ? $liste[8] : Null; // je recupère le champs qui m'interesse
$champs=$liste[8];
ET voila mon champ
Reivax962
Messages postés
3526
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2019
919 -
Aaaah !
Et le var_dump, tu l'avais mis dans la boucle ?

Mais dans ce cas-là, ton $champs est écrasé à chaque fois !
Il ne contient jamais que la dernière ligne de ton fichier...

Pour le mettre dans un tableau, il faudrait d'abord l'instancier, avant le while :
$champs = array();

Puis, dans la boucle, tu mets
$champs[] = $liste[8];

Maintenant tu peux parcourir $champs comme un tableau :)

Xavier
saad0n
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
-
merci je vais tester ca et je te dis si ca marche
merci en tout cas
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
0
Merci
salut
j'ai tenté une nouvelle approche
j'ai crée un nouveau topic
http://www.commentcamarche.net/forum/programmation-3/new#frmnewa
si vous avez une idée je suis preneur
Messages postés
19
Date d'inscription
mardi 6 juillet 2010
Statut
Membre
Dernière intervention
10 août 2010
0
Merci
salut

ben finalement même si le type de mon champs est bizarre , substr arrive à gérer comme tu l'as suggéré Breub62 .La fonction var_dump a été très utile dans ce sense la. Merci beaucoup tout le monde et désolé pour le temps perdu . Pour la peine je mets ma solution ( on sait jamais )

$champs_etat= substr($champs,0,-4);
$champs_int= str_replace( 'R', 'true',$champs_etat );
$champs_date= substr($champs,5);

c'etait tout con

Re Merci tout le monde
Breub62
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334 -
De rien. Bonne continuation ;-)