PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-09-2015 16:00:18

Alfi
Membre
Inscription : 19-09-2015
Messages : 2
Site Web

[Résolu] Mon POST n'aime pas le DELETE

Bonjour à tous,


après m'être arraché les cheveux à trouver l'origine d'un traitement ajax qui réussissait mais qui ne semblait pas marcher côté DB. J'ai pu cibler aujourd'hui la zone de code PHP qui ne fonctionne pas comme elle le devrait.

Ajax transmet un ID a un fichier PHP contenant ce code là :

//si on est dans le cas d'une suppression de société
if(isset($_POST['societyIdSuppr']) && !empty($_POST['societyIdSuppr'])){
  if(is_numeric($_POST['societyIdSuppr'])){
  $myId = $_POST['societyIdSuppr'];
  //on commence par virer toutes les relations avec la société
  $delElem = myQuery('DELETE FROM proisls_society_elem WHERE elem_society = "$myId"');
  if($delElem)
    $delSoc = myQuery('DELETE FROM proisls_society WHERE society_id = "$myId"');
    if($delSoc)
      echo "Success!";
  }
  else return false;
}

Ajax récupère bien son "Success!" et tous mes espions ne m'indiquent pas d'erreur SQL (chaque étape est surveillée). Or aucun DELETE n'est effectué en DB, si je recharge ma page où JS a pris soin de supprimer l'élément, il réapparait aussitôt.

Par contre, ce code qui reprend en brut l'ID de ma suppression fonctionne (c'est le même, avec l'ID directement collé dans les requêtes) :

if(isset($_POST['societyIdSuppr']) && !empty($_POST['societyIdSuppr'])){
  if(is_numeric($_POST['societyIdSuppr'])){
  //on commence par virer toutes les relations avec la société
  $delElem = myQuery('DELETE FROM proisls_society_elem WHERE elem_society = "2"');
  if($delElem)
    $delSoc = myQuery('DELETE FROM proisls_society WHERE society_id = "2"');
    if($delSoc)
      echo "Success!";
  }
  else return false;
}

J'ai 5 ans de PHP dans les pattes et j'ai jamais vu ça, je ne sais même pas comment débuguer. Est-il possible que le POST soit numérique, que mes logs m'affichent "2" jusqu'à la requête mais que la variable ne soit pas prise en compte ?
Ca sent l'erreur IFC à plein nez mais je pense avoir besoin d'aide.


Merci à tous. N'oubliez pas de remercier vos cerveaux après avoir trouvé la solution.
Bonne journée à tous.

Dernière modification par Alfi (19-09-2015 19:28:59)

Hors ligne

#2 19-09-2015 16:04:12

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : [Résolu] Mon POST n'aime pas le DELETE

$delElem = myQuery('DELETE FROM proisls_society_elem WHERE elem_society = "'.$myId.'"');

Hors ligne

#3 19-09-2015 19:28:35

Alfi
Membre
Inscription : 19-09-2015
Messages : 2
Site Web

Re : [Résolu] Mon POST n'aime pas le DELETE

Whow, merci c'est tellement simple que j'en ai honte.
Certainement la fatigue, le projet commence à être long.

Merci beaucoup et bonne soirée.

Hors ligne

#4 23-09-2015 13:34:50

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] Mon POST n'aime pas le DELETE

$delElem = myQuery("DELETE FROM proisls_society_elem WHERE elem_society = '$myId'");
Comme ça, ça suffit wink

a++

Hors ligne

#5 24-09-2015 09:12:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] Mon POST n'aime pas le DELETE

Salut,

Vu que myId est de type numérique ET décimal, $delElem = myQuery("DELETE FROM proisls_society_elem WHERE elem_society = $myId"); est encore plus simple et évite les conversions de type implicites.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 24-09-2015 19:48:25

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : [Résolu] Mon POST n'aime pas le DELETE

avec cette dernière version, si j'envois en post "1456584556 or 1", oh la table est vidée. donc oui, mais à condition de vérifier le contenu du $_POST.

Hors ligne

#7 24-11-2015 20:04:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] Mon POST n'aime pas le DELETE

^^

Il faut toujours contrôler le contenu des variables reçues.
Ici un $myID=intval($_POST['societyIdSuppr']); suffi.

++

PS: Si la variable numérique est supérieure à un entier PHP, il faut passer par un preg_match_all('#[0-9]#',$myID);

Dernière modification par Jc (24-11-2015 21:15:39)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums