Bonjour,
J'aurais besoin de conseil à propos de ce code
Voilà je dois dans le cadre d'un projet , avoir la possibilité d'ajouter une ou plusieurs procurations.
foreach($arr['records'] as &$com)
{
if ($com['label'] == $_GET['Nom']) {
if($com['Procuration']{
if($com['Procuration'+$i]){
$i++;
$com['Procuration'+$i] = $proc;
}else {
$com['Procuration'+$i] = $proc;
}else {
$com['Procuration'] = $proc;
}
$merge = array_merge(json_decode($arr, true), $com);
}
}
unset($com);
$str = json_encode($merge);
Cela ne marche bien entendu pas et je vois pas trop comment je pourrais m'y prendre. L'objectif étant d'ajouter au fichier json de nouveaux éléments si la personne décide d'ajouter une nouvelle procuration. Vous auriez pas une piste ?
ha d'accord !
alors pour commencer l'erreur(le warning en fait) vient du fait que depuis php 5.6 je crois, les constantes non déclarée sont considérées comme un string.
pour virer ce warning mets ['Procuration'.$i], à la place de [Procuration$i].
j'aime pas trop les imbrications de if else, c'est galère à gérer et on comprend rien quand on relis.
voici ce que je ferais. de tête pas sur que ça fonctionne
foreach($arr['records'] as &$com)
{
if ($com['label'] == $_GET['Nom']) {
$i=1
// si ProcurationN existe déjà alors on augmente i
// tant que i <5.
while($i<5 && isset($com['Procuration'.$i]){
$i++
}
if($i<5) $com[Procuration.$i] = $proc;
}
}
salut,
tu veux simplement ajouter une entrée à la fin d'un tableau json ?
si c'est le cas tu as ça :
[http://php.net/manual/fr/function.json-decode.php]() que tu connais déjà
et
[http://php.net/manual/fr/function.array-push.php]()
Ce que je souhaite c'est ajouter dans procuration les données s'il n'a pas de procuration et s'il en a rajouter un nouveau champs procuration avec les données.
Je sais pas si c'est très clair ou pas?
pour moi il faudrait faire une fonction qui parcours ton tableau ['records'] et renvoie la clé correspondant à la position ['label'] = $_GET['nom'].
de là tu pourras acceder à ['procuration'] et faire ce qu'il te plait :
vérifier s'il y en a une mais je vois pas pourquoi il n'y en aurait pas, même vide (ça vient bien d'une base de données ?)
la récupérer dans une variable,
décoder avec json_decode,
ajouter avec array_push,
réencoder,
réassigner ta procuration avec la valeur de la variable.
tu fourres ce fonctionnement dans une fonction et plouf le tour est joué :)
Alors après avoir chercher un peu :
foreach($arr['records'] as &$com)
{
if ($com['label'] == $_GET['Nom']) {
if(!empty($com['Procuration'])){
if(!empty($com[Procuration.$i]))
{
$i+=1;
$com[Procuration.$i] = $proc;
$str = json_encode($arr);
}else {
$com[Procuration.$i] = $proc;
$str = json_encode($arr);
}
}else {
$com['Procuration'] = $proc;
$str = json_encode($arr);
}
}
}
unset($com);
Cela ajoute $proc dans procuration. Si celui-ci n'est pas vide, il crée procuration1 et ainsi de suite.
Le souci c'est qu'il en crée 2 et puis plus rien. J'entend par là que j'ai procuration, procuration2 et procuration3 et pour le reste il modifie procuration3.
Il m'affiche également cela :
Message: Use of undefined constant Procuration - assumed 'Procuration'
ok ,
j'ai vu que tu fais du multi forum :)
Moi j'aurais besoinde plus d'infos :
car tout dépend de ce que tu comptes faire de ces procurations.
1 .Tu as des disques (records) qui ont un nom (label) et 0,1 ou plus procurations. c'est correct ?
ces procurations sont sous la forme json.
4 . Tu auras besoin d'acceder à ces données facilement plus tard.
A ta place je découperais mon code pour bien le comprendre.
A. Donc : tu as une étape de recherche d'un disque : $record = getRecordsByName(nom)
B. Ensuite tu dois vérifier si ce disque a déjà une procuration : haveProcuration($record) (pas forcément utile)
C. Ensuite tu dois inserer ta nouvelle procuration dans ton disque : insertProcuration($record;$newProc)
Oui en effet pour avoir des avis divers.
En fait tu as une liste(records) qui comprend plusieurs personnes (label). Ceux-ci peuvent représenté d'autre personne (procuration) allant jusqu'à 4.
Toutes ses données son compris dans un fichier json.
Ce que je souhaite c'est ajouter 1 ou plusieurs procurations ( pas obligatoire).
Donc quand on ajoute une procuration, cela va dans $com['Procuration'], s'il en ajoute une autre, cela crée un nouveau élément à savoir $com["Procuration1"] et ainsi de suite.
Pour le moment avec le code que j'ai fait, il est possible d'avoir 3 procurations, passé cela il met à jour à chaque fois la dernière procuration. Il m'est donc impossible d'avoir 4 procurations différentes et c'est sur ce point que je bloque un peu car je vois pas pourquoi $i n'irais pas au delà de 3.
Je sais pas si cela est plus clair pour toi.