Partage
  • Partager sur Facebook
  • Partager sur Twitter

UPDATE sql qui ne fonctionne pas

Sujet résolu
15 janvier 2018 à 16:12:50

Bonjour à tous,

Je ne comprends vraiment pas d'où viens mon problème, j'ai une requête UPDATE dans mon script qui est censé modifié ma base mais rien n'y fait ca ne veut pas tourner. Je vous montre mon code :

if($_POST['client'] == $resultat[0]['login']) {
	if($_FILES['pdf']['error'] == 4) {
		//Mettre à jour les nouvelles infos dans eu_intervention sans nouveau fichier
		$reponse = $bdd->prepare('UPDATE eu_intervention SET jour=:jour, coût=:coût, descriptif=:descriptif, login=:login, intervenant=:intervenant, type_intervention=:type_intervention WHERE id_inter =:id_inter');
		$reponse->bindParam(':jour',$_POST['date']);
		$reponse->bindParam(':coût',$_POST['cout']);
		$reponse->bindParam(':descriptif',$_POST['descriptif']);
		$reponse->bindParam(':login',$_POST['client']);
		$reponse->bindParam(':intervenant',$_POST['intervenant']);
		$reponse->bindParam(':type_intervention',$_POST['type_intervention']);
		$reponse->bindParam(':id_inter',$_SESSION['change_bon_id_inter']);
		$reponse->execute();
		$reponse->closeCursor();
	} else {
		//Mettre à jour les nouvelles infos dans eu_intervention avec un nouveau fichier
		$reponse = $bdd->prepare('UPDATE eu_intervention SET jour=:jour, coût=:coût, descriptif=:descriptif, login=:login, nom_fichier=:nom_fichier, intervenant=:intervenant, type_intervention=:type_intervention WHERE id_inter=:id_inter');
		$reponse->bindParam(':jour',$_POST['date']);
		$reponse->bindParam(':coût',$_POST['cout']);
		$reponse->bindParam(':descriptif',$_POST['descriptif']);
		$reponse->bindParam(':login',$_POST['client']);
		$reponse->bindParam(':nom_fichier',$_FILES['pdf']['name']);
		$reponse->bindParam(':intervenant',$_POST['intervenant']);
		$reponse->bindParam(':type_intervention',$_POST['type_intervention']);
		$reponse->bindParam(':id_inter',$_SESSION['change_bon_id_inter']);
		$reponse->execute();
		$reponse->closeCursor();

		

		//Suppression de l'ancien fichier
		unlink('../comptes/'.$_POST['client'].'/'.$resultat[0]['nom_fichier']);

		//Upload du nouveau fichier
		$dossier = '../comptes/'.$_POST['client'].'/';
        $adresse = $dossier . basename($_FILES['pdf']['name']);
        move_uploaded_file($_FILES['pdf']['tmp_name'], $adresse);
    }

Qu'on soit dans le if ou dans le else rien n'y fait elle ne veut pas marcher, j'ai bien verifié que je rentrais dans l'un ou l'autre avec des petits echo par ci par la, j'ai aussi essayé la requete diretement sur phpmyadmin et la pas de probleme ma requete tourne bien.

J'ai aussi bien sur vérifié toutes mes variables $_POST / $_SESSION ou $_FILES et tout est correct :( Je vois vraiment pas d'où peut venir le problème.

Je suis bien connecté à ma base car plus haut dans mon code j'ai un petit SELECT qui fonctionne très bien, et de toute façon je n'ai pas d'erreur de la pars de ma base, simplement rien du tout.

Vous savez d'où cela peut venir ? 

Merci à vous !

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2018 à 16:31:55

Salut,

active les exceptions PDO ;) (voir ma signature)

++

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2018 à 16:39:15

Voici le code que j'ai changé pour essayer de faire ce que tu m'a demandé :

<?php
try
{
    $bdd = new PDO('mysql:host=host.mysql.db;dbname=namebase;charset=utf8', 'limlim', 'motdepasse');
    //$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}
?>

La ligne en commentaire c'est ce que j'avais avant et la ligne juste en dessous c'est donc ce que je viens de rajouter. Depuis que j'ai fais ça, plus aucune page de marche :lol: (HTTP ERROR 500) 

-
Edité par Warkles 15 janvier 2018 à 16:43:39

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2018 à 16:44:51

Salut !

Tu as une erreur de syntaxe, qui te serait notifiée si tu avais aussi activé l'affichage des erreurs de PHP (demander uniquement à PDO est inutile si PHP ne doit rien dire). Tu en trouveras plus à ce sujet dans les FAQs (comme celle mentionnée dans ma signature).

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2018 à 16:51:45

En effet ! Merci beaucoup ! Voici l'erreur que PHP me retourne :

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/limousinf/www/liminfo/mon_compte/admin/verif_modif_inter.php on line 23


Ma ligne 23 étant l’exécution de ma requête, je vais faire les paramètres 1 par 1, je vais bien trouver l'erreur merci à vous ! :D


EDIT : Alors le problème venait parait-il de mon id j'ai tout réécrit à la main et ça marche ! B=Donc bon, on est contant :lol:

Merci encore pour votre aide !

-
Edité par Warkles 15 janvier 2018 à 17:00:35

  • Partager sur Facebook
  • Partager sur Twitter
23 mars 2021 à 14:18:53 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


23 mars 2021 à 16:30:09

@programmeur prince Bonjour, merci de ne pas déterrer d'ancien sujet résolu, créer le votre dans le respect des règles du forum, a savoir un minimum de politesse( un message commence par bonjour et se termine par des remerciements par avance pour les futures réponses), un descriptif de  votre problématique et votre code insérer sur le forum à l'aide du bouton code </> prévu à cet effet. 

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter