Bonjour,

J'ai le soucis suivant : au moment de valider la modification d'une annonce, celle-ci se démultiplie dans la table de ma base de données en 2 ou plus exemplaires.

L'information m'a été transmise par le gestionnaire du site web ; de mon côté, en effectuant les mêmes manipulations, je ne parviens pas à reproduire le bogue
Le gestionnaire ne voit aucun message d'erreur, simplement la démultiplication de l'annonce comme si en fait la modification l'insérait plusieurs fois.
A noter que cela arrive occasionnellement seulement. Je ne m'explique pas cette instabilité, et vous ?

Je vous propose le code en question ci-dessous. A savoir que lors de sa modification, l'annonce prend la référence 1 et se place ainsi en tête de liste. Dans la deuxième partie du code, les annonces suivantes sont donc décalées d'un rang : l'ex 1 devient 2, l'ex 2 devient 3, etc.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
<?php include("connection_sql.php"); ?>
<?php include("bbcode.php"); ?>
 
<?php
	// Récupération des paramètres POST
	$id = $_POST["id"];
	$reference = $_POST["reference"];
	$titre = htmlspecialchars($_POST["titre"], ENT_QUOTES);
	$description = str_replace("\n", '<br/>',$_POST["description"]);
?>
 
<?php 
	$req1 = $bdd->prepare ('UPDATE ma_table SET reference=:reference, titre=:titre, description=:description, date_insertion=CURDATE(), timestamp=NOW() WHERE reference = :reference')  or die(print_r($bdd->errorInfo()));
 
	$req1->execute(array(
		'reference' => $reference,
		'titre' => $titre,
		'description' => $description
		));
 
		if($req1) {
			echo '<p>Modification réussie !</p>';
		}
		else {
			echo '<p>Échec à la modification.</p>';
		}
	$req1->closeCursor();	
 
 
 
	//On met à jour la référence
	$req2 = $bdd->prepare('UPDATE ma_table SET reference=99999 WHERE reference=:reference') or die(print_r($bdd->errorInfo()));
	$req2->execute(array('reference' => $reference));
	$req2->closeCursor();
 
	$req3 = $bdd->prepare('UPDATE ma_table SET reference=reference+1 WHERE reference<:reference') or die(print_r($bdd->errorInfo()));
	$req3->execute(array('reference' => $reference));
	$req3->closeCursor();
 
	$req4 = $bdd->prepare('UPDATE ma_table SET reference=1 WHERE reference>=99999') or die(print_r($bdd->errorInfo()));
	$req4->execute(array('reference' => $reference));
	$req4->closeCursor();
 
?>
Je vous remercie de votre attention

Marie