Ok, tout d'abord, j'applige si cette question a déjà été posée, j'ai passé les 12 dernières heures à passer au crible des centaines de sujets de discussion et je n'en ai pas trouvé de réponse à cette question exactement encore si ici.PHP explode supprime la première valeur de tableau
J'ai une page que j'ai construite avec une liste d'utilisateurs qui est autopopulée lorsque les utilisateurs se connectent, et chaque utilisateur a une case à cocher qui permet à l'hôte de sélectionner les utilisateurs et de les supprimer si nécessaire. J'utilise jQuery pour envoyer une chaîne de tableau à une page php où j'essaye d'exploser la chaîne, de parcourir les userids et de supprimer les id passés de notre base de données. Tout fonctionne très bien, sauf si je choisis plus d'un utilisateur. Quand je sélectionne plus d'un utilisateur et que je passe le tableau au gestionnaire php, il explose le tableau mais ne conserve que la dernière valeur dans le tableau, le reste est perdu quelque part dans le trou noir du script.
Voici mon code de ma page javascript:
function rem_user() {
var ids = $('input:checkbox[id=del]:checked').map(function(){
return this.value
}).get();
alert(ids);
jQuery("#rem_msg").load(controlpage, {AdmFnc: "rem_user", del_ids: ids}, getUsers);
}
ce tableau est ensuite transmis au php contrôle page où il est géré par:
if (strcmp($AdmFnc, rem_user) == 0){
echo "";
$ids = trim($_POST['del_ids']);
$ids = explode(',',$ids);
if(is_array($ids)){
foreach($ids as $userid){
mysqli_query($dbc, "UPDATE webcastlogin SET logoutTime = '$current_time' WHERE userid = '$userid'") or die('Error setting logout time '.mysqli_error($dbc));
mysqli_query($dbc, "DELETE FROM weekly_users WHERE userid = '$userid'") or die('Error removing users '.mysqli_error($dbc));
}
echo 'Selected IDs removed';
} else if (empty($ids)) {
echo 'Code is wrong, no array sent';
} else {
mysqli_query($dbc, "UPDATE webcastlogin SET logoutTime = '$current_time' WHERE userid = '$ids'");
mysqli_query($dbc, "DELETE FROM weekly_users WHERE userid = '$ids'");
echo 'Selected ID removed';
}
}
Comme vous pouvez le voir sur mon javascript , j'ai une alerte configurée afin que je puisse vérifier que les informations envoyées sont correctes, autant que je peux dire de cette alerte, c'est un tableau délimité ","
donc c'est ce que j'utilise du côté php pour l'exploser.
Je suis à bout de nerfs en essayant de comprendre pourquoi quand je lance cette boucle foreach, je n'ai que la valeur de l'élément final dans le tableau.
Toute aide serait grandement appréciée et pourrait sauver mes cheveux pour de futurs challanges de codage.
Merci
Merci pour la réponse, j'ai testé votre réponse, mais quand je vais au script PHP, je n'arrive pas à accéder au tableau complet qui est envoyé, quand je lance la variable à travers la déclaration "if", c'est seulement reconnu comme une valeur unique. –
Ok, je prends ça en arrière, je ne l'ai pas configuré correctement, il doit y avoir un espace entre les parenthèses pour que php le reconnaisse comme un tableau, une fois que je l'ai fait ça a fonctionné comme un charme. Merci beaucoup! –
Salut, je vous en prie. Je veux mettre à jour ma réponse correctement, donc vous dites qu'il doit être '' del_ids [] "'? –