Array to String [Résolu]

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 15 août 2007 à 14:57
Hello à tous,

J'aimerais savoir s'il est possible d'obtenir un résultat du genre :
$req = "INSERT INTO `$table` (`champ1`, `champ2`, `champ3`...) VALUES (`val1`, `val2`, `val3`)" à partir d'un tableau qui se présenterait sous la forme array('champ1=val1', 'champ2=val2', 'champ3=val3')....

J'ai codé la chose de la manière suivante :

        function DB_Write($user, $table, $val){
            for($i=0; $i<count($val); $i++){
                list($champ, $valeur) = explode('=', $val[$i]);
                $string1 .= '`'.$champ.'`';
                $string2 .= '`'.$valeur.'`';
            }
            $SQL = 'INSERT INTO '.$table.' ('.$string1.') VALUES ('.$string2.')';
            $this->mysql_query($SQL) or die(mysql_error());
        }   

Le prob c'est qu'il ajoute une virgule de trop...

Merci :) !!
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
3
Merci
Hello, et bien enlève la virgule de trop avec substr( )
cf php.net
à+

Dire « Merci » 3

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

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Evangun
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Waww j'y avais pas pensé mdr!

Merci :D (*cherchait depuis 1 heure*)
Commenter la réponse de cs_Aaron
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29
0
Merci
Salut

en utilisant implode, tu aurais un meilleur temps de calcul

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Pour utiliser implode je devrais avoir deux tableaux, non?

Car je récup' et stock dans deux variables différentes ce qu'il y'a de part et d'autre du "=" avec explode.

Tandis que si j'utilise implode j'aurais : $string = "champ1, val1, champ2, val2, etc..."

Non?
Commenter la réponse de cs_Aaron
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
0
Merci
oui, il a dû lire trop vite ta question c'est tout
Commenter la réponse de Evangun
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29
0
Merci
Salut

a partir d'un champ :

array('champ1=val1', 'champ2=val2', 'champ3=val3')

c'est pas l'ideal, mais avec array_walk, tu peux obtennir :

array('champ1'=>'val1', 'champ2'=>'val2' ...)
ce qui correspond probablement a qqch de plus approprie pour ce que tu cherches a faire...

ensuite, array_keys, et array_values, suivis d'un implode

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Le temps d'éxecution sera aussi long avec toutes ses fonctions, non?

Merci pour vos réponses en tout cas :)
Commenter la réponse de cs_Aaron
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29
0
Merci
Salut

probablement pas... enfin faudrait faire un test...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
0
Merci
Je ne sais pas lequel est le plus rapide, en tout cas à mon avis il faut avoir envie de se prendre la tête pour faire tout ça, et en relisant ton code il te faudra 3 mn avant de te rappeler à quoi ça sert... Après bon si tu programmes le nouveau Google tu chercheras peut-être ce genre d'optimisation... mais sinon je vois pas pourquoi.
Commenter la réponse de Evangun
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Certes :))
Commenter la réponse de cs_Aaron