Concaténation PHP

Résolu/Fermé
eXo - 5 mai 2009 à 15:07
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 - 6 mai 2009 à 13:48
Bonjour,

Je souhaite fabriqué une variable contenant un array de variable $_GET récupéré d'un formulaire.. Seulement comme je ne connais pas à l'avance le nombre de "GET" reçu, je doit fabriqué ma variable en fonction de $nbr_info qui contient cette fameuse valeur.

Exemple de ce que je doit obtenir :
$NewArray = array("$_GET['info1'];","$_GET['info2'];","$_GET['info3'];"\n"); etc... jusqu'a "info.$nbr_info"
Voila ce que j'ai fait, mais je ne connais pas comment construire ceci en plusieurs étape:

for ($i=0;$i<1;$i++){
$NewArray = array ("$_GET['info'.'$i'];",
}
for ($i=1;$i<$nbr_info;$i++){
"$_GET['info'.'$i'];",
}
for ($i=$nbr_info;$i<$nbr_info+1;$i++){
"$_GET['info'.'$i']\n");
}

Merci pour votre aide !
eXo
A voir également:

3 réponses

freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
5 mai 2009 à 15:52
Bonjour.
Je ne comprends pas trop ce que tu veut faire exactement, mais tu peut utiliser (si j'ai compris le peu qu'il y a à comprendre) la syntaxe [] pour ajouter des éléments à un tableau.
Par exemple:
$tab[]=1;
$tab[]=2;
$tab[]=3;

Le tableau $tab contiendra les valeurs 1, 2, 3 et la syntaxe est identique à:
$tab=array(1,2,3);


Si tu ne connais pas à l'avance le nombre d'élements de $_GET, tu peut le parcourir aussi de cette manière:
foreach ($_GET as $indice=>$valeur){
    //le code qui va bien
}

Cela aura pour effet de parcourir les éléments du tableau $_GET un par un, et pour l'élement courant, de stocker l'indice courant dans $indice, et la valeur dans $valeur.
Par exemple, si ton $_GET est formé comme ceci:
$_GET['info1']='valeur1'
$_GET['info2']='valeur2'
$_GET['info3']='valeur3'

Au premier tour dans la boucle foreach, $indice = "info1" et $valeur="valeur1"
Et ainsi de suite...
0
Sa m'a bien aidé :

voila ce que j'ai fait :

foreach ($_GET as $indice=>$valeur){
$tab[$indice]="$valeur;";
}

Apres il me faut écrire cette ligne dans un fichier à la fin, et sa ne fonctionne pas... pourtant le tableau est bien écris correctement ..

if ($f = fopen("$dossier"."$nom_fichier", "a"))
{
for($i=$new_line;$i<$new_line+1;$i++)
{
foreach ($tab as $line)
{
fwrite($f, $line);
}
array_pop($tab);
fclose($f);
}
}
else
{
echo 'erreur lors de l\'ouverture du fichier !';
}
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
6 mai 2009 à 09:21
Tu ne doit pas avoir besoin du array_pop(). La boucle foreach avance toute seule d'un élément, donc si tu dépile et que tu avance , tu ne parcourras que la moitié du tableau (a moins que ce ne soit ce que tu veuille faire).

Et pour l'écriture du fichier, je procède plutôt de cette manière:
$f=fopen("$dossier"."$nom_fichier","r") or die ("Fichier introuvable"); // Cette ligne n'est pas obligatoire apparament, me demande pas pourquoi je l'ai utilisée
$contenu=file_get_contents("$dossier"."$nom_fichier");
fclose($f);

//on modifie le contenu, qui n'est qu'un tableau. Dans ton cas, on aurait quelque chose du genre:

foreach($tab as $ligne){
    $contenu[]=$ligne;
}

//et on réécrit le fichier

$f=fopen("$dossier"."$nom_fichier",'w+') or die ("Fichier manquant");
fwrite($f,$contenu);
fclose($f);



0
eXo > freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016
6 mai 2009 à 10:32
Salut, merci beaucoup pour le coup de pouce.. alors j'en suis seulement a réécrire le tout ds le fichier.. j'ai vérifier en affichant mon tableau initial et en affichant le nouveau tableau avec la ligne modifier, sa fonctionne niquel...
seulement j'ai une erreur pour réécrire le tout..

voila le code :

function print_t($data) {
print "<pre>".print_r($data,true)."</pre>";
}
$i=1;
$handle = fopen("listePilote/pilotage.csv", "r+");
while ($data = fgets($handle, 4096)) {
$lignes[$i] = $data;
$i++;
}
print_t($lignes);
fclose($handle);
//création temporaire de la nouvelle lignes
$info = $pilote.';'.$dateu.';'.$incident.';'.$prise_incident.';'.$environement.';'.$job_er.';'.$abend.';'.$job_erreur.';'.$job_repri.';'.$relance.';'.$hors_perim.';'.$respect_20mn.';'.$asset.';'.$log_erreur.';'.$diag_pilote.';'.$topx.';'.$escalade.';'.$escalade_justif.';'.$banque.';'.$partition.';'."$commentaire\n";
$lignes[$l] = $info;
echo'<br>nouveau tableau<br>';
print_t($lignes);
// ouverture du fichier et concaténation des infos

$f=fopen("listePilote/pilotage.csv",'w+') or die ("Fichier manquant");
fwrite($f,$lignes);
fclose($f);

voici l'erreur : Notice: Array to string conversion in C:\wamp\www\modif.php on line 74

la ligne 74 : fwrite($f,$lignes);

mon nouveau tableau modifié est $lignes !

merci
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
6 mai 2009 à 13:48
Au lieu d'écrire directement dans le fichier:
fwrite($f,$lignes); 


Essaie de faire un foreach
foreach ($lignes as $element){
    fwrite($f,$element);
}

0