[RESOLU] INSERT INTO qui ne fonctionne plus depuis ce matin

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] INSERT INTO qui ne fonctionne plus depuis ce matin

Re: [RESOLU] INSERT INTO qui ne fonctionne plus depuis ce matin

par @rthur » 08 mars 2022, 09:29

Avec plaisir ! :-D

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 07 mars 2022, 22:37

Je crois que j'ai trouvé l'erreur, j'ai une colonne de ma table request_log qui a disparue.
Comment ça peut disparaitre tout seul ??
je vais voir si c'est bien ça

EDIT: J'ai une erreur 1194
EDIT BIS: J'ai fait une réparation sous phpmyadmin et tout est rentré dans l'ordre.............Pourquoi j'ai pas commencé par ça :mrgreen:

En tout cas un grand merci à Arthur pour son aide et surtout sa patience :wink:

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 07 mars 2022, 22:21

Bonsoir Arthur, désolé, ce qui te parait simple et évident ne l'est pas encore pour moi mais j'aime bien ta façon de nous pousser à trouver la solution par nous même :-)
J'ai passé le ERRMODE en WARNING

Code : Tout sélectionner

try{ $db = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); //echo 'Connexion réussie'; } catch(PDOException $e){ echo "ERREUR : " . $e->getMessage(); }
Le déroulement exact est celui ci:
on enregistre une commande qui arrive dans la base "request" avec le statut "C"
on prend en charge une commande qui passe au statut "P" et reste toujours dans la base "request"
on livre la commande qui passe au statut "L" et est copiée dans la base "request_log"
la commande de la base request est supprimée

ça a évolué, maintenant la ligne qui doit passer d'une base à l'autre disparait #-o ce qui veut dire qu'il n'y a vraiment que la partie copie dans la base request_log qui ne fonctionne plus.

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par @rthur » 07 mars 2022, 16:19

Je t'ai donné le lien vers la doc en précisant de mettre le paramétrage en Warning.
Donc ouvre la page de la doc, et cherche "Warning" :-D

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 06 mars 2022, 19:14

J'ai quand même modifié mon fichier de connexion (code copier sur ce forum)

Code : Tout sélectionner

[b]<?php $servername = 'localhost'; $dbname = '.........'; $username = '......'; $password = '.....'; try{ $db = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //echo 'Connexion réussie'; } catch(PDOException $e){ echo "ERREUR : " . $e->getMessage(); } ?>[/b]
ça ne change rien, tout se passe bien sans erreur mais la copie dans l'autre base ne se fait pas :(

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 06 mars 2022, 00:32

Bonsoir Arthur et merci beaucoup pour ton aide mais là je bloque, mes compétences en php ne sont pas très élevées.
J'ai suivi le lien et lu toute la doc sur les erreurs et leur gestion mais je ne sais pas ce que je dois en faire.
Merci quand même ;-)

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par @rthur » 05 mars 2022, 09:52

Relis mon message ;-)

Si je demande en Warning, c'est justement parce que demander de lever des exceptions en gestion d'erreurs mais sans utiliser des try... catch dans ton code lors de tes requêtes ça ne sert à rien... ou plutôt exactement ça masque les erreurs ;-)

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 04 mars 2022, 23:38

Bonsoir Arthur,

oui tout est activé lors de la connexion à la base

Code : Tout sélectionner

try{ $db = new PDO('mysql:host='.$HOST.';dbname='.$DB_NAME, $USER, $PASS); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ echo $e; } ?>
J'ai fait un test de requete dans phpmyadmin en entrant des valeurs manuellement et ça fonctionne

Code : Tout sélectionner

INSERT INTO requests_log (statut, emplacement, lieu, piece) VALUES ('L', '18A', 'SE185', 4000012350)
hier il y a eu un problème que nous avons attribué au réseau et aujourd'hui ce bug alors que ce code fonctionne parfaitement depuis des mois.
J'ai l'impression que c'est du coté de l'attribut GET qu'il y a un problème (id=".$_GET['id'])

Re: INSERT INTO qui ne fonctionne plus depuis ce matin

par @rthur » 04 mars 2022, 15:04

Bonjour,

As-tu testé ta requête avec phpMyAdmin ?
As-tu bien activé le flag de gestion des erreurs de PDO en Warning ?
https://www.php.net/manual/fr/pdo.error-handling.php

INSERT INTO qui ne fonctionne plus depuis ce matin

par comardud » 04 mars 2022, 13:50

Bonjour à tous,

je fait appel aux spécialistes du PHP
j'ai un souci depuis ce matin que je n'arrive pas à comprendre:

Tout fonctionnait parfaitement jhier et absolument rien n'a été modifié entre temps.

Dans le début de mon code je récupère ma ligne via SELECT * FROM requests WHERE id=".$_GET['id'] que j'envoi ensuite dans une autre base via INSERT INTO requests_log
Cette même ligne à un statut "P" qui passe ensuite à "L" avant d'être envoyé dans l'autre base.

Aujourd'hui seul le statut change (de P à L) mais le transfert dans l'autre base ne se fait plus et je suis bien incapable de comprendre pourquoi.
Je précise que je n'ai aucun message d'erreur ou autre.
la 1ere base est "request"
la 2eme base est "request_log"

Merci de votre aide
Voici le début du code:

Code : Tout sélectionner

<?php if (isset($_GET['id'])) { // On regarde si l'utilisateur a cliqué sur le bouton 'livré' et envoyé une requête GET $timestamp = date('Y-m-d H:i:s', time()); // On prend le timestamp $q1 = $db->prepare("UPDATE requests SET statut=:statut, horodate_l=:horodate_l WHERE id=:id"); // On envoi l'info à la base de données $q1->execute([ 'statut' => 'L', 'horodate_l' => $timestamp, 'id'=> $_GET['id'] ]); $qdone = $db->query("SELECT * FROM requests WHERE id=".$_GET['id']); $result = $qdone->fetch(); $qtransfert = $db->prepare("INSERT INTO requests_log (statut, emplacement, lieu, piece, Name, qte, com, worklift_type, codeof, horodate_cde, horodate_souhaitee, worklift_number, id_livreur, horodate_p, horodate_r, horodate_fin_r, horodate_l) VALUES (:statut, :emplacement, :lieu, :piece, :Name, :qte, :com, :worklift_type, :codeof, :horodate_cde, :horodate_souhaitee, :worklift_number, :id_livreur, :horodate_p, :horodate_r, :horodate_fin_r, :horodate_l)"); // On enregistre cette commande dans la base de données des logs (des commandes terminées) $qtransfert->execute([ 'statut' => $result['statut'], 'emplacement' => $result['emplacement'], 'lieu' => $result['lieu'],
Je me demande bien ce qui a pu se passer entre hier et aujourd'hui :shock: