Merci donc pour ce très bon conseil. Je l'ai noté dans mes tablettes !
Donc maintenant un formulaire permet de mettre à jour une fiche existante en proposant un écran coupé en deux, à gauche les informations existantes dans la base et à droite un formulaire de remplissage-modification dans lequel les informations d'origines sont mises par défaut. C'est top !
Si par hasard le nom de l'article n'existe pas dans la base, une fiche de création est proposée à l'utilisateur.
C'est ok, je vais donc passer en "sujet clos" mais je vous donne ici des extraits de code ( ça pourra servir à d'autres ) juste le principe, tout n'y est pas , non plus, faut pas rêver !
Le formulaire d'ENTRÉE :
<form enctype="multipart/form-data" action="correctif-auto-pierres.php" method="post">
<h3>INFORMATION à CORRIGER</h3>
indiquez ici le nom de l'article que vous voulez modifier<br />
<input type="text" name="pierre" size="150"/>
<br />
<input type="hidden" name="repeter" value="45" />
<br />
et lorsque tout est "ok" :
<br /><input type="submit" name="validation" value="Envoyer" align="middle" class="baleze" />
<br />
</form>
La page de présentation double affichage :
// raccord à la base ...
$sql = "SELECT * FROM litho_donnees ORDER BY nom_litho ASC";
foreach ($conn->query($sql)as$col) {
if ($col[2] === $pierre) {
echo "<h1>OUI, la pierre <mark> $col[2] </mark> existe bien !</h1>";
$ok=44;
}
}
// * on peut y aller !
if ($ok!=44) {
echo "<blockquote class='attention'><h1>Cette pierre : $pierre, elle n'existe pas dans le fichier !
<br />Veuillez créer une fiche et non modifier !</h1></blockquote>";
require ('saisies_maj_litho.php');
exit();
}<blockquote class="attention">
<h2>Nous allons nous connecter pour accéder à la fiche sélectionnée pour modifications, OK ?</h2>
<h3>Utilisez la sélection et "Copier-coller" ou retapez un autre texte pour corriger dans la zone adéquate, c'est assez facile !<br /></h3>
<blockquote class="confirmation">Faites cela dans <mark>TOUTES les ZONES <u>(à modifier ou non)</u></mark>,
<br /><br />Sinon <b>ce qui n'est pas réécrit est perdu !</b>
<br />Sauf si il ya quelque chose dans la case, <b>ce qui y est écrit est gardé !</b>
<br /><span class="ecrit-en-rouge">Un simple espace dans une zone à droite et tout est mis à zéro dans la zone !!!</span>
</blockquote>
</blockquote>
<boxMajG>
<section>
<p class="reduit">
<bande><mark>particularité :</mark><?php echo $cpl ; ?></bande><br/>
<bande><mark>origine :</mark><?php echo $ori ; ?></bande><br/>
<bande><mark>couleur :</mark><?php echo $col ; ?></bande><br/>
<bande><mark>Composition :</mark><?php echo $com ; ?></bande><br/>
<bande><mark>type :</mark><?php echo $typ ; ?></bande><br/>
<bande><mark>chakra :</mark><?php echo $chk ; ?></bande><br/>
</p>
</section>
<hr />
<section>
<h6>actions :</h6>
<p><?php echo $act ; ?></p>
</section>
<hr />
// ********************
// etc etc etc
//************************
</blockquote>
</section>
<?php
// }
?>
</boxMajG>
<!-- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- -->
<boxMajD>
<!-- Ce qui va être modifié éventuellement -->
<form enctype="multipart/form-data" action="correctif-base-litho.php" method="post">
<h3>Le nom de la pierre ne peut pas être changé.</h3>
<br /><label for="comp_nom_litho">Peut-être un <strong>nouveau complément</strong> au nom de la pierre ?</label>
<br /><input type="text" id="comp_nom_litho" name="comp_nom_litho" size='50' value="<?php print $cpl; ?>">
<br /><label for="photo_litho">Rechercher le nom du nouveau fichier image à placer ici :</label>
<br /><input type="text" id="photo_litho" name="photo_litho" size='50' value="<?php print $pho; ?>">
<br /><label for="truc"><strong>Origine :</strong></label>
<br /><input type="text" id="origine_litho" name="origine_litho" size='50' value="<?php print $ori; ?>">
<br /><label for="truc"><strong>couleur :</strong></label>
<br /><input type="text" id="couleur_litho" name="couleur_litho" size='50' value="<?php print $col; ?>">
<br /><label for="truc"><strong>composition :</strong></label>
<br /><input type="text" id="compo_litho" name="compo_lithoc" size='50' value="<?php print $com; ?>">
<br /><label for="truc"><strong>type de la pierre :</strong></label>
<br /><input type="text" id="type_litho" name="type_litho" size='50' value="<?php print $typ; ?>">
<br /><label for="truc"><strong>chakra en lien :</strong></label>
<br /><input type="text" id="chak_litho" name="chak_litho" size='50' value="<?php print $chk; ?>">
<hr />
<br />
<br /><label for="action_litho"><strong>action reconnue :</strong></label>
<br /><textarea id="action_litho" name="action_litho" cols='80' rows="6"><?php print $act; ?></textarea>
<br />
<br /><label for="usage_litho"><strong>∋∋∋∋∋∋ usage :</strong></label>
// ********************
// etc etc etc
//************************
<hr />
<h3>Lorsque tout le nouveau est "ok" : </h3>
<input type="submit" name="validation" value="Envoyer" />
<br />
</form>
<hr />
</boxMajD>
puis le traitement :
$pierre=$_SESSION['pierre'];
echo "<h1>$pierre</h1>";
//donc on va se re-connecter
include ('../../cgi-bin/acces.inc.php');
try {
// set the PDO error mode to exception
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC
);
$conn = new PDO("mysql:host=$servername; dbname=$dbname; charset=utf8mb4", $username, $password,$options);
// ********************* ci-dessous le travail qu'on veut faire
$sql=$conn->prepare('UPDATE litho_donnees SET photo_litho = [langue]hoto_litho, comp_nom_litho = :comp_nom_litho,origine_litho = :origine_litho,couleur_litho = :couleur_litho,compo_litho = :compo_litho,type_litho = :type_litho,chak_litho = :chak_litho,action_litho = :action_litho,usage_litho = :usage_litho,phy_litho = [langue]hy_litho,psy_litho = [langue]sy_litho,spi_litho = :spi_litho,purif_litho = [langue]urif_litho,assoc_litho = :assoc_litho,ast_litho = :ast_litho,observ_litho = :observ_litho,res_litho = :res_litho WHERE nom_litho= :nom_litho ');
$sql->execute(array(
'nom_litho' =>$_SESSION['pierre'],
'photo_litho'=>$_POST['photo_litho'],
'comp_nom_litho'=>$_POST['comp_nom_litho'],
'origine_litho'=>$_POST['origine_litho'],
'couleur_litho'=>$_POST['couleur_litho'],
'compo_litho'=>$_POST['compo_litho'],
'type_litho'=>$_POST['type_litho'],
'chak_litho'=>$_POST['chak_litho'],
'action_litho'=>$_POST['action_litho'],
'usage_litho'=>$_POST['usage_litho'],
'phy_litho'=>$_POST['phy_litho'],
'psy_litho'=>$_POST['psy_litho'],
'spi_litho'=>$_POST['spi_litho'],
'purif_litho'=>$_POST['purif_litho'],
'assoc_litho'=>$_POST['assoc_litho'],
'ast_litho'=>$_POST['ast_litho'],
'observ_litho'=>$_POST['observ_litho'],
'res_litho'=>$_POST['res_litho'],
));
// **********************************************
} // fin du try
catch(PDOException $e) {echo "Error: " . $e->getMessage(); }
$conn = null;
/// **********************************************
echo "<h4>Les données ont été bien rectifirées pour $pierre </h4>";
// **************************************
?>
<hr />
<a href="correctif-MAJ-litho.php">Une autre pierre à modifier ??? </a>
c'est une bonne base de travail !