Fonction update qui fontionne pas

Fermé
satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018 - Modifié le 19 déc. 2018 à 15:24
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 22 déc. 2018 à 17:39
salut!
je bug sur un problème,ma fonction update ne fonctionne pas et je sais pas pourquoi voici le code

 public function update(blog $blog)
 {

  $req = $this->db->prepare('UPDATE `blog` SET `auteur`= :auteur, `titre`=:titre, `contenu`=:contenu  WHERE `id`= :id');

  $req->bindValue(':auteur',$blog->auteur());
  $req->bindValue(':titre',$blog->titre());
  $req->bindValue(':contenu',$blog->contenu());
  $req->bindValue(':id',$blog->id(), PDO::PARAM_INT); 

$req->execute();
  
 }


EDIT : Ajout des balises de code
merci de votre aides
A voir également:

3 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
19 déc. 2018 à 15:25
Bonjour,

Déjà Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Merci d'y penser à l'avenir.

Ensuite, vu que tu fais du PDO.. gère les éventuelles erreurs ... https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0
satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
19 déc. 2018 à 15:33
d’accord pas de soucis
Merci
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
20 déc. 2018 à 22:37
Tu as donc activé l'affichage des erreurs PHP ET PDO ?
Tu as mis ton code ente try/catch (dans la fonction d'update) ?
Ca serait bien de nous montrer ton code corrigé...
De plus.. si ça ne fonctionne pas.. tu dois avoir un message d'erreur... quel est-il ?
As tu également vérifié que tu entrais bien dans ton IF ?
Il serait bien également de récupérer proprement les variables AVANT de les utiliser. (je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
20 déc. 2018 à 20:50
j'ai activer les erreur mais y'en a pas par contre ma fonction fonctionne toujours pas voici le code d’où je l’appelle
if (isset($_GET['modifier'])) 
			{
				$blog = new blog($_POST['auteur'],$_POST['titre'],$_POST['contenu']);
			    $bb = $manager->update($blog);
			}
0
if (isset($_GET['modifier'])) 
			{
				$blog = new blog($_POST['auteur'],$_POST['titre'],$_POST['contenu']);
			    $bb = $manager->update($blog);
			}


Il n'y a rien qui te choque ici ?
$_GET ou $_POST il faut choisir !
0
Utilisateur anonyme
21 déc. 2018 à 11:04
Bonjour

Tu as probablement raison, mais ça n'est pas évident. Ça peut très bien marcher si 'modifier' est dans l'url de l'action, même avec la méthode POST. Il n'y a rien de choquant.
0
Zero > Utilisateur anonyme
21 déc. 2018 à 13:08
Avec le code complet, je confirme que tu as raison :)
0
satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
21 déc. 2018 à 11:10
je vous partage tout mon code
<?php
require 'blog.php';
require 'managerblog.php';

try
{
	$db = new PDO('mysql:host=localhost;dbname=test;charset = utf8','root','');
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)

{
        die('Erreur : ' . $e->getMessage());
}


$manager = new manager($db);
$blog = NULL;
if (isset($_GET['modifier'])) 
{
  $blog = $manager->getunique((int)$_GET['modifier']);
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>mon blog</title>
</head>
<body>




	<form action="adminsblog.php" method="post" >
	<label>auteur</label>	<input type="text" name="auteur"
		<?php
		if($blog){
			?>
			value="<?php echo($blog->auteur())?>"
			<?php
		}
		else
		{ ?>
          placeholder="auteur"
         <?php 
		}
		?>

	 >
	<label>titre</label>	<input type="text" name="titre"
		<?php
		if($blog){
			?>
			value="<?php echo($blog->titre())?>"
			<?php
		}
		else
		{ ?>
          placeholder="titre"
         <?php 
		}
		
		?>
	>
	<label>contenu</label>	<textarea rows="8" cols="60" name="contenu" >
		<?php
		if($blog){ 
			echo($blog->contenu());
		}
		?>
	</textarea>
	<?php
		if($blog){ 
			?>
			<input type="hidden" name="id" value="<?php echo $blog->id(); ?>">
			<?php
		}
		?>
	<input type="submit" name="action" 
		<?php
			if($blog)
				echo 'value="Modifier"';
			else
				echo 'value="Ajouter"';
			?>
		">
	</form>
	


<?php


if(isset($_POST["action"]))
{
	if(isset($_POST['auteur'])&& !empty($_POST['auteur']) && isset($_POST['titre'])&& !empty($_POST['titre']) && isset($_POST['contenu'])&& !empty($_POST['contenu']) )
	{
		if($_POST['action'] == "Modifier")
		{
			if (isset($_GET['modifier'])) 
			{
				$blog = new blog($_POST['auteur'],$_POST['titre'],$_POST['contenu']);
			    $manager->update($blog);

			}
			$blog = new blog($_POST['auteur'],$_POST['titre'],$_POST['contenu']);
			var_dump($manager->update($blog));
	    }
		elseif($_POST['action'] == "Ajouter")
		{   
			$blog = new blog($_POST['auteur'],$_POST['titre'],$_POST['contenu']);
			$manager->add($blog);
	        echo 'la new a bien été ajouter ';
		}
		else
		{
			echo 'la new n\'est pas valide';
		} 
	}
	else
	{
      echo "L'article est incomplet veuillez renseigner tous les champs";
	} 
   }

	

//    	 $blog->setDateAjout(new DateTime($blog->dateAjout()));

if (isset($_GET['supprimer'])) 
{
  $blog = $manager->delete((int)$_GET['supprimer']);
  echo 'le billet a bien été supprimer';
}


	$blogs = $manager->getlist(10);


?>

 <table>
 	<tr>
 		<th>auteur</th>
 		<th>titre</th>
 		<th>date d'ajout</th>
 		<th>action</th>
 	</tr>

    <?php
    foreach ($blogs as  $blog) {
     ?>
 	<tr>
 		<td><?php echo $blog->auteur();?></td>
 		<td><?php echo $blog->titre();?></td>
 		<td><?php echo $blog->dateAjout();?></td>
 		<td></td>
 	    <td><a href="?modifier=<?php echo $blog->id(); ?>">modifier</a> | <a href="?supprimer=<?php echo $blog->id(); ?>">supprimer</a></td>
 	</tr>
<?php
    }

    //
     ?>
 </table>
</body>
</html>

0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
21 déc. 2018 à 14:29
Bon...
je te redonne ces quelques conseils à lire : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Je pense que ça te sera des plus utils...

- Ensuite, suite aux remarques de mes collègues.... as tu essayé de voir ce que contenait ta variable
$_GET et ta variable $_POST lorsque tu envoies pour modification ??
- Es-tu sûr d'entré dans ton IF ???? ( places y un echo voir si il s'affiche...).


0
satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
22 déc. 2018 à 17:05
j'ai placer un echo mais il affiche rien ça doit pas rentre dans le if
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > satoshioctav Messages postés 7 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018
22 déc. 2018 à 17:39
Et le reste de mes questions ???

as tu essayé de voir ce que contenait ta variable
$_GET et ta variable $_POST lorsque tu envoies pour modification ??
0