8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un soucis, j'arrives pas à le résoudre.

Lors de l'insertion en BDD des informations, je me retrouve avec deux fois les données envoyés sur deux lignes différents.

Le soucis, c'est que ça ne me fait ça qu'avec cette page, les autres pages d'insertions ne posent aucuns soucis, et reprennent la même structure.

Code permettant l'insertion qui pose soucis

if (!empty($_POST) && isset($_POST['envoyer_demande_allocation']) && isset($_POST['Document'])){
// On traite au dessus les champs, par question de sécurité, je ne le montrerais pas ici, merci  [cligne]
	$querydemande = $cnx->prepare('INSERT INTO demandesAdministratives 
		(idPersonnage,
		Name,
		NomEntreprise,
		TypeDemandeurDemandesAdministratives,
		dossierDemandesadministratives,
		detailDemandesadministratives,
		enCharge,
		Valide,
		Payee,
		Actif,
		Montant,
		nomPersoEnCharge,
		DateDemande,
		DatePriseEnCharge) 
	VALUES 
		(:idPersonnage,
		:Name,
		:NomEntreprise,
		:TypeDemandeurDemandesAdministratives,
		:dossierDemandesadministratives,
		:detailDemandesadministratives,
		:enCharge,
		:Valide,
		:Payee,
		:Actif,
		:Montant,
		:nomPersoEnCharge,
		:DateDemande,
		:DatePriseEnCharge)
	');
	$querydemande->bindValue(':idPersonnage',(int) $idPersonnage, PDO::PARAM_INT);
	$querydemande->bindValue(':Name', $Name, PDO::PARAM_STR);
	$querydemande->bindValue(':NomEntreprise', $NomEntreprise, PDO::PARAM_STR);
	$querydemande->bindValue(':TypeDemandeurDemandesAdministratives', $TypeDemandeurDemandesAdministratives, PDO::PARAM_STR);
	$querydemande->bindValue(':dossierDemandesadministratives', $dossierDemandesadministratives, PDO::PARAM_STR);
	$querydemande->bindValue(':detailDemandesadministratives', $detailDemandesadministratives, PDO::PARAM_STR);
	$querydemande->bindValue(':enCharge', $enCharge, PDO::PARAM_STR);
	$querydemande->bindValue(':Valide', $Valide, PDO::PARAM_STR);
	$querydemande->bindValue(':Payee', $Payee, PDO::PARAM_STR);
	$querydemande->bindValue(':Actif', $Actif, PDO::PARAM_STR);
	$querydemande->bindValue(':Montant', $Montant, PDO::PARAM_STR);
	$querydemande->bindValue(':nomPersoEnCharge', $nomPersoEnCharge, PDO::PARAM_STR);
	$querydemande->bindValue(':DateDemande', $DateDemande, PDO::PARAM_STR);
	$querydemande->bindValue(':DatePriseEnCharge', $DatePriseEnCharge, PDO::PARAM_STR);
	try {
		$querydemande->execute();
		inserer_logs($GidCompte, $GidPersonnage, $page, $type);
?>
		<script type="text/javascript">
			window.setTimeout("location=('./');",100);
		</script>
<?php
		$querydemande->closeCursor();
	}
	catch(PDOException $e){
		echo '<div id="alert" class="alert alert-error">
			Erreur : La requête à un problème, merci de contacter un administrateur ou le webmaster!<pre>'.$e.'</pre>
		</div>';
		exit;
	}
}


J'ai indenté les noms des champs et les valeurs pour plus de clarté, mais tout est sur une seule ligne par défaut.

Voici un code d"insertion qui fonctionne parfaitement sans doublons

// On traite au dessus les champs, par question de sécurité, je ne le montrerais pas ici, merci  [cligne]
			$query = $cnx->prepare('INSERT INTO Taxe (NomTaxe, PrixTaxe, Pourcentage) VALUES (:NomTaxe, [langue]rixTaxe, [langue]ourcentage)');
			$query->bindValue(':NomTaxe', $NomTaxe, PDO::PARAM_STR);
			$query->bindValue(':PrixTaxe',(int) $PrixTaxe, PDO::PARAM_INT);
			$query->bindValue(':Pourcentage',(int) $Pourcentage, PDO::PARAM_INT);
			try {
				$query->execute();
				inserer_logs($GidCompte, $GidPersonnage, $page, $type);
?>
				<script type="text/javascript">
					window.setTimeout("location=('./index.php?p=taxes');",300);
				</script>
<?php
			}
			catch(PDOException $e){
				echo '<div id="alert" class="alert alert-error">
					Erreur : La requête à un problème, merci de contacter un administrateur ou le webmaster!
				</div>';
				exit;
			}


Voici ci-dessous un screen du rendu de ma BDD pour vous montrer les doublons

Je n'arrives pas à comprendre pourquoi j'ai des doublons.

Je vous remercie grandement de votre aide, et ce par avance.

Bien cordialement.
Modérateur
Et l'eau,

ça ?

<script type="text/javascript">
			window.setTimeout("location=('./');",100);
		</script>

note : les guillemets doubles, c'est pas la peine et la syntaxe est bizarre
Modifié par niuxe (22 Apr 2020 - 12:12)
C'est pour renvoyer à l’accueil une fois le traitement effectué. Je peux pas mettre de header() du fait que c'est pas en première ligne et que j'ai déjà des écritures dessus.

Qu'entends tu par la syntaxe est bizarre?

Pour les doubles guillemets, c'est par habitude, je sais que c'est pas tant utile mais on se change pas si facilement Smiley cligne

Edit: Pas possible que ça soit ça, je l'utilise également sur l'autre script montré Smiley cligne

Merci à toi
Modifié par Fre3z69 (22 Apr 2020 - 14:37)
Je viens de faire un var_dump() des éléments après avoir préparer ma requête.

Si je vais un var_dump($querydemande);
ca donne
page.php:40:
object(PDOStatement)[5]
  public 'queryString' => string 'INSERT INTO demandesAdministratives 
		(idPersonnage,Name,NomEntreprise, TypeDemandeurDemandesAdministratives, dossierDemandesadministratives, detailDemandesadministratives, enCharge, Valide, Payee, Actif, Montant, nomPersoEnCharge, DateDemande, DatePriseEnCharge) 
		VALUES (:idPersonnage, :Name, :NomEntreprise, :TypeDemandeurDemandesAdministratives, :dossierDemandesadministratives, :detailDemandesadministratives, :enCharge, :Valide, [langue]ayee, :Actif, :Montant, :nomPersoEnCharge, [lol]ateDemande, [lol]atePriseEnC'... (length=522)


Si je fais un var_dump($querydemande->execute());
Ca donne (en envoyant dans la BDD au passage, ce qui n'est pas grave pour le test)
page.php:40:boolean true

Dans les deux cas, je n'ai rien qui justifie le double envoie dans ma BDD à ce moment là soit dans le try{}

Je comprend définitivement pas la raison de mes doublons, que ça soit en local, ou sur un serveur de prod. J'ai inséré pour tester, pour comparer les résultats, ils sont identiques.
Modifié par Fre3z69 (23 Apr 2020 - 08:29)