Array to String [Résolu]

Signaler
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
-
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
-
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 :) !!

10 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello, et bien enlève la virgule de trop avec substr( )
cf php.net
à+
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Waww j'y avais pas pensé mdr!

Merci :D (*cherchait depuis 1 heure*)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

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?
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
oui, il a dû lire trop vite ta question c'est tout
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Le temps d'éxecution sera aussi long avec toutes ses fonctions, non?

Merci pour vos réponses en tout cas :)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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.
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Certes :))