Fonction update qui fontionne pas

Fermé
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

3 réponses

  1. Modérateur
    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
    1. d’accord pas de soucis
      Merci
      0
    2. 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
    3. Modérateur
      @satoshioctavTu 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
  2. 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
    1. 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
    2. 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
  3. Modérateur
    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
    1. j'ai placer un echo mais il affiche rien ça doit pas rentre dans le if
      0
    2. Modérateur
      @satoshioctavEt 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