difference entre array et string

Eléphant du PHP | 72 Messages

14 oct. 2005, 12:55

Bonjour,

En utilisant var_dump() j'essaie de comprendre
ce qui arrive dans mon code quand je veux recuperer les valeurs d'un check-box

Code : Tout sélectionner

<pre> <?php var_dump($_POST); ?> </pre>
Ceci est renvoye par ma page apres une sauvegarde de mon formulaire
["mein_C_Box"]=> array(2) { [0]=> string(1) "a"
[1]=> string(1) "d"}
quand j'utilise:
$conVar = implode(",",$_POST["mein_C_Box"]);

Et le contenu de ma variable est a,d (valeur renvoyee par echo $conVar;)
Ce qui est le resultat attendu. Mais n'est pas reconnu par mon insert mySQL. Consequence le resultat n'est pas enregistre dans la BD

Je fais pareil avec ma bidouille suivante:

Code : Tout sélectionner

<input type="checkbox" name="mein_C_Box[]" value="f" /><b>: JAVA</b> </td> </tr> </table> </div> <?php $lengthStr=""; $concaVar = ""; $varComa =","; if (!isset($_POST["mein_C_Box"])) $_value = ""; else { foreach($_POST["mein_C_Box"] as $_value) { switch ($_value) { case "a" : $concaVar = $concaVar . $varComa . $_value; break; case "b" : $concaVar = $concaVar . $varComa . $_value; break; case "c" : $concaVar = $concaVar . $varComa . $_value; break; case "d" : $concaVar = $concaVar . $varComa . $_value; break; case "e" : $concaVar = $concaVar . $varComa . $_value; break; case "f" : $concaVar = $concaVar . $varComa . $_value; break; default : $_val = "Fehl. Dat. "; break; } $lengthStr = strlen ($concaVar); $lengthStr = $lengthStr - 1; $conVar = substr($concaVar, 1,$lengthStr); } //$conVar = implode(",",$_POST["mein_C_Box"]); echo $conVar; }
J'obtiens cette fois:

["mein_C_Box"]=> array(2) { [0]=>string(1) "a"
[1]=> string(1) "d"}
Le contenu de echo $conVar;
est toujours le meme, mais cette fois mon mon insert mySQL fonctionne parfaitement.

Est-ce que quelqu'un peut me dire ou est la difference et ce que je dois faire pour pouvoir utilise la version optimisee du code???

D'avance merci

Marc_3

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

14 oct. 2005, 14:25

["mein_C_Box"]=> array(2) { [0]=>string(1) "a"
[1]=> string(1) "d"}
signifie que ta variable est un tableau (imagine cela comme un peigne) qui contient 2 chaînes de caractères (le peigne est extensible) :

Code : Tout sélectionner

|_"a"_|_"b"_|__... 0 1

voilà juste la différence entre string et array...ce sont deux types de variables différents.
Maintenant, je laisse à d'autres le soin de relire ton code.

edit : Le but du jeu, est pour toi de fabriquer une ou plusieurs requêtes avec 'a' et 'b' pour enregistrer ces données dans la base ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 oct. 2005, 22:06

SAlut, le problème n'est pas au niveau du "string" ou du "array" puisque dans les 2 cas tu obtient un type string a inserer.

Pour le "implode":
Description
string implode ( string glue, array pieces )
Pour le "substr":
Description
string substr ( string string, int start [, int length] )
Il faudrai voir la requete, comment tu essai d'inserer la valeur.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2005, 15:18

En fait c'est encore plus tire par les cheveux que cela. En conservant le meme code, mais au point de vue du script en faisant varier l'ordre d'apparition des operations, J'ai une fois un code qui marche et une fois un code qui ne marche pas.

J'avais deja eu une fois un probleme de ce genre c'est pour cela que j'ai essaye et soudain mon code a marche.

Alors bon il est clair aussi que j'ai passe beaucoup trop de temps sur ce script (j'apprends en meme temps que je l'ecris) et que j'ai beaucoup trop bricole pour etre sur de ce que je raconte et il est un peu difficile pour moi d'affirme cela comme ca.

Mais si cela interresse quelqu'un je donnerai volontier une copie du code en question.

Je vais mettre resolu ici car ce probleme est regle mais je vais reouvrir une question concernant l'ordre d'apparition des commandes dans un script.

Merci pour le temps passe ici.

Marc_3