Mise à jour d'enregistrement dans bd via formulaire

t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
ecddu69 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

J'ai un formulaire qui récupère les champs d'un enregistrement pour éventuellement les modifier. Si j'enregistre une première date de naissance ou de décès, celles-ci s'enregistre bien. Si je veux la ou les modifier, celles-ci s'affichent bien dans les champs prévus à cet effet. Mais si je les modifies ou même si je ne les modifies pas et que je valide le formulaire, celles-ci disparraissent de l'enregistrement. A noté que cela fonctionnait correectement avant le passage à PHP8.

Mon formulaire :

<style type="text/css"> 
a:hover {color:red;}
a {text-decoration:none; color:yellow;}
</style>
<SCRIPT LANGUAGE="Javascript" SRC="date_nais.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_dc.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_mariag1.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_mariag2.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_mariag3.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_mariag4.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_divorce1.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_divorce2.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_divorce3.js"></script>
<SCRIPT LANGUAGE="Javascript" SRC="date_divorce4.js"></script>
<script>
function ajout2_input()
{
 var choix_dc=document.getElementById('lieu_naissance').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_inputnais_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_naissance" id="lieu_naissance" size="55"/>';  																																		
 document.getElementById('lieu_naissance').focus(); 
 }else{ 
  document.getElementById('div_inputnais_autre').innerHTML='';  
 } 
}
function ajout3_input()
{
 var choix_dc=document.getElementById('lieu_dc').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_input_lieudc_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_dc" id="lieu_dc" size="55"/>';  																																		
 document.getElementById('lieu_dc').focus(); 
 }else{ 
  document.getElementById('div_input_lieudc_autre').innerHTML='';  
 } 
}
function ajout_lieu_mariag1_input()
{
 var choix_dc=document.getElementById('lieu_mariage_1').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_input_lieu_mariag1_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_mariage_1" id="lieu_mariage_1" size="55"/>';  																																		
 document.getElementById('lieu_mariage_1').focus(); 
 }else{ 
  document.getElementById('div_input_lieu_mariag1_autre').innerHTML='';  
 } 
}
function ajout_lieu_mariag2_input()
{
 var choix_dc=document.getElementById('lieu_mariage_2').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_input_lieu_mariag2_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_mariage_2" id="lieu_mariage_2" size="55"/>';  																																		
 document.getElementById('lieu_mariage_2').focus(); 
 }else{ 
  document.getElementById('div_input_lieu_mariag2_autre').innerHTML='';  
 } 
}
function ajout_lieu_mariag3_input()
{
 var choix_dc=document.getElementById('lieu_mariage_3').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_input_lieu_mariag3_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_mariage_3" id="lieu_mariage_3" size="55"/>';  																																		
 document.getElementById('lieu_mariage_3').focus(); 
 }else{ 
  document.getElementById('div_input_lieu_mariag3_autre').innerHTML='';  
 } 
}
function ajout_lieu_mariag4_input()
{
 var choix_dc=document.getElementById('lieu_mariage_4').value; 
 if(choix_dc =='autre'){ 
  document.getElementById('div_input_lieu_mariag4_autre').innerHTML='<font size="2" color="red">Précisez : Ville, cp, Département, PAYS</font><input type="text" name="lieu_mariage_4" id="lieu_mariage_4" size="55"/>';  																																		
 document.getElementById('lieu_mariage_4').focus(); 
 }else{ 
  document.getElementById('div_input_lieu_mariag4_autre').innerHTML='';  
 } 
}

</SCRIPT>
</head>
<body>
<center>
<font size="5"><b><u>Modification d'un individu</u></b></font> 

<?php   

$id = !empty($_GET['id']) ? $_GET['id'] : NULL;
$date_naissance = !empty($_GET['date_naissance']) ? $_GET['date_naissance'] : NULL;
$cj1 = !empty($_POST['cj1']) ? $_POST['cj1'] : NULL;
$cj2 = !empty($_POST['cj2']) ? $_POST['cj2'] : NULL;
$cj3 = !empty($_POST['cj3']) ? $_POST['cj3'] : NULL;
$cj4 = !empty($_POST['cj4']) ? $_POST['cj4'] : NULL;
//echo '<pre>'; print_r($_GET); echo '</pre>';	exit;
$result=mysql_query("SELECT * FROM individus WHERE id='$id'");

if ($row=mysql_fetch_array($result)) 
{
	echo "<form action='maj_bd_indiv.php' enctype='multipart/form-data' method='POST' value='envoyer' name='soumettre'>";
	echo "<input type=hidden name=\"id\" value=$id>";
	echo '<table>'; 
	echo '<tr><td height="60"></td></tr>';
	echo '<tr><td><b><u>NOM :</u></b></td><td><input name="nom" type="text" id="nom" value="'.$row['nom'].'" size="55" maxlength="55"></td></tr>'; ...............
..................

//*****date de naissance

	echo '<tr><td height="20"></td></tr>';
	echo '<tr><td><u>Date de naissance :</u></td> ';
	if (!empty($row['date_naissance']))	
	{
		echo '<td width=550px><select name="date_naissance" id="date_naissance" onchange="ajout_input();">';  
		echo '<option value="'.$row['date_naissance'].'">'.$row['date_naissance'].'</option>'; // ligne obligatoire pour avoir un changement a tous les coups 
		echo '<option VALUE=""></option>';
		echo '<option style="color:red;" value="autre">Saisie d\'une autre date</option>';
		echo '</select>'; 
		echo '<div id="div_input_autre"></div></td></tr>'; //div ou sera rajouté l'input par javascript 
	}
	else
	{
	echo '<td><SELECT name="nais_expression1">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="Vers">Vers</OPTION>
		<OPTION VALUE="Avant">Avant</OPTION>
		<OPTION VALUE="Après">Après</OPTION>
		<OPTION VALUE="Entre">Entre</OPTION>
		</SELECT>
		<SELECT name="nais_jour1">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="1">1</OPTION>
		<OPTION VALUE="2">2</OPTION>
		<OPTION VALUE="3">3</OPTION>
		<OPTION VALUE="4">4</OPTION>
		<OPTION VALUE="5">5</OPTION>
		<OPTION VALUE="6">6</OPTION>
		<OPTION VALUE="7">7</OPTION>
		<OPTION VALUE="8">8</OPTION>
		<OPTION VALUE="9">9</OPTION>
		<OPTION VALUE="10">10</OPTION>
		<OPTION VALUE="11">11</OPTION>
		<OPTION VALUE="12">12</OPTION>
		<OPTION VALUE="13">13</OPTION>
		<OPTION VALUE="14">14</OPTION>
		<OPTION VALUE="15">15</OPTION>
		<OPTION VALUE="16">16</OPTION>
		<OPTION VALUE="17">17</OPTION>
		<OPTION VALUE="18">18</OPTION>
		<OPTION VALUE="19">19</OPTION>
		<OPTION VALUE="20">20</OPTION>
		<OPTION VALUE="21">21</OPTION>
		<OPTION VALUE="22">22</OPTION>
		<OPTION VALUE="23">23</OPTION>
		<OPTION VALUE="24">24</OPTION>
		<OPTION VALUE="25">25</OPTION>
		<OPTION VALUE="26">26</OPTION>
		<OPTION VALUE="27">27</OPTION>
		<OPTION VALUE="28">28</OPTION>
		<OPTION VALUE="29">29</OPTION>
		<OPTION VALUE="30">30</OPTION>
		<OPTION VALUE="31">31</OPTION>
		</SELECT>
		<SELECT name="nais_mois1">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="janvier">janvier</OPTION>
		<OPTION VALUE="février">février</OPTION>
		<OPTION VALUE="mars">mars</OPTION>
		<OPTION VALUE="avril">avril</OPTION>
		<OPTION VALUE="mai">mai</OPTION>
		<OPTION VALUE="juin">juin</OPTION>
		<OPTION VALUE="juillet">juillet</OPTION>
		<OPTION VALUE="août">août</OPTION>
		<OPTION VALUE="septembre">septembre</OPTION>
		<OPTION VALUE="octobre">octobre</OPTION>
		<OPTION VALUE="novembre">novembre</OPTION>
		<OPTION VALUE="décembre">décembre</OPTION>
		</SELECT>
		<input name="nais_an1" type="text" id="nais_an1" size="3" maxlength="4" onFocus="if (this.value == \'Année\') {this.value = \'\';}" onBlur="if (this.value == \'\') {this.value = \'Année\';}"/>

		<SELECT name="nais_expression2">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="et avant">et avant</OPTION>
		<OPTION VALUE="et après">et après</OPTION>
		<OPTION VALUE="et">et</OPTION>
		</SELECT>
		<SELECT name="nais_jour2">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="1">1</OPTION>
		<OPTION VALUE="2">2</OPTION>
		<OPTION VALUE="3">3</OPTION>
		<OPTION VALUE="4">4</OPTION>
		<OPTION VALUE="5">5</OPTION>
		<OPTION VALUE="6">6</OPTION>
		<OPTION VALUE="7">7</OPTION>
		<OPTION VALUE="8">8</OPTION>
		<OPTION VALUE="9">9</OPTION>
		<OPTION VALUE="10">10</OPTION>
		<OPTION VALUE="11">11</OPTION>
		<OPTION VALUE="12">12</OPTION>
		<OPTION VALUE="13">13</OPTION>
		<OPTION VALUE="14">14</OPTION>
		<OPTION VALUE="15">15</OPTION>
		<OPTION VALUE="16">16</OPTION>
		<OPTION VALUE="17">17</OPTION>
		<OPTION VALUE="18">18</OPTION>
		<OPTION VALUE="19">19</OPTION>
		<OPTION VALUE="20">20</OPTION>
		<OPTION VALUE="21">21</OPTION>
		<OPTION VALUE="22">22</OPTION>
		<OPTION VALUE="23">23</OPTION>
		<OPTION VALUE="24">24</OPTION>
		<OPTION VALUE="25">25</OPTION>
		<OPTION VALUE="26">26</OPTION>
		<OPTION VALUE="27">27</OPTION>
		<OPTION VALUE="28">28</OPTION>
		<OPTION VALUE="29">29</OPTION>
		<OPTION VALUE="30">30</OPTION>
		<OPTION VALUE="31">31</OPTION>
		</SELECT>
		<SELECT name="nais_mois2">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="janvier">janvier</OPTION>
		<OPTION VALUE="février">février</OPTION>
		<OPTION VALUE="mars">mars</OPTION>
		<OPTION VALUE="avril">avril</OPTION>
		<OPTION VALUE="mai">mai</OPTION>
		<OPTION VALUE="juin">juin</OPTION>
		<OPTION VALUE="juillet">juillet</OPTION>
		<OPTION VALUE="août">août</OPTION>
		<OPTION VALUE="septembre">septembre</OPTION>
		<OPTION VALUE="octobre">octobre</OPTION>
		<OPTION VALUE="novembre">novembre</OPTION>
		<OPTION VALUE="décembre">décembre</OPTION>
		</SELECT>
		<input name="nais_an2" type="text" id="nais_an2" size="3" maxlength="4" onFocus="if (this.value == \'Année\') {this.value = \'\';}" onBlur="if (this.value == \'\') {this.value = \'Année\';}"/></td></tr>
		<tr><td><font size="1">Toutes les cases sont optionnelles.</font></td></tr>';
	}
	
	$select2 = 'SELECT * FROM lieux_ville ORDER BY lieux ASC'; 
	$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );							  
	echo '<tr><td><u>Lieu de naissance :</u></td> ';
	echo '<td><select name="lieu_naissance" id="lieu_naissance" onchange="ajout2_input();">';  
	echo '<option value="'.$row['lieu_naissance'].'">'.$row['lieu_naissance'].'</option>';
	echo '<option style="color:red;" value="autre">Saisie d\'un autre lieu</option>';
	while($row2 = mysql_fetch_array($result2))  
	{  
  	echo '<option value="'.$row2['lieux'].'">'.$row2['lieux'].'</option>'; 
	} 
	echo '</select>'; 
	echo '<div id="div_inputnais_autre"></div></td></tr>'; //div ou sera rajouté l'input par javascript 

// c'est pareil pour la date de décès ...........

//**** Date de décès *****
	echo '<tr><td><u>Date de décès :</u></td>  '; 
	if (!empty($row['date_dc']))
	{
	echo '<td><select name="date_dc" id="date_dc" onchange="ajout_inputdc();">';  
	echo '<option value="'.$row['date_dc'].'">'.$row['date_dc'].'</option>'; 
	echo '<option VALUE=""></option>';
	echo '<option style="color:red;" value="autre">Saisie d\'une autre date</option>';
	echo '</select>'; 
	echo '<div id="div_inputdc_autre"></div></td></tr>'; 
	}
	else
	{
		echo '<td><SELECT name="dc_expression3">
		<OPTION VALUE=""></OPTION>
		
		<OPTION VALUE="Vers">Vers</OPTION>
		<OPTION VALUE="Avant">Avant</OPTION>
		<OPTION VALUE="Après">Après</OPTION>
		<OPTION VALUE="Entre">Entre</OPTION>
		</SELECT>
		<SELECT name="dc_jour3">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="1">1</OPTION>
		<OPTION VALUE="2">2</OPTION>
		<OPTION VALUE="3">3</OPTION>
		<OPTION VALUE="4">4</OPTION>
		<OPTION VALUE="5">5</OPTION>
		<OPTION VALUE="6">6</OPTION>
		<OPTION VALUE="7">7</OPTION>
		<OPTION VALUE="8">8</OPTION>
		<OPTION VALUE="9">9</OPTION>
		<OPTION VALUE="10">10</OPTION>
		<OPTION VALUE="11">11</OPTION>
		<OPTION VALUE="12">12</OPTION>
		<OPTION VALUE="13">13</OPTION>
		<OPTION VALUE="14">14</OPTION>
		<OPTION VALUE="15">15</OPTION>
		<OPTION VALUE="16">16</OPTION>
		<OPTION VALUE="17">17</OPTION>
		<OPTION VALUE="18">18</OPTION>
		<OPTION VALUE="19">19</OPTION>
		<OPTION VALUE="20">20</OPTION>
		<OPTION VALUE="21">21</OPTION>
		<OPTION VALUE="22">22</OPTION>
		<OPTION VALUE="23">23</OPTION>
		<OPTION VALUE="24">24</OPTION>
		<OPTION VALUE="25">25</OPTION>
		<OPTION VALUE="26">26</OPTION>
		<OPTION VALUE="27">27</OPTION>
		<OPTION VALUE="28">28</OPTION>
		<OPTION VALUE="29">29</OPTION>
		<OPTION VALUE="30">30</OPTION>
		<OPTION VALUE="31">31</OPTION>
		</SELECT>
		<SELECT name="dc_mois3">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="janvier">janvier</OPTION>
		<OPTION VALUE="février">février</OPTION>
		<OPTION VALUE="mars">mars</OPTION>
		<OPTION VALUE="avril">avril</OPTION>
		<OPTION VALUE="mai">mai</OPTION>
		<OPTION VALUE="juin">juin</OPTION>
		<OPTION VALUE="juillet">juillet</OPTION>
		<OPTION VALUE="août">août</OPTION>
		<OPTION VALUE="septembre">septembre</OPTION>
		<OPTION VALUE="octobre">octobre</OPTION>
		<OPTION VALUE="novembre">novembre</OPTION>
		<OPTION VALUE="décembre">décembre</OPTION>
		</SELECT>
		<input name="dc_an3" type="text" id="dc_an3"  size="3" maxlength="4" onFocus="if (this.value == \'Année\') {this.value = \'\';}" onBlur="if (this.value == \'\') {this.value = \'Année\';}"/>
		
		<SELECT name="dc_expression4">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="et avant">et avant</OPTION>
		<OPTION VALUE="et après">et après</OPTION>
		<OPTION VALUE="et">et</OPTION>
		</SELECT>
		<SELECT name="dc_jour4">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="1">1</OPTION>
		<OPTION VALUE="2">2</OPTION>
		<OPTION VALUE="3">3</OPTION>
		<OPTION VALUE="4">4</OPTION>
		<OPTION VALUE="5">5</OPTION>
		<OPTION VALUE="6">6</OPTION>
		<OPTION VALUE="7">7</OPTION>
		<OPTION VALUE="8">8</OPTION>
		<OPTION VALUE="9">9</OPTION>
		<OPTION VALUE="10">10</OPTION>
		<OPTION VALUE="11">11</OPTION>
		<OPTION VALUE="12">12</OPTION>
		<OPTION VALUE="13">13</OPTION>
		<OPTION VALUE="14">14</OPTION>
		<OPTION VALUE="15">15</OPTION>
		<OPTION VALUE="16">16</OPTION>
		<OPTION VALUE="17">17</OPTION>
		<OPTION VALUE="18">18</OPTION>
		<OPTION VALUE="19">19</OPTION>
		<OPTION VALUE="20">20</OPTION>
		<OPTION VALUE="21">21</OPTION>
		<OPTION VALUE="22">22</OPTION>
		<OPTION VALUE="23">23</OPTION>
		<OPTION VALUE="24">24</OPTION>
		<OPTION VALUE="25">25</OPTION>
		<OPTION VALUE="26">26</OPTION>
		<OPTION VALUE="27">27</OPTION>
		<OPTION VALUE="28">28</OPTION>
		<OPTION VALUE="29">29</OPTION>
		<OPTION VALUE="30">30</OPTION>
		<OPTION VALUE="31">31</OPTION>
		</SELECT>
		<SELECT name="dc_mois4">
		<OPTION VALUE=""></OPTION>
		<OPTION VALUE="janvier">janvier</OPTION>
		<OPTION VALUE="février">février</OPTION>
		<OPTION VALUE="mars">mars</OPTION>
		<OPTION VALUE="avril">avril</OPTION>
		<OPTION VALUE="mai">mai</OPTION>
		<OPTION VALUE="juin">juin</OPTION>
		<OPTION VALUE="juillet">juillet</OPTION>
		<OPTION VALUE="août">août</OPTION>
		<OPTION VALUE="septembre">septembre</OPTION>
		<OPTION VALUE="octobre">octobre</OPTION>
		<OPTION VALUE="novembre">novembre</OPTION>
		<OPTION VALUE="décembre">décembre</OPTION>
		</SELECT>
		<input name="dc_an4" type="text" id="dc_an4" value="Année" size="3" maxlength="4" onFocus="if (this.value == \'Année\') {this.value = \'\';}" onBlur="if (this.value == \'\') {this.value = \'Année\';}"/></td></tr>
		<tr><td><font size="1">Toutes les cases sont optionnelles.</font></td></tr>';
	}

Merci pour votre aide !
Windows / Chrome 132.0.0.0

A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

Ton code utilise l'ancienne extension mysql_*

Sauf qu'elle est obsolète. Il faut modifier ton code pour utiliser PDO ou mysqli

pour réécrire ton code en PDO, tu peux regarder cet exemple

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Au passage, profites en pour remettre ton code un peu plus au propre. ( en plaçant le maximum de code php en dehors du html .. par exemple, tout ce qui concerne les requêtes sql, à placer dans un fichier à part  et/ou de préférence AVANT tout code HTML )

https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


0
ecddu69 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Et pour les dates, il y a les input type=date pour enregistrer dans la BDD Y-m-d et type datetime-local pour enregistrer Y-m-d 00:00:00, c'est à dire la date et l'heure avec toujours la possibilité de définir une date par défaut issue de la BDD avec l'option value =<?php echo .... ?>

C'est simple, rapide et accessible pour tout et tout le monde sans prise de tête !!

0
ecddu69 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

J'ai franchement du mal à comprendre l'emploi de Javascript pour un truc aussi simple à faire avec PHP et bien sur, je ne parle pas de l'emploi d'un PHP obsolète. C'est vraiment brouillon, le code PHP doit être dans un fichier style modelMachin.php et le code JavaScript dans un fichier modelTruc.js.

Pour bien faire, le 1er doit être dans un répertoire model/ et le second dans un répertoire public/js/ par exemple.

Mais bon, il en faut pour tous les gout et il doit certainement y avoir des gents courageux pour écrire beaucoup de lignes pour faire ce qu'on peut faire en très peu de lignes.

Rappelez moi la 1er devise de la programmation, faire beaucoup avec très peu [de travail]. Je garderais toujours en mémoire les premier mots de mon prof d'informatique : "Si vous êtes un fainéant, vous êtes à votre place ici, l'informatique, c'est réfléchir, écrire et ne plus rien faire, juste glander en surveillant de temps en temps que tout se passe bien, éventuellement mettre à jour le code !!!"

Si c'est bien structurer, la MàJ est simple à faire ...

-1