8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Au passage, pas besoin de cumuler isset et empty Smiley cligne

"Manuel php pour Empty()" a écrit :
Détermine si une variable est considérée comme vide. Une variable est considérée comme vide si elle n'existe pas, ou si sa valeur équivaut à FALSE.

ou dit autrement :
"manuel php pour empty()" a écrit :
Cela signifie que empty() est strictement équivalent à !isset($var) || $var == false.


Et ce qui vaut false :
"manuel php pour empty()" a écrit :
"" (une chaîne vide)
0 (0 en tant qu'entier)
0.0 (0 en tant que nombre à virgule flottante)
"0" (0 en tant que chaîne de caractères)
NULL
FALSE
array() (un tableau vide)
$var; (une variable déclarée, mais sans valeur)




Et au passage, ça pourrait valoir le coup, avant d'aller plus loin dans l'apprentissage du php de prendre des bonnes habitudes en supprimant les mysql_ l'extension étant désuette depuis php 5 et obsolète depuis php 5.5. A remplacer par mysqli_ (tutoriel en français : ici) ou à PDO
Merci de vos réponses super rapides.
Je suis justement en train d'utiliser une connexion PDO pour ma base MySQL, car j'ai en effet souvent entendu que MySQL commençait à être déprécié.
J'avais cru comprendre en trainant par ci par là sur les forums que justement, l'auto vérification du formulaire par lui même n'était pas conseillé Smiley confus
Mais comme je l'ai vu revenir plusieurs fois, je vais faire comme ça, au moins jusqu'à ce que je maitrise assez tout ce qui est JQuery/AJAX/Js pour faire une vérif' plus "dynamique", genre on clique sur le champ mail, on rentre son mail, et au moment où l'on sort de ce champ, la vérification se fasse automatiquement et qu'elle indique de suite si le mail est bon ou pas. J'imagine que c'est beaucoup de JQuery un truc comme ça.
Si quelqu'un par ici est chaud pour me montrer deux ou trois lignes qui pourrait faire ça, je lui serai reconnaissant, sinon, pas de soucis, J'ai déjà été bien aidé jusque là. Smiley smile

Merci beaucoup Smiley biggrin
a écrit :
J'avais cru comprendre en trainant par ci par là sur les forums que justement, l'auto vérification du formulaire par lui même n'était pas conseillé Smiley confus

Je ne sais pas ce que tu entends par "l'auto-vérification du formulaire par lui-même", mais une requête POST utilise dans tous les cas le protocole HTTP, donc il n'y a aucun problème à soumettre le formulaire vers la page qui décrit le formulaire.

Si tu veux concevoir un code propre qui sépare la logique serveur du HTML, tu es obligé de séparer le traitement du formulaire du contenu, ainsi soit appeler un objet d'un autre fichier, soit une fonction, soit une page. C'est également comme cela que procède les frameworks PHP, en utilisant un modèle MVC, tu apprendras vite que c'est la façon la plus organisée de développer en distinguant les vues des modèles.

L'utilisation de Jquery peut permettre de vérifier une adresse email, à noter que l'élément input de type mail intégré en HTML5 vérifie déjà partiellement le format rentré par l'utilisateur (blabla@...) et que PHP supporte les regex et qu'il est par conséquent beaucoup plus sûr de faire valider le format d'un email (ou de toute autre donnée nécessitant un format précis) par un langage serveur, car c'est lui validera définitivement ou non l'entrée de la donnée en base, Jquery (ou javascript d'ailleurs) n'est là que pour faire l'intermédiaire entre la saisie de l'utilisateur et le serveur, mais il ne constitue aucunement une substitution aux tests d'intégrité des données de PHP (ou de tout autre langage serveur employé). Procéder de cette façon sans vérifier côté serveur le format des données est une faille potentielle, si l'utilisateur désactive javascript ou utilise un protocole externe (avec CURL par ex), il passera à travers ton formulaire et entrera les données qu'il souhaite en base.

De la même façon utilisé Jquery en supplément de PHP en vérifiant deux fois le format des données attendu constitue deux couches et donc un surplus inutile qui prend deux fois plus de temps à mettre en place.

Pour ce qui est d'Ajax, attention à ne pas en abuser, il est justifié dans certains cas mais faire valider tous ces formulaires par cela n'est pas une pratique très conseillée dans la mesure où cela n'ajoute que peu de dynamisme à un formulaire classique qui ne fait que vérifier le contenu des champs, il peut être plus judicieux de l'utiliser pour vérifier l'existence d'un membre en base, ou encore intégrer des listes déroulantes dynamiques (interagissant entre elles en allant chercher des informations en base)...
Modifié par ohweb (25 Apr 2014 - 10:59)
Bonjour,
Je up mon ancien sujet concernant mon formulaire parce que je viens de voir qu'il ne fonctionne pas tout à fait comme je le voudrais:
En effet, lorsque je clique sur suivant, je passe bien à l'étape suivante du formulaire, mais en même temps, les données sont envoyées à la base. Ce que je ne veux faire qu'une fois sur la page Récapitulatif et après avoir cliqué sur le bouton confirmation.

Qu'est ce qui foire dans mon code?


<?php
header('Content-Type: text/html; charset=UTF-8');
// fichiers de conf
require "../phprequire/config.php";
require "../phprequire/pdo.php";

?>
<html> 
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> 
<style type="text/css">
	:invalid{
		box-shadow: 0 0 2px 1px red;
		border-color: red;
	};
	:valid{
		box-shadow: 0 0 2px 1px green;
		border-color: green;
	};
</style>	

</head>
<body>
<div id="registerPraticien">

	<?php
		if(!isset($_GET['etape'])){
	?>
	<!-- Infos perso -->
	<fieldset>
		<legend>Renseignez vos informations personnelles</legend>
		<form action="medecin.php?etape=2" method="post" name="registerDoc" id="registerDoc" onsubmit="return controleNom();">
			<input id="nomDoc" type="text" placeholder="Nom" name="nomDoc" pattern="[A-ZÀÂÇÈÉÊËÎÔÙÛ ]*"><br />
			<input id="prenomDoc" type="text" placeholder="Prénom" name="prenomDoc" pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br />
			<input id="specialiteDoc" type="text" placeholder="Fonction/Spécialité" name="specialiteDoc" pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br />
			<input id="telephoneDoc" type="tel" placeholder="Numéro de téléphone" name="telephoneDoc" pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br />
			<input id="mailDoc" type="text" placeholder="Adresse mail" name="mailDoc" pattern="^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"><br />
			<input type="button" value="Précédent" onclick="javascript:history.back(-1)">
			<input type="submit" value="Suivant" name="envoieInfoDoc">
		</form>
	</fieldset>
	<!-- /Infos perso -->
	<?php
		// Je vérifie que je suis bien à l'étape 2 et que les champs de la partie infos persos sont tous remplis
		}elseif (( !isset($_GET['etape']) || $_GET['etape'] == 2 ) && ((isset($_POST['nomDoc']) && !empty($_POST['nomDoc'])) && (isset($_POST['prenomDoc']) && !empty($_POST['prenomDoc'])) && (isset($_POST['specialiteDoc']) && !empty($_POST['specialiteDoc'])) && (isset($_POST['telephoneDoc']) && !empty($_POST['telephoneDoc'])) && (isset($_POST['mailDoc']) && !empty($_POST['mailDoc'])))){

    		// Je stock les données persos dans des variables correspondants
            $_SESSION['nomDoc']=$_POST['nomDoc'];
            $_SESSION['prenomDoc']=$_POST['prenomDoc'];
            $_SESSION['specialiteDoc']=$_POST['specialiteDoc'];
            $_SESSION['telephoneDoc']=$_POST['telephoneDoc'];
            $_SESSION['mailDoc']=$_POST['mailDoc'];
	?>
			<!-- Infos cabinet -->
			<fieldset>
				<legend>Renseignez les informations concernant votre cabinet</legend>
	        	<form action="medecin.php?etape=3" method="post" name="registerCab" id="registerCab">
					<input type="text" placeholder="Nom du cabinet" name="nomCab"  pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br />
					<input type="textarea" placeholder="Adresse" name="adresseCab"  pattern="[0-9]{1,3}(? [decu]?:[,. ]){1}[-a-zA-Zàâäéèêëïîôöùûüç]+)+"><br />
					<input type="text" placeholder="Code Postal" name="cpCab" pattern="^[0-9]{5}$"><br />
					<input type="text" placeholder="Fonction/Spécialité" name="specialiteCab"  pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br />
					<input type="tel" placeholder="Numéro de téléphone" name="telephoneCab" pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br />
					<input type="button" value="Précédent" onclick="javascript:history.back(-1)">
					<input type="submit" value="Suivant" name="envoieInfoCab">
				</form>
			</fieldset>
			<!-- /Infos cabinet -->
	<?php

		// Si je ne suis pas à l'étape 2, Je vérifie que je suis bien à l'étape 3 et que les champs de la partie cabinet sont tous remplis
		}elseif (( !isset($_GET['etape']) || $_GET['etape'] == 3 ) && ((isset($_POST['nomCab']) && !empty($_POST['nomCab'])) && (isset($_POST['adresseCab']) && !empty($_POST['adresseCab'])) && (isset($_POST['cpCab']) && !empty($_POST['cpCab'])) && (isset($_POST['specialiteCab']) && !empty($_POST['specialiteCab'])) && (isset($_POST['telephoneCab']) && !empty($_POST['telephoneCab'])))){

			// Je stock les infos du cabinet dans des variables correspondantes
            $_SESSION['nomCab']=$_POST['nomCab'];
            $_SESSION['adresseCab']=$_POST['adresseCab'];
            $_SESSION['cpCab']=$_POST['cpCab'];
            $_SESSION['specialiteCab']=$_POST['specialiteCab'];
            $_SESSION['telephoneCab']=$_POST['telephoneCab'];
	?>
				
			<!-- Je récapitule les informations saisies, pour éviter les erreurs -->
			<h1>Récapitulatif de vos informations: </h1> 


	<?php    
        	echo "Nom du médecin : ".$_SESSION['nomDoc']."<br />Prénom du médecin : ".$_SESSION['prenomDoc']."<br />Spécialité : ".$_SESSION['specialiteDoc']."<br />Téléphone du médecin : ".$_SESSION['telephoneDoc']."<br />Adresse mail du médecin : ".$_SESSION['mailDoc']."<br />";
        	echo "Nom du cabinet : ".$_SESSION['nomCab']."<br />Adresse du cabinet : ".$_SESSION['adresseCab']."<br />Code postal du cabinet : ".$_SESSION['cpCab']."<br />Spécialité du cabinet : ".$_SESSION['specialiteCab']."<br />Téléphone du abinet : ".$_SESSION['telephoneCab'];
	?>
	  		<br /><input type="button" value="Confirmer" onclick= "validation()"/>

	<?php
		}		        	
		
	?>
	<script type="text/javascript">
	function validation(){
	if(confirm('Confirmer l\'enregistrement ')) {
	    leformulaire.submit(); 
	    </script><?php 
	    	try{
		    	$bdd = PDO2::getInstance();
		    	$stmt = $bdd->prepare("INSERT INTO users(nomUser, prenomUser, fonctionUser, telUser, emailUser) VALUES(:nomUser, [langue]renomUser, :fonctionUser, :telUser, :emailUser)") or exit(print_r($bdd->errorInfo()));
		    	$stmt->bindParam(':nomUser', $_SESSION['nomDoc'], PDO: [langue]ARAM_STR, 50);
		    	$stmt->bindParam(':prenomUser', $_SESSION['prenomDoc'], PDO: [langue]ARAM_STR, 50);
		    	$stmt->bindParam(':fonctionUser', $_SESSION['specialiteDoc'], PDO: [langue]ARAM_STR, 75);
		    	$stmt->bindParam(':telUser', $_SESSION['telephoneDoc'], PDO: [langue]ARAM_STR, 15);
		    	$stmt->bindParam(':emailUser', $_SESSION['mailDoc'], PDO: [langue]ARAM_STR, 100);

	    	$stmt->execute();

	    	} catch (PDOException $e) {
	    		echo 'Erreur insert into users : ' . $e->getMessage();
	    		$stmt>rollBack();
	    	}

	    ?>
<script type="text/javascript">
	}else{
	    return false
	}
</script>
</div>
</body>
</html>






Wow, brutal le code lâché comme ça Smiley eek
Modifié par Hexilas (06 May 2014 - 10:40)
Bonjour tout le monde.
Je suis egalement nouveau dans la programmation
Je suis actuellement en stage dans une boite pour laquelle je dois créer un formulaire et l'enregistrer dans ma base donnée...
Bon, Le truc c'est que je ne suis pas du tout à l'aise avec PHP/MySQL et surtout que je travail avec easyphp , et je ne sais pas comment créer mon fichier traitement.php pour le remplissage de mon formulaire. Je voudrais en faite que lorsqu'ils remplissent les champs de la fiche d'intervention quand ils appuient sur "enregistrer ", les données transmises sont envoyées dans la base de données, ce qui créer une nouvelle entrée dans ma table. Mais je ne sais absolument pas par où commencer.
Voilà mon formulaire
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FICHE D'INTERVENTION</title>
<style type="text/css">
<!--
.Style2 {
font-family: "Times New Roman", Times, serif;
font-size: 14px;
font-weight: bold;
}
.Style3 {
font-size: x-large;
font-weight: bold;
}
.Style8 {
font-size: medium;
color: #000099;
font-style: italic;
font-family: "Times New Roman", Times, serif;
font-weight: bold;
}
.Style9 {
color: #0000CC;
font-style: italic;
}
.Style10 {color: #00CC00}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<table width="890" border="2" cellpadding="1" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td colspan="3" align="center"><img src="images/design_famille_r1_c2.jpg" width="910" height="35" longdesc="images/design_famille_r1_c2.jpg" /></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center"><img src="images/design_famille_r2_c4.jpg" width="201" height="180" /></td>
<td align="center" valign="middle"><p class="Style3">DEMANDE D'INTERVENTION INFORMATIQUE</p>
<p>&nbsp;</p>
<p><marquee scrolldelay="20">A déposer au service informatique, par mail à <u><span class="Style9">athuriane.gondogbeu@egouv.ci</span></u> ou appelez au poste <span class="Style10">200</span></marquee></p></td>
<td align="center"><img src="images/design_famille_r2_c3.jpg" width="232" height="180" longdesc="images/design_famille_r2_c3.jpg" /></td>
</tr>
<tr>
<td colspan="3" align="center"><span class="Style3">1- LE DEMANDEUR</span></td>
</tr>
<tr>
<td width="243">DEMANDEUR</td>
<td width="299"><p>DATE DE LA DEMANDE</p>
<p><em>(Date de dépôt de demande)</em></p></td>
<td width="328"><p>NUMERO DE LA DEMANDE</p>
<p> <em>(Réservé service informatique)</em></p></td>
</tr>

<tr>
<td>Nom:
<label>

<input type="text" name="nom" id="nom"/>


<br />
Prenoms:

<input type="text" name="prenoms" id="prenoms" />
</label></td>
<td colspan="2">N° téléphone / poste:
<label>

<input type="text" name="ntel" id="ntel" />
</label></td>
</tr>
<tr>
<td>Directions:
<label>

<input type="text" name="direction" id="direction" />
</label></td>
<td colspan="2">Adresse mail:
<label>

<input type="text" name="email" id="email" />
</label></td>
</tr>
<tr>
<td>Service:
<label>

<input type="text" name="service" id="service" />
</label></td>
<td colspan="2">Localisation :
<label>

<input type="text" name="localisation" id="localisation" />
</label></td>
</tr>
<tr>
<td colspan="3" align="center"><span class="Style2">IDENTIFICATION DU POSTE</span></td>
</tr>
<tr>
<td>Nom du poste:
<label>
<input type="text" name="nom du poste" id="nom du poste" />
</label></td>
<td>RAM:
<label>
<input type="text" name="ram2" id="ram2" />
Go</label></td>
<td>HDD:
<label>
<input type="text" name="hdd2" id="hdd2" />
Go</label></td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
</tr>
<tr>
<td>N° Serie:
<label>
<input type="text" name="n° serie" id="n° serie" />
</label></td>
<td>Processeur:
<label>
<input type="text" name="processeur" id="processeur" />
</label></td>
<td>SE:
<label>
<input type="text" name="se2" id="se2" />
</label></td>
</tr>
</table>
<table width="982" border="2" cellspacing="1" cellpadding="1">
<tr>
<td colspan="3" align="center"><span class="Style3">2- TYPE DE PANNE</span></td>
</tr>
<tr>
<td width="287">Matérielle
<label>
<input type="checkbox" name="panne materielle" id="panne materielle" />
</label></td>
<td width="310">Logicielle
<label>
<input type="checkbox" name="panne logicielle" id="panne logicielle" />
</label></td>
<td width="289">Autre
<label>
<input type="checkbox" name="autre panne" id="autre panne" />
</label></td>
</tr>
<tr align="center" bgcolor="#CCCCCC">
<td> <p>DETAIL DU PROBLEME</p>
<p>
<label>
<textarea name="detail du probleme materiel" id="detail du probleme materiel" cols="45" rows="5"></textarea>
</label>
</p></td>
<td>DETAIL DU PROBLEME
<label>
<textarea name="detail du probleme logiciel" id="detail du probleme logiciel" cols="45" rows="5"></textarea>
</label> </td>
<td>DETAIL DU PROBLEME
<label>
<textarea name="detail autre probleme" id="detail autre probleme" cols="45" rows="5"></textarea>
</label> </td>
</tr>
<tr>
<td colspan="3" align="center">DETAIL INTERVENTION </td>
</tr>
<tr bgcolor="#CCCCCC">
<td><label>
<textarea name="detail intervention panne materielle" id="detail intervention panne materielle" cols="45" rows="5"></textarea>
</label></td>
<td><label>
<textarea name="detail intervention panne logicielle2" id="detail intervention panne logicielle2" cols="45" rows="5"></textarea>
</label></td>
<td><label>
<textarea name="detail intervention autre panne" id="detail intervention autre panne" cols="45" rows="5"></textarea>
</label></td>
</tr>
</table>
<table width="982" border="2" cellspacing="1" cellpadding="1">
<tr>
<td colspan="2" align="center"><strong>3- APPRECIATION DU DEMANDEUR</strong></td>
</tr>
<tr bgcolor="#CCCCCC">
<td width="405">Note /20:
<label>
<select name="note" size="1" id="note">
<option>00</option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
</select>
</label></td>
<td width="583" rowspan="2" align="center" valign="top"><em><strong>(Signature du demandeur)</strong></em></td>
</tr>
<tr bgcolor="#CCCCCC">
<td valign="top">Observations :
<label>
<textarea name="observation" id="observation" cols="45" rows="5"></textarea>
</label></td>
</tr>
</table>
<table width="982" border="2" cellspacing="1" cellpadding="1">
<tr>
<td colspan="3" align="center"><strong>4- L'INTERVENANT</strong></td>
</tr>
<tr bgcolor="#CCCCCC">
<td width="357">Nom &amp; Prénoms:
<label>
<input type="text" name="nom et prenoms2" id="nom et prenoms2" />
</label></td>
<td width="213"><p>Date début intervention:</p>
<p><input name="" type="date" />
</p></td>
<td width="410"><p>Date fin intervention:</p>
<p><input name="" type="date" />
</p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="2" align="center"><strong><em>(Visa du responsable informatique)</em></strong></td>
</tr>
</table>
<table width="982" border="2" cellspacing="1" cellpadding="1">
<tr bgcolor="#CCCCCC">
<td width="1005" align="center" class="Style8"><label>

<input type="submit" name="valider" id="valider" value="Enregistrer" />

</label></td>
</tr>
<tr bgcolor="#FF0000">
<td align="center" class="Style8"><marquee direction="up" scrollamount="1" onmouseover="this.stop()" onmouseout="this.start()" height="120"> Fiche d'intervention - Service Informatique MSFFE -Cité Administrative Tour E 16ème étage Porte 46- Tel : 20 21 77 02</marquee></td>
</tr>
</table>
<p>&nbsp;</p>
</form>
</body>
</html>

svp venez moi en aide j'en ai vraiment besoin!! Smiley sweatdrop
Pages :