5542 sujets

Sémantique web et HTML

Bonjour, Smiley biggrin
dans le titre tout est dit en fait !
mais je précise : C'est pour des mises à jour de fiches existantes dans une BDD.

Je veux que des valeurs d'un formulaire soient par défaut des valeurs qui viennent d'une base de données et que ces valeurs soient transmises comme elles sont si l'internaute ne modifie rien dans chaque case concernée.
Mon code :
<form enctype="multipart/form-data" action="correctif-base-litho.php" method="post">
<h3>Le nom de la pierre ne peut pas être changé.</h3>
Peut-&ecirc;tre un <strong>compl&eacute;ment</strong> au nom de la pierre ?
  <input type="text" name="comp_nom_litho" size="50" />
  <hr />
  Rechercher le nom du fichier image :
  <?php echo "<hr />le fichier est $pho<hr />"; ?>
    <div align="center">&agrave; placer ici :
    <input type="text" name="photo_litho" size="50" placeholder= "<?php echo  $pho; ?>"  value= "<%= echo $pho; %>"  />

*******
plein d'autres champs avec le même souci !
*******


<h3>Lorsque tout est "ok" : </h3>
    <input type="submit" name="validation" value="Envoyer" />
    <br />


Donc, est-ce possible ?
soit placeholder= "<?php echo $pho; ?>"
soit placeholder= "<%= echo $pho; %>" que j'ai vu je ne sais plus où mais ça ne marche pas , même pas bien du tout Smiley langue !
Modifié par jadu29 (24 Aug 2020 - 14:33)
Bon, Smiley smile j'ai contourné le problème en traitant par PHP7 comme suit :

<!-- 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>
	Peut-&ecirc;tre un <strong>nouveau compl&eacute;ment</strong> au nom de la pierre ?
	<br /><input type="text" name="comp_nom_litho" size="50" />
	  <hr />
	  Rechercher le nom du nouveau fichier image &agrave; placer ici :
	<br /><?php echo "<input type='text' name='photo_litho' size='50' placeholder= $pho  value= $pho   />"; ?>
	<br />

Explicatifs :
- la zone "complément" était vide donc pas de souci majeur à faire une zone "classique"
- la zone image par contre peut être remplacée par une plus belle image et donc je traite en php.

Bon, je n'ai pas vu encore si le traitement suit avec prise en compte des valeurs, donc je vous dirais ce soir ou demain ! Smiley lol
C'est RE-moi !
maintenant ça marche en local, Smiley decu mais pas au top ! Smiley confus
je fais ceci :
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", $username, $password,$options);
		$sql = "SELECT * FROM litho_donnees ";
		foreach ($conn->query($sql) as $dft) {
			if(($dft[2]) == $pierre) {
				$ID=$dft[0];
				$pho=$dft[1];
				$nom=$dft[2];
				$cpl=$dft[3];
				$ori=$dft[4];
				$col=$dft[5];


mais après je fais ceci comme j'ai marqué dans le message précédent :
<br /><strong>chakra en lien :</strong>
	<br /><?php echo "<input type='text' name='chak_litho' size='80' placeholder=$chk value= $chk  />"; ?>
	<hr />
	<strong>action reconnue :</strong>
	<br /><?php echo "<textarea name='action_litho' size='80' placeholder=$act value= $act rows='6' /></textarea>"; ?>
	<br /><strong>&ni;&ni;&ni;&ni;&ni;&ni; usage :</strong>
	<br /><?php echo "<textarea name='usage_litho' size='80' placeholder=$usa value= $usa rows='6' /></textarea>"; ?>

mais les "cases" ne contiennent que le premier mot ! Pas tout le contenu ! Smiley hum
Comment cela se fait-il donc ? Smiley eek Smiley eek Smiley eek

Smiley biggrin Puis-je espérer un coup [u]de main [/u]? == ou aujourd'hui !
Modérateur
Bonjour,

pour les inputs, il faut mettre la valeur dans l'attribut value (et non placeholder, utilisé pour afficher un exemple de valeur à introduire quand le champ est vide), avec des quotes sinon ça va mal se passer, pour textarea, la valeur initiale est entre les deux balises textarea:


<label for="truc">Truc</label>
<input type="text" id="truc" name="truc" value="<?php print $truc; ?>">
<label for="machin">Machin</label>
<textarea id="machin" name="machin"><?php print $machin; ?></textarea>
Kustolovic
Ok je suis à tout reprendre pour suivre ton conseil ! Smiley smile
ce n'est pas simple quand on reprend un vieux code. Smiley bawling
mais j'ai testé sur deux zones et ça marquait tout comme il faut : super Smiley lol
par contre à l'enregistrement ça ne prenait pas les modifications mais je peaufine, Smiley biggol je bosse et je reviens dire !
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 &quot;ok&quot; : 
	<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&eacute; :</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-&ecirc;tre un <strong>nouveau compl&eacute;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 &agrave; 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>&ni;&ni;&ni;&ni;&ni;&ni; 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&eacute;es ont &eacute;t&eacute; bien rectifir&eacute;es pour  $pierre  </h4>";
// **************************************
?>
<hr />
<a href="correctif-MAJ-litho.php">Une autre pierre à modifier ??? </a>


c'est une bonne base de travail ! Smiley rolleyes
Meilleure solution