Fonction update qui fontionne pas

Fermé
satoshioctav Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
d’accord pas de soucis
Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > satoshioctav Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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
Zero
 
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
 
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
 
Avec le code complet, je confirme que tu as raison :)
0
satoshioctav Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
j'ai placer un echo mais il affiche rien ça doit pas rentre dans le if
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > satoshioctav Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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