Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2011, 12h42   #1
Membre du Club
 
Avatar de alain78
 
Homme Alain
Développeur informatique
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 59
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 55
Points : 55
Par défaut Passage d'un tableau en champ hidden

Bonjour,

Je bute et ne trouve pas la solution à mon problème.

J'ai un tableau crée comme suit :
Code :
1
2
 
$tab_rapport[$_POST['ref_referentiel']]=array( "notes"=>$_POST['rapport']);
Dans un formulaire pour ne pas perdre le contenu du tableau, je le passe en champ hidden
Code :
1
2
3
4
 
foreach ($tab_rapport as $key=>$value){
    echo "<input type='hidden' name='tabrapport[$key][notes]' value='$tab_rapport[$key][notes]'>";
}
La syntaxe est fausse et j'obtiens une alarme Illegal offset type .

Or tout fonctionne bien lorsque je ne passe qu'une seule valeur comme

Code :
1
2
3
 
foreach ($tab_rapport as $key){
    echo "<input type='hidden' name='tabrapport[$key]' value='$key'>";

Mon problème :

Quelle est la syntaxe pour passer dans un (ou plusieurs) champs hidden la totalité d'un tableau comportant plusieurs champs ?

Merci par avance.
alain78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 13h25   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
tu as oublié les quotes pour l'indice notes :
Code :
1
2
3
foreach ($tab_rapport as $key=>$value){
    echo "<input type='hidden' name='tabrapport[$key]["notes"]' value='$tab_rapport[$key]["notes"]'>";
}
après je ne sais pas si il faut les échapper ou pas, mais essayes comme ca d'abord...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 13h32   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par vorace Voir le message
tu as oublié les quotes pour l'indice notes :
Code :
1
2
3
foreach ($tab_rapport as $key=>$value){
    echo "<input type='hidden' name='tabrapport[$key]["notes"]' value='$tab_rapport[$key]["notes"]'>";
}
après je ne sais pas si il faut les échapper ou pas, mais essayes comme ca d'abord...
pas besoin de quote coté HTML
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 13h44   #4
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
Citation:
pas besoin de quote coté HTML
peut être pour le champs 'name' de l'input mais pour récupérer la valeur à affecter à l'attribut 'value' faut bien des quotes...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 13h51   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par vorace Voir le message
peut être pour le champs 'name' de l'input mais pour récupérer la valeur à affecter à l'attribut 'value' faut bien des quotes...
non


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
echo '<pre>', print_r($_GET, true), '</pre>'; 
?>
<form action="" method="get">
    <input type="hidden" name="tabrapport[5][notes]" value="test" />
    <input type="hidden" name='tabrapport[5]["notes"]' value="test quote" />
    <button type="submit">test !!!</button>
</form>
<!--
Array
(
    [tabrapport] => Array
        (
            [5] => Array
                (
                    [notes] => test
                    ["notes"] => test quote
                )
 
        )
 
)
-->
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 14h34   #6
Membre du Club
 
Avatar de alain78
 
Homme Alain
Développeur informatique
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 59
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 55
Points : 55
Par défaut Solution du problème

Comme je m'en doutais la solution était simple.

En fait la syntaxe est:

Code :
1
2
3
4
5
6
 
 
    foreach ($tab_rapport as $key=>$value){
        echo "<input type='hidden' name='tabrapport[$key][notes]'
        value='{$tab_rapport[$key][notes]}'>";
    }
Il manquait dans value le signe { en début et } en fin car la valeur est lui même un tableau.


Merci à tous.

alain78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 14h40   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
si tu veux faire quelque chose de plus propre utilise sprintf ou écrit du PHP dans du HTML (et non l'inverse)

Code :
1
2
3
<?php foreach ($tab_rapport as $key=>$value): ?>
<input type="hidden" name="tabrapport[<?php echo $key; ?>][notes]" value="<?php echo $tab_rapport[$key]['notes']; ?>" />
<?php endforeach; ?>
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 16h40   #8
Membre du Club
 
Avatar de alain78
 
Homme Alain
Développeur informatique
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 59
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 55
Points : 55
Par défaut Question de lisibilité

Citation:
Envoyé par stealth35 Voir le message
si tu veux faire quelque chose de plus propre utilise sprintf ou écrit du PHP dans du HTML (et non l'inverse)

Code :
1
2
3
<?php foreach ($tab_rapport as $key=>$value): ?>
<input type="hidden" name="tabrapport[<?php echo $key; ?>][notes]" value="<?php echo $tab_rapport[$key][notes]; ?>" />
<?php endforeach; ?>
Merci pour ce conseil. Personnellement je trouve beaucoup plus lisible le code lorsque c'est html qui est encapsulé dans le PHP. En effet, l'insertion de toutes les balises PHP ( ?> <?) me gènent dans la lisibilité du code.

HTML dans PHP
Code :
1
2
3
4
5
 
foreach ($tab_rapport as $key=>$value){
        echo "<input type='hidden' name='tabrapport[$key][notes]'
        value='{$tab_rapport[$key][notes]}'>";
    }
PHP dans HTML
Code :
1
2
3
4
 
<?php foreach ($tab_rapport as $key=>$value): ?>
<input type="hidden" name="tabrapport[<?php echo $key; ?>][notes]" value="<?php echo $tab_rapport[$key][notes]; ?>" />
<?php endforeach; ?>
Je sais qu'avec ma méthode, je fais faire au serveur Apache ce que le navigateur sait faire.
Peut être qu'un jour j'inverserai mon codage.
alain78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 16h47   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
tu peux toujours utiliser (s)printf

Code :
1
2
3
4
foreach ($tab_rapport as $key=>$value)
{
    printf('<input type="hidden" name="tabrapport[%s][notes]" value="%s">', $key, $tab_rapport[$key]['notes']);
}
ps : coté PHP c'est $tab_rapport[$key]['notes']
je te conseil de mettre ton niveau d'erreur au maximum
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h36.


 
 
 
 
Partenaires

Hébergement Web