Bonjour,
j'ai créé un foreach qui exécute des $_POST d'un formulaire (4 string "yes|no" et 4 int "1-4").
{% for head in heading if head is not null %}
<div class="col-lg-3">
<h5>Afficher {{ head.name }}</h5>
<div>
<label for="{{ head.name|lower }}">Oui</label>
<input id="{{ head.name|lower }}" name="{{ head.name|lower }}" type="radio" value="yes" checked>
<label for="{{ head.name|lower ~ '2' }}">Non</label>
<input id="{{ head.name|lower ~ '2' }}" name="{{ head.name|lower }}" type="radio" value="no">
<input type="hidden" name="{{ head.name|lower ~ 'Id' }}" value="{{ head.id }}">
</div>
</div>
{% endfor %}
foreach ( $_POST as $key => $value ) :
if ( $value == 'yes' || is_numeric( $value ) ) :
if ( is_numeric( $value ) ) :
Database::getQuery( '
UPDATE ln_users_paragraph
SET showContent = 1
WHERE idUser = ? AND idHeading = ?', [
$_GET['userId'],
$value
] );
endif;
endif;
endforeach;
Le soucis vient de la requête sur la DB. Lorsque je tente de faire un execute sur le idHeading, la $value ne passe pas. Après un submit, le code est parfaitement exécuté sans erreur dans les conditions, sauf qu'il n'y a aucune modification dans la DB.
Une idée ? Merci !
Bonjour,
J'ai l'impression que ta condition n'est pas bonne.
Tu utilises is_numeric()
mais j'ai l'impression que tu attend comme retour yes ou no
Je me demande aussi si la condition n'est pas bonne.
En fait, dans la condition, je dois faire passer la valeur des input type radio "yes" ou "no" et d'un input type hidden qui contient un id de catégorie.
Si je fais un print_r ($key => $value), voilà le résultat :
inventaire => yes inventaireId => 1 psychologie => yes psychologieId => 2 morphologie => yes morphologieId => 3 chronologie => yes chronologieId => 4
En gros, si c'est "yes", il rentre dans la première condition et après, si c'est un ID 1-4, je le bind dans le execute de la requête. Sauf que ce dernier ne fonctionne effectivement pas.
Est-ce que tu as vérifié que tu entres bien dans ta condition is_numeric($value)
? et les données que tu reçois print_r([$value, $_GET['userId']]);
?
Au final, essayes de voir ta requete avec tes valeurs et de l'éxécuter directement.
Yep, les données passaient bien. Mais le soucis, c'est qu'elles passaient toutes. Genre si sur les 4 string, j'en avais que 3 en "yes", il m'exécutait quand même les 4 ID car aucun lien entre eux.
Mais j'ai pu résoudre le problème. J'ai supprimé le input hidden et j'ai créé une requête SQL où je select les ID à travers les input type string. Ainsi, lorsqu'il passe dans la condition $value == "yes", ils sont liés et les ID sont bien exécutés.
if ( $value == 'yes' ) :
$head = Database::getQuery( '
SELECT id, name
FROM ln_users_heading
WHERE name = ?', [ ucfirst( $key ) ] )->fetch( PDO::FETCH_OBJ );
Database::getQuery( '
UPDATE ln_users_paragraph
SET showContent = 1
WHERE idUser = ? AND idHeading = ?', [
$_GET['userId'],
$head->id
] );
endif;