Concaténation PHP [Résolu/Fermé]

- - Dernière réponse : freto
Messages postés
1544
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
Afficher la suite 

3 réponses

Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132
0
Merci
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
Merci
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 !';
}
freto
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132 -
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);



> freto
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
-
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
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132
0
Merci
Au lieu d'écrire directement dans le fichier:
fwrite($f,$lignes); 


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