<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Php Archives - Copier coller</title>
	<atom:link href="https://www.copier-coller.com/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.copier-coller.com/php/</link>
	<description>Des tutos wordpress pour les nuls !!!</description>
	<lastBuildDate>Thu, 19 Dec 2019 22:48:31 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.7</generator>

<image>
	<url>https://www.copier-coller.com/wp-content/uploads/2018/03/cropped-copier-coller_06_favicon-32x32.png</url>
	<title>Php Archives - Copier coller</title>
	<link>https://www.copier-coller.com/php/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Un formulaire en php</title>
		<link>https://www.copier-coller.com/un-formulaire-en-php/</link>
					<comments>https://www.copier-coller.com/un-formulaire-en-php/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Mon, 20 Jul 2015 19:05:37 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3590</guid>

					<description><![CDATA[<p>Tiré d&#8217;un template html, voici un formulaire html/css php hyper simple mais fonctionnel, épuré et passe partout ! Le rendu: Voici le html, codé avec bootstrap: Le css est assez conséquent pour un &#8216;simple&#8217; formulaire, on enlève les bordures, on rajoute des animations css pour un meilleur rendu visuel Je place ici le css par défaut, [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-formulaire-en-php/">Un formulaire en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Un exemple de formulaire en php</h2>
<p>Tiré d&rsquo;un template html, voici un formulaire html/css php hyper simple mais fonctionnel, épuré et passe partout !</p>
<p>Le rendu:</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3591" src="http://copier-coller.com/wp-content/uploads/2015/07/form.gif" alt="form" width="633" height="556" /></p>
<h3>Le code du formulaire</h3>
<p>Voici le html, codé avec bootstrap:</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">&lt;form method=&quot;post&quot; action=&quot;send-mail.php&quot; class=&quot;contact-form&quot; id=&quot;form&quot;&gt;<br/>								&lt;div class=&quot;row&quot;&gt;<br/>									&lt;div class=&quot;col-md-12&quot;&gt;<br/>										&lt;input type=&quot;text&quot; name=&quot;name&quot; placeholder=&quot;Insérez votre nom&quot; class=&quot;required&quot;&gt;<br/>									&lt;/div&gt;<br/>									&lt;div class=&quot;col-md-12&quot;&gt;<br/>										&lt;input type=&quot;email&quot; name=&quot;email&quot; placeholder=&quot;Insérez votre adresse email&quot; class=&quot;contact-form-email required&quot;&gt;<br/>									&lt;/div&gt;<br/>									&lt;div class=&quot;col-md-12&quot;&gt;<br/>										&lt;input type=&quot;text&quot; name=&quot;subject&quot; placeholder=&quot;Votre sujet&quot; class=&quot;contact-form-subject required&quot;&gt;<br/>									&lt;/div&gt;<br/>								&lt;/div&gt;<br/>								&lt;textarea name=&quot;message&quot; placeholder=&quot;Insérez votre message&quot; class=&quot;required&quot; rows=&quot;7&quot;&gt;&lt;/textarea&gt;<br/>								&lt;div class=&quot;response-message&quot;&gt;&lt;/div&gt;<br/>								&lt;button class=&quot;border-button border-bt-red&quot; type=&quot;submit&quot; id=&quot;submit&quot; name=&quot;submit&quot;&gt;Envoyer Message&lt;/button&gt;<br/>							&lt;/form&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Le code css</h3>
<p>Le css est assez conséquent pour un &lsquo;simple&rsquo; formulaire, on enlève les bordures, on rajoute des animations css pour un meilleur rendu visuel</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code"><br/>input,<br/>textarea,<br/>select {<br/>	background: #fff;<br/>	outline: none;<br/>	-webkit-appearance: none;<br/>	color: #333;<br/>	border: 0px solid #fff;<br/>	padding: 11px 25px;<br/>	margin: 0px;<br/>	font-style: italic;<br/>	font-weight: 400;<br/>	line-height: 1.42857143;<br/>	-webkit-box-shadow: none;<br/>	-moz-box-shadow: none;<br/>	box-shadow: none;<br/>	height: auto;<br/>	-webkit-border-radius: none;<br/>	-moz-border-radius: none;<br/>	border-radius: none;<br/>	margin-bottom: 20px;<br/>	-webkit-box-sizing: border-box;<br/>       -moz-box-sizing: border-box;<br/>            box-sizing: border-box;<br/>	-webkit-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	   -moz-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	    -ms-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	     -o-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	        transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>}<br/><br/>textarea {<br/>	width: 100%;<br/>	padding: 10px 20px;<br/>	resize: both;<br/>	margin-top: 0px;<br/>	font-style: italic;<br/>	height: 150px;<br/>}<br/>	<br/>input:hover,<br/>textarea:hover,<br/>select:hover {<br/>	color: #333;<br/>}<br/>	<br/>input:focus,<br/>textarea:focus,<br/>select:focus {<br/>	color: #333;<br/>}<br/><br/>input[type=&quot;submit&quot;],<br/>button {<br/>	width: auto;<br/>	font-style: normal;<br/>	font-weight: 300;<br/>	background: #fff;<br/>	color: #333;<br/>	cursor: pointer;<br/>	border: 0px solid #fff;<br/>	padding: 12px 20px;<br/>	letter-spacing: 1px;<br/>}<br/><br/>input[type=&quot;submit&quot;]:hover,<br/>button:hover {<br/>	color: #333;<br/>}<br/><br/>select, option {<br/>	cursor: pointer;<br/>}<br/><br/>input[type=&quot;checkbox&quot;] {<br/>	-webkit-appearance: checkbox;<br/>}<br/><br/>input[type=&quot;radio&quot;] {<br/>	-webkit-appearance: radio;<br/>}<br/><br/>input::-webkit-input-placeholder,<br/>textarea::-webkit-input-placeholder {<br/>	color: #333;<br/>}<br/><br/>input:-moz-placeholder,<br/>textarea:-moz-placeholder {<br/>	color: #333;<br/>}<br/><br/>input.placeholder,<br/>textarea.placeholder {<br/>	color: #333;<br/>}<br/><br/>input[placeholder] {<br/>	text-overflow: ellipsis;<br/>}<br/><br/>::-moz-placeholder {<br/>	text-overflow: ellipsis;<br/>} /* firefox 19+ */<br/><br/>input:-moz-placeholder {<br/>	text-overflow: ellipsis;<br/>}<br/><br/>.form {<br/>	position: relative;<br/>	overflow: hidden;<br/>}<br/><br/>.form-container {<br/>	position: relative;<br/>	overflow: hidden;<br/>}<br/><br/>.form-note {<br/>	color: #333;<br/>	font-style: italic;<br/>	margin: 24px 0;<br/>}<br/><br/>.success-message {<br/>	padding-top: 10px;<br/>	color: #fff;<br/>	font-size: 14px;<br/>	font-weight: 300;<br/>	display: none;<br/>}<br/><br/>.error-message {<br/>	padding-top: 10px;<br/>	color: #fff;<br/>	font-size: 14px;<br/>	font-weight: 300;<br/>	display: none;<br/>}<br/><br/>.contact-form input[type=&quot;text&quot;], .contact-form input[type=&quot;email&quot;] {<br/>	width: 100%;<br/>}<br/><br/>.contact-form input, .contact-form textarea, .contact-form select {<br/>	background: #fff;<br/>	outline: none;<br/>	-webkit-appearance: none;<br/>	color: #333;<br/>	border-bottom: 2px solid #999;<br/>	padding: 16px 20px;<br/>	margin: 0px;<br/>	font-style: italic;<br/>	-webkit-box-shadow: none;<br/>	-moz-box-shadow: none;<br/>	box-shadow: none;<br/>	height: auto;<br/>	margin-bottom: 20px;<br/>	-webkit-box-sizing: border-box;<br/>	-moz-box-sizing: border-box;<br/>	box-sizing: border-box;<br/>	-webkit-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	-moz-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	-ms-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	-o-transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	transition: background-color .3s ease, border .3s ease, color .3s ease;<br/>	position: relative; <br/>}<br/><br/>.contact-form textarea {<br/>	margin-bottom: 18px;<br/>}<br/><br/>.contact-form .input-error {<br/>	border-color: #ed5555;<br/>}<br/><br/><br/>.contact-form .response-message {<br/>	margin: 20px 0 30px 0;<br/>	font-size: 18px;<br/>	font-weight: 300;<br/>	color: #333;<br/>}<br/><br/>/* WebKit browsers */<br/>input::-webkit-input-placeholder,<br/>textarea::-webkit-input-placeholder { <br/>    color: #333;<br/>}<br/>:-moz-placeholder { /* Mozilla Firefox 4 to 18 */<br/>    color: #333;<br/>    opacity:  1;<br/>}<br/>::-moz-placeholder { /* Mozilla Firefox 19+ */<br/>    color: #333;<br/>    opacity:  1;<br/>}<br/>:-ms-input-placeholder { /* Internet Explorer 10+ */<br/>   color: #333;<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Je place ici le css par défaut, à soi ensuite de le personnaliser.</p>
<h3>Définir ses messages d&rsquo;erreur en php</h3>
<p>Ensuite vient le fichier php externe, dans lequel on va tester nos variables avant l&rsquo;envoi de l&rsquo; email. On définit ici les différents messages d&rsquo;erreur.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php<br/><br/><br/><br/>$name = stripcslashes($_POST[&#039;name&#039;]);<br/>$email = stripcslashes($_POST[&#039;email&#039;]);<br/>$subject = stripcslashes($_POST[&#039;subject&#039;]);<br/>$message = stripcslashes($_POST[&#039;message&#039;]);<br/><br/><br/><br/>$mailto = votremail@votreemail.com&#039;; <br/>$subject = $subject; <br/><br/>$error_message = &#039;Une erreur est survenue&#039;; <br/>$success_message = &#039;Message envoyé&#039;; <br/><br/><br/><br/><br/>$message = &quot;Name: $name\r\nEmail: $email\r\nMessage: $message&quot;;<br/><br/>$headers = &quot;From: $name &lt;$email&gt;&quot; . &quot;\r\n&quot; . &quot;Reply-To: $email&quot; . &quot;\r\n&quot; . &quot;X-Mailer: PHP/&quot; . phpversion();<br/><br/>function validateEmail($email) {<br/>   if(preg_match(&quot;/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i&quot;, $email))<br/>	  return true;<br/>   else<br/>	  return false;<br/>}<br/><br/>if((strlen($name) &lt; 1 ) || (strlen($email) &lt; 1 ) || (strlen($message) &lt; 1 ) || validateEmail($email) == FALSE ) {<br/><br/>	echo($error_message);<br/><br/>} else {<br/><br/>	if( mail($mailto, $subject, $message, $headers) ) {<br/>		<br/>		echo($success_message);<br/><br/>	} else {<br/><br/>		echo($error_message);<br/><br/>	}<br/><br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On a ici le strict minimum, mais c&rsquo;est plutôt simple rapide et efficace.</p>
<h3>Les vérifications du formulaires en js</h3>
<p>Enfin, la partie js .On reprend les mêmes vérifications mais cette fois pour le front : on affiche les messages d&rsquo;erreur ou d&rsquo;envoi de message:</p>
<div class="code-embed-wrapper"> <pre class="language-javascript code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-javascript code-embed-code">// CONTACT FORM<br/>	function contactForm() {<br/><br/>		var scrollElement = $(&#039;html,body&#039;);<br/>		var	contactForm = $(&#039;.contact-form&#039;);<br/>		var	form_msg_timeout;<br/><br/>		contactForm.on( &#039;submit&#039;, function() {<br/><br/>			var requiredFields = $(this).find(&#039;.required&#039;);<br/>			var	formFields = $(this).find(&#039;input, textarea&#039;);<br/>			var	formData = contactForm.serialize();<br/>			var	formAction = $(this).attr(&#039;action&#039;);<br/>			var	formSubmitMessage = $(&#039;.response-message&#039;);<br/><br/>			requiredFields.each(function() {<br/><br/>				if( $(this).val() == &quot;&quot; ) {<br/>					$(this).addClass(&#039;input-error&#039;);<br/>				} else {<br/>					$(this).removeClass(&#039;input-error&#039;);<br/>				}<br/><br/>			});<br/><br/>			function validateEmail(email) { <br/>				var exp = /^(([^&lt;&gt;()[\]\\.,;:\s@\&quot;]+(\.[^&lt;&gt;()[\]\\.,;:\s@\&quot;]+)*)|(\&quot;.+\&quot;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;<br/>				return exp.test(email);<br/>			}<br/><br/>			var emailField = $(&#039;.contact-form-email&#039;);<br/><br/>			if( !validateEmail(emailField.val()) ) {<br/>				emailField.addClass(&#039;input-error&#039;);<br/>			}<br/><br/>			if ($(&#039;.contact-form :input&#039;).hasClass(&#039;input-error&#039;)) {<br/>				return false;<br/>			} else {<br/>			<br/>				clearTimeout(form_msg_timeout);<br/>				<br/>				$.post(formAction, formData, function(data) {<br/>					formSubmitMessage.text(data);<br/><br/>					formFields.val(&#039;&#039;);<br/><br/>					form_msg_timeout = setTimeout(function() {<br/>						formSubmitMessage.slideUp();<br/>					}, 5000);<br/>				});<br/><br/>			}<br/><br/>			return false;<br/><br/>		});<br/><br/>	};</code></pre> <div class="code-embed-infos"> </div> </div>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-formulaire-en-php/">Un formulaire en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/un-formulaire-en-php/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Un crud avec espace de connexion en php</title>
		<link>https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/</link>
					<comments>https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 12 Apr 2015 14:10:12 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3207</guid>

					<description><![CDATA[<p>Pour faire suite au tuto &#8216;CRUD&#8217; , on va tenter ici de l&#8217;améliorer en lui rajoutant un espace de connexion.Vu que c&#8217;est un exercice, qu&#8217;il n&#8217;y a ni admin ni user, on va construire un mini scénario : on a les mêmes pages que dans le précédent tutoriel  : index.php, add.php, delete.php, update.php, edit.php, database.php [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/">Un crud avec espace de connexion en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Un crud avec espace de connexion en php</h2>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3213" src="http://copier-coller.com/wp-content/uploads/2015/04/crudlogin.gif" alt="crudlogin" width="1313" height="612" /></p>
<p>Pour faire suite au tuto <a title="Un crud en php" href="http://copier-coller.com/un-crud-en-php/">&lsquo;CRUD&rsquo;</a> , on va tenter ici de l&rsquo;améliorer en lui rajoutant un espace de connexion.Vu que c&rsquo;est un exercice, qu&rsquo;il n&rsquo;y a ni admin ni user, on va construire un mini scénario : on a les mêmes pages que dans le précédent tutoriel  :</p>
<ul>
<li>index.php,</li>
<li>add.php,</li>
<li>delete.php,</li>
<li>update.php,</li>
<li>edit.php,</li>
<li>database.php</li>
</ul>
<p>Maintenant, en tapant sur l&rsquo;index, on va faire en sorte de tomber sur une interface de connexion; et c&rsquo;est en se connectant seulement qu&rsquo;on pourra accéder au reste des pages et donc à l&rsquo;appli CRUD.</p>
<h3>L&rsquo;arborescence</h3>
<p>On va donc rajouter deux pages à notre application:  login et logout</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3208" src="http://copier-coller.com/wp-content/uploads/2015/04/arbo2.png" alt="arbo2" width="157" height="233" /></p>
<h3>La base de donnée</h3>
<p>On rajoute aussi deux champs dans notre base login et password</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3209" src="http://copier-coller.com/wp-content/uploads/2015/04/base2.png" alt="base2" width="1049" height="317" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/base2.png 1049w, https://www.copier-coller.com/wp-content/uploads/2015/04/base2-300x91.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/base2-1024x309.png 1024w, https://www.copier-coller.com/wp-content/uploads/2015/04/base2-624x189.png 624w" sizes="(max-width: 1049px) 100vw, 1049px" /></p>
<h3>Login.php</h3>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php<br/>/*<br/> * To change this template, choose Tools | Templates<br/> * and open the template in the editor.<br/> */<br/>   <br/>require &#039;database.php&#039;;<br/>if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot; &amp;&amp; !empty($_POST)) {<br/>    $loginError = &#039;&#039;;//on initialise nos messages d&#039; erreurs<br/>    $passwordError = &#039;&#039;;<br/>    $password = htmlentities(trim(sha1($_POST[&#039;password&#039;]))); //on securise les données<br/>    $login = htmlentities(trim($_POST[&#039;login&#039;]));<br/><br/>    // on vérifie les input<br/>    $valid = true;<br/>    if (empty($login)) {<br/>        $loginError = &#039;Please enter Login&#039;;<br/>        $valid = false;<br/>    }<br/>    if (empty($password)) {<br/>        $passwordError = &#039;Please enter password&#039;;<br/>        $valid = false;<br/>    }<br/><br/><br/>    if ($valid) { //si c&#039;est bon, on connecte à la base<br/>        $pdo = Database :: connect();<br/>        $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br/>        $sql = &quot;SELECT * FROM user WHERE login= ? AND password=? &quot;;<br/>        $q = $pdo-&gt;prepare($sql);<br/>        $q-&gt;execute(array($login, $password));<br/>        $data = $q-&gt;fetch(PDO::FETCH_ASSOC);<br/>      if ($data[&#039;password&#039;] == $password &amp;&amp; $data[&#039;login&#039;] == $login ) // Acces OK ! s&#039;il y a des data et qu&#039;elle correspondent<br/>	{<br/>            session_start(); //on ouvre la session<br/>	    $_SESSION[&#039;login&#039;] = $data[&#039;login&#039;];//on assigne nos valeurs<br/>	    $_SESSION[&#039;password&#039;] = $data[&#039;password&#039;];<br/>	  <br/>	    echo &#039;&lt;p&gt;Bienvenue &#039;.$data[&#039;login&#039;].&#039;, <br/>			vous êtes maintenant connecté!&lt;/p&gt;<br/>			&lt;p&gt;Cliquez &lt;a href=&quot;./index.php&quot;&gt;ici&lt;/a&gt; <br/>			pour revenir à la page d accueil&lt;/p&gt;&#039;;<br/>            header(&#039;location:index.php&#039;); //et on renvoie vers l&#039;index<br/>	}<br/>        <br/>        <br/>	else // Acces refusé on reste sur la page!<br/>	{<br/>	    echo &#039;&lt;p&gt;Une erreur s\&#039;est produite <br/>	    pendant votre identification.&lt;br /&gt; Le mot de passe ou le pseudo <br/>            entré n\&#039;est pas correcte.&lt;/p&gt;&lt;p&gt;Cliquez &lt;a href=&quot;./login.php&quot;&gt;ici&lt;/a&gt;&#039;; <br/>	   <br/>	    <br/>	}<br/>  <br/> <br/>    }<br/><br/>    Database::disconnect();<br/>}<br/>?&gt;<br/>&lt;!DOCTYPE html&gt;<br/>&lt;html&gt;<br/>    &lt;head&gt;<br/>        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;<br/>        &lt;title&gt;Crud&lt;/title&gt;<br/>        &lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        &lt;script src=&quot;js/bootstrap.js&quot;&gt;&lt;/script&gt;<br/><br/>    &lt;/head&gt;<br/>    &lt;body&gt;<br/>        &lt;div class=&quot;container&quot;&gt;<br/>            &lt;form method=&quot;POST&quot; action=&quot;login.php&quot;&gt;<br/>                &lt;div class=&quot;control-group &lt;?php echo!empty($loginError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Login&lt;/label&gt;<br/>                    &lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input type=&quot;text&quot; name=&quot;login&quot; value=&quot;&quot;&gt;<br/>                        &lt;?php if (!empty($loginError)) : ?&gt;&lt;!-- affiche erreur--&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $loginError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>                    &lt;/div&gt;<br/>                &lt;/div&gt;<br/>                &lt;div class=&quot;control-group&lt;?php echo!empty($passwordError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Password&lt;/label&gt;<br/>                    &lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input type=&quot;password&quot; name=&quot;password&quot; value=&quot;&quot;&gt;<br/>                    &lt;?php if (!empty($passwordError)) : ?&gt; &lt;!-- affiche erreur--&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $passwordError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>                    &lt;/div&gt;<br/><br/>                &lt;/div&gt;<br/>                &lt;input type=&quot;submit&quot; value=&quot;submit&quot; name=&quot;submit&quot;&gt;<br/>            &lt;/form&gt;<br/>        &lt;/div&gt;<br/>    &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>J&rsquo;ai volontairement commenté le code pour plus de clarté.</p>
<ul>
<li>On fait appel à la base</li>
<li>on initialise nos messages d&rsquo; erreurs</li>
<li>on sécurise les données</li>
<li>On vérifie les input</li>
<li>Si c&rsquo;est bon on se connecte à la base de donnée.</li>
<li>Si le login et password inséré correspondent à un login et mot de passe trouvé en base ( $data[&lsquo;login&rsquo;] ), alors on ouvre une session avec les valeurs assignées</li>
<li>On affiche un message de succès et on redirige vers l&rsquo;index</li>
</ul>
<h3>Logout.php</h3>
<p>Dans l&rsquo;index, on va par la suite rajouter un bouton déconnexion qui renverra vers la page <em>logout.php</em>. On place notre lien juste en dessous du lien pour rajouter un user.</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">&lt;div class=&quot;container&quot;&gt;<br/>            &lt;div class=&quot;row&quot;&gt;<br/>                &lt;h2&gt;Crud en Php&lt;/h2&gt;<br/>            &lt;/div&gt;<br/>            &lt;div class=&quot;row&quot;&gt;<br/>                &lt;p&gt;<br/>                    &lt;a href=&quot;add.php&quot; class=&quot;btn btn-success&quot;&gt;Ajouter un user&lt;/a&gt;<br/>                    &lt;a href=&quot;logout.php&quot; class=&quot;btn btn-danger&quot;&gt;Deconnexion&lt;/a&gt;<br/>                &lt;/p&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p><em>Logout.php</em> contient juste la fonction de déconnexion avec un <em>session_destroy();</em> on détruit la session utilisateur et on redirige vers la page de connexion</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">&lt;?php<br/>session_start();<br/>session_destroy();<br/>header(&#039;location:login.php&#039;);<br/>exit;<br/>/*<br/> * To change this template, choose Tools | Templates<br/> * and open the template in the editor.<br/> */<br/>?&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On a donc la nos deux fichiers pour la connexion-déconnection. Il va maintenant falloir intervenir dans les autres fichiers pour dire « si tu n&rsquo;es pas connecté, retourne au login&rsquo;. Notre CRUD devient donc un véritable backoffice dont l&rsquo;accès n&rsquo;est possible qu&rsquo;avec un identifiant et un mot de passe défini.</p>
<h3>Définir la session utilisateur</h3>
<p>En début de chaque fichier (add, update, delete, edit et index) on va placer ce bout de code qui vérifie la session utilisateur. S&rsquo;il y a une session, ok et on affiche un message, sinon renvoie vers le login. Ici je vérifie le $_SESSION[&lsquo;login&rsquo;], on pourrait le faire avec l&rsquo;ID. Le message affiché sur chaque page est la juste pour montrer qu&rsquo;on est bien connecté.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php <br/>  session_start();<br/>if (isset($_SESSION[&#039;login&#039;]))<br/>{<br/>    echo &#039;Bonjour &#039; . $_SESSION[&#039;login&#039;];<br/>}else{<br/>    header(&#039;location:login.php&#039;);<br/>}<br/>?&gt; </code></pre> <div class="code-embed-infos"> </div> </div>
<p>&nbsp;</p>
<p>Voila, on a un crud avec une partie login!!</p>
<h3>Les limites et améliorations possibles</h3>
<p>On s’arrête ici, et on remarque déjà les limites de l&rsquo;exercice. Notre base contient bien deux nouveaux champs login et password. Mais je n&rsquo;ai pas rajouté les champs dans mes tableaux html, ni cherché à les récupérer pour les afficher. J&rsquo;ai crée un user en dur avec un mot de passe(en sha1 dans phpMyAdmin) et un login, et donc seul ce user peut rentrer dans l&rsquo;appli. Une fois dans l&rsquo;appli, je ne peux pas ici rajouter de login et mot de passe pour mes users, puisque les input ne sont pas crées .On aura donc des colonnes vides dans notre base.</p>
<p>On peut donc imaginer la suite, créer dans tous les fichiers les champs additionnels login et password, pour pouvoir les rajouter, supprimer, modifier ou lire. Dans ce cas, tous les users auraient un login et password pour accéder à l&rsquo;appli. Il faudrait donc imaginer ensuite toute la partie front office pour l&rsquo;user et garder le crud en backoffice pour l&rsquo;administrateur, et définir des droits pour les accès.</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/">Un crud avec espace de connexion en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Un crud en php</title>
		<link>https://www.copier-coller.com/un-crud-en-php/</link>
					<comments>https://www.copier-coller.com/un-crud-en-php/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 12 Apr 2015 13:18:45 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3199</guid>

					<description><![CDATA[<p>Aujourd&#8217;hui on va voir comment faire un crud en php. Le crud est le diminutif pour designer les opérations  : create, read, update, delete, qui sont les opérations courantes d&#8217;interactions entre un site (admin) et sa base de données. Tout administrateur doit pouvoir supprimer rajouter, mettre à jour des utilisateurs ou des produits sur son [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-crud-en-php/">Un crud en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Un crud en PHP</h2>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3211" src="http://copier-coller.com/wp-content/uploads/2015/04/crud.gif" alt="crud" width="1304" height="634" /></p>
<p>Aujourd&rsquo;hui on va voir comment faire un crud en php. Le crud est le diminutif pour designer les opérations  : <strong>create, read, update, delete</strong>, qui sont les opérations courantes d&rsquo;interactions entre un site (admin) et sa base de données.</p>
<h3>Les fondamentaux</h3>
<p>Tout administrateur doit pouvoir supprimer rajouter, mettre à jour des utilisateurs ou des produits sur son site. Ces quelques pages de code peuvent donc servir de base à un début de backoffice. On verra dans un <a href="https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/">prochain tuto</a> pour le système de connexion. Pour le moment, on va principalement se focaliser sur les opérations nécessaires pour interagir avec la base de donnée.</p>
<ul>
<li>Nous allons donc créer une base de donnée.</li>
<li>Pour le rendu visuel des pages, on va importer bootstrap et inclure les dossiers à la racine de notre petit projet.</li>
<li>On va ensuite créer un fichier contenant les informations de connexion à la base, puis 4 fichiers pour nos opérations CRUD.</li>
</ul>
<h4>L&rsquo;index:</h4>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3202" src="http://copier-coller.com/wp-content/uploads/2015/04/crud.png" alt="crud" width="1145" height="532" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/crud.png 1145w, https://www.copier-coller.com/wp-content/uploads/2015/04/crud-300x139.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/crud-1024x476.png 1024w, https://www.copier-coller.com/wp-content/uploads/2015/04/crud-624x290.png 624w" sizes="(max-width: 1145px) 100vw, 1145px" /></p>
<h4>La page read</h4>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3204" src="http://copier-coller.com/wp-content/uploads/2015/04/edition.png" alt="edition" width="820" height="540" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/edition.png 820w, https://www.copier-coller.com/wp-content/uploads/2015/04/edition-300x198.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/edition-624x411.png 624w" sizes="(max-width: 820px) 100vw, 820px" /></p>
<h4>La page édition</h4>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3205" src="http://copier-coller.com/wp-content/uploads/2015/04/modif.png" alt="modif" width="652" height="624" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/modif.png 652w, https://www.copier-coller.com/wp-content/uploads/2015/04/modif-300x287.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/modif-624x597.png 624w" sizes="(max-width: 652px) 100vw, 652px" /></p>
<h4>Et au clic sur &lsquo;delete&rsquo; une page de confirmation:</h4>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3203" src="http://copier-coller.com/wp-content/uploads/2015/04/delete.png" alt="delete" width="833" height="230" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/delete.png 833w, https://www.copier-coller.com/wp-content/uploads/2015/04/delete-300x83.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/delete-624x172.png 624w" sizes="(max-width: 833px) 100vw, 833px" /></p>
<h3>1-La base de donnée</h3>
<p>Dans PhpMyAdmin, je crée une base, je la nomme au hasard testphp. Dedans, en prévision d&rsquo;un formulaire d&rsquo;ajout bien rempli, je crée tous mes champs :</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3201" src="http://copier-coller.com/wp-content/uploads/2015/04/base.png" alt="base" width="1016" height="241" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/base.png 1016w, https://www.copier-coller.com/wp-content/uploads/2015/04/base-300x71.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/04/base-624x148.png 624w" sizes="(max-width: 1016px) 100vw, 1016px" /></p>
<p>Normalement pour un petit crud on met juste un name et un mail, mais ici je tenais à montrer le maximum d&rsquo;exemple d&rsquo;input (mail, select, radio, checkbox) pour voir justement comment les traiter.</p>
<p>Erratum: comme me le signale un lecteur en commentaire plus bas, le numéro de tel peut être mis de préférence dans un champ texte, soit de type « varchar » dan la base de donnée et non « int « !</p>
<h3>2- L&rsquo;Arborescence</h3>
<p>Une fois qu&rsquo;on a la base, on peut créer notre projet sur notre serveur (wamp/www). On crée un dossier que l&rsquo;on nomme comme on veut (je le nomme crud ici pour l&rsquo;exemple). A l&rsquo;intérieur on y place les trois fichiers bootstrap js, css et img, comme ceci:</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3200" src="http://copier-coller.com/wp-content/uploads/2015/04/arbo.png" alt="arbo" width="166" height="196" /></p>
<p>Dans ce dossier, pour prendre de l&rsquo;avance, on va créer tous nos fichiers crud:</p>
<ul>
<li>add.php</li>
<li>delete.php</li>
<li>edit.php</li>
<li>read.php</li>
<li>et index.php.</li>
</ul>
<p>Contrairement à de nombreux tutos qui placent le code de connexion dans chaque fichier, ici on va placer le notre dans un fichier à part qu&rsquo;on va appeler database.php, et qui contiendra uniquement le code de connexion à notre base testphp&#8230;c&rsquo;est parti!!!</p>
<h3>La connexion à la base de donnée</h3>
<p>On commence donc par le fichier principal, database.php</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php class Database { private static $dbName = &#039;testphp&#039; ; private static $dbHost = &#039;localhost&#039; ; private static $dbUsername = &#039;root&#039;; private static $dbUserPassword = &#039;&#039;; private static $cont = null; public function __construct() { die(&#039;Init function is not allowed&#039;); } public static function connect() { if ( null == self::$cont ) { try { self::$cont = new PDO( &quot;mysql:host=&quot;.self::$dbHost.&quot;;&quot;.&quot;dbname=&quot;.self::$dbName, self::$dbUsername, self::$dbUserPassword); } catch(PDOException $e) { die($e-&gt;getMessage()); <br/>        }<br/>       }<br/>       return self::$cont;<br/>    }<br/>     <br/>    public static function disconnect()<br/>    {<br/>        self::$cont = null;<br/>    }<br/>}<br/>?&gt;<br/>        </code></pre> <div class="code-embed-infos"> </div> </div>
<p>Ce fichier contient une classe qu&rsquo;on va appeler « database » et qui contient les informations de connexion à notre base de donnée .On instancie l&rsquo;<strong>objet PDO</strong> qui nous permet le lien à la base.<br />
Reportez vous à la doc pour en savoir plus sur l&rsquo;objet PDO.</p>
<p>Pour aller plus vite, et permettre à tous de beaux copier coller(: ) ) je vais lister les fichiers un à un.</p>
<h3>index.php</h3>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;!DOCTYPE html&gt;<br/>&lt;html&gt;<br/>    &lt;head&gt;<br/>        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;<br/>        &lt;title&gt;Crud en php&lt;/title&gt;<br/>        <br/>        	&lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        	&lt;link href=&quot;css/responsive.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%20src%3D%22js%2Fbootstrap.js%22%3E%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&lt;script&gt;&quot; title=&quot;&lt;script&gt;&quot; /&gt;<br/>        <br/><br/>    &lt;/head&gt;<br/>    &lt;body&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;container&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;h2&gt;Crud en Php&lt;/h2&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/>                <br/>                    &lt;a href=&quot;add.php&quot; class=&quot;btn btn-success&quot;&gt;Ajouter un user&lt;/a&gt;<br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;table-responsive&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;table class=&quot;table table-hover table-bordered&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;thead&gt;<br/><br/><br/>&lt;th&gt;Name&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Firstname&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Age&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Tel&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Pays&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Email&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Comment&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;metier&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Url&lt;/th&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;th&gt;Edition&lt;/th&gt;<br/>&lt;p&gt;<br/><br/>&lt;/thead&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;tbody&gt;<br/>                        &lt;?php include &#039;database.php&#039;; //on inclut notre fichier de connection $pdo = Database::connect(); //on se connecte à la base $sql = &#039;SELECT * FROM user ORDER BY id DESC&#039;; //on formule notre requete foreach ($pdo-&gt;query($sql) as $row) { //on cree les lignes du tableau avec chaque valeur retournée<br/>                            echo &#039;<br/>&lt;br /&gt;<br/>&lt;tr&gt;&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;name&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;firstname&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;age&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;tel&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;email&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;pays&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;comment&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;metier&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039; . $row[&#039;url&#039;] . &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo &#039;<br/><br/>&lt;td&gt;&#039;;<br/>                            echo &#039;&lt;a class=&quot;btn&quot; href=&quot;edit.php?id=&#039; . $row[&#039;id&#039;] . &#039;&quot;&gt;Read&lt;/a&gt;&#039;;// un autre td pour le bouton d&#039;edition<br/>                            echo &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo &#039;<br/><br/>&lt;td&gt;&#039;;<br/>                            echo &#039;&lt;a class=&quot;btn btn-success&quot; href=&quot;update.php?id=&#039; . $row[&#039;id&#039;] . &#039;&quot;&gt;Update&lt;/a&gt;&#039;;// un autre td pour le bouton d&#039;update<br/>                            echo &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo&#039;<br/><br/>&lt;td&gt;&#039;;<br/>                            echo &#039;&lt;a class=&quot;btn btn-danger&quot; href=&quot;delete.php?id=&#039; . $row[&#039;id&#039;] . &#039; &quot;&gt;Delete&lt;/a&gt;&#039;;// un autre td pour le bouton de suppression<br/>                            echo &#039;&lt;/td&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                            echo &#039;&lt;/tr&gt;<br/>&lt;p&gt;<br/>&#039;;<br/>                        }<br/>                                                Database::disconnect(); //on se deconnecte de la base<br/>                        ;<br/>                        ?&gt;    <br/>&lt;/tbody&gt;<br/>&lt;p&gt;<br/><br/>&lt;/table&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>    &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<ul>
<li>Comme on le voit ici, je crée d&rsquo;abord ma partie html, mon tableau contenant tous les champs.</li>
<li>Je définis les différents titres de mon tableau (th) ,</li>
<li>puis de manière dynamique, je ramène dans chaque case(td) les valeurs trouvées dans la base : l&rsquo;objet PDO est deja instancié dans le fichier database.php , ici j&rsquo;appelle ce fichier grâce au <em> <strong>include &lsquo;database.php</strong>&lsquo;;</em></li>
<li>Je me connecte  à la base,</li>
<li>je formule ma requête SQL,</li>
<li>et pour chaque ligne retournée, je renseigne la valeur trouvée</li>
<li>enfin je crée mes trois liens sous forme de bouton, vers les pages update, delete et edit.</li>
</ul>
<p>Pour l&rsquo;instant on n »a pas rempli notre base, donc ce fichier ne retourne rien. Il va falloir ajouter manuellement les éléments, via notre page add.php.</p>
<h3>Add.php</h3>
<p>Première chose à faire dans chaque fichier désormais, c&rsquo;est l&rsquo;appel à la base :</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code"> require &#039;database.php&#039;;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Ensuite, dans ce fichier on va demander à l&rsquo;utilisateur d&rsquo;insérer des données, qu&rsquo;il faudra traiter et sécuriser.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">if($_SERVER[&quot;REQUEST_METHOD&quot;]== &quot;POST&quot; &amp;&amp; !empty($_POST)){</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On commence par traiter la méthode de notre formulaire puis vérifier qu&rsquo;il a bien été soumis. Alors, dans ce cas on teste un a un les inputs :</p>
<p>On assigne une variable d&rsquo;erreur</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> $nameError = null;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On récupère notre valeur</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">$name = htmlentities(trim($_POST[&#039;name&#039;]));</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On crée notre message d&rsquo;erreur</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> $valid = true;<br/>        if (empty($name)) {<br/>            $nameError = &#039;Please enter Name&#039;;<br/>            $valid = false;<br/>        }</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On se connecte à la base, on formule notre requête, puis on passe au formulaire:</p>
<p>Voici le fichier en entier avec tous les champs input. Dans la vérification des champs on inclut les expressions régulières pour le nom, le mail, le tel, l&rsquo;url.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">     &lt;?php require &#039;database.php&#039;; if($_SERVER[&quot;REQUEST_METHOD&quot;]== &quot;POST&quot; &amp;&amp; !empty($_POST)){ //on initialise nos messages d&#039;erreurs; $nameError = &#039;&#039;; $firstnameError=&#039;&#039;; $ageError=&#039;&#039;; $telError =&#039;&#039;; $emailError =&#039;&#039;; $paysError=&#039;&#039;; $commentError=&#039;&#039;; $metierError=&#039;&#039;; $urlError=&#039;&#039;; // on recupère nos valeurs $name = htmlentities(trim($_POST[&#039;name&#039;])); $firstname=htmlentities(trim($_POST[&#039;firstname&#039;])); $age = htmlentities(trim($_POST[&#039;age&#039;])); $tel=htmlentities(trim($_POST[&#039;tel&#039;])); $email = htmlentities(trim($_POST[&#039;email&#039;])); $pays=htmlentities(trim($_POST[&#039;pays&#039;])); $comment=htmlentities(trim($_POST[&#039;comment&#039;])); $metier=htmlentities(trim($_POST[&#039;metier&#039;])); $url=htmlentities(trim($_POST[&#039;url&#039;])); // on vérifie nos champs $valid = true; if (empty($name)) { $nameError = &#039;Please enter Name&#039;; $valid = false; }else if (!preg_match(&quot;/^[a-zA-Z ]*$/&quot;,$name)) { $nameError = &quot;Only letters and white space allowed&quot;; } if(empty($firstname)){ $firstnameError =&#039;Please enter firstname&#039;; $valid= false; }else if (!preg_match(&quot;/^[a-zA-Z ]*$/&quot;,$name)) { $nameError = &quot;Only letters and white space allowed&quot;; } if (empty($email)) { $emailError = &#039;Please enter Email Address&#039;; $valid = false; } else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) { $emailError = &#039;Please enter a valid Email Address&#039;; $valid = false; } if (empty($age)) { $ageError = &#039;Please enter your age&#039;; $valid = false; } if (empty($tel)) { $telError = &#039;Please enter phone&#039;; $valid = false; }else if(!preg_match(&quot;#^0[1-68]([-. ]?[0-9]{2}){4}$#&quot;,$tel)){ $telError = &#039;Please enter a valid phone&#039;; $valid = false; } if (!isset($pays)) { $paysError = &#039;Please select a country&#039;; $valid = false; } if(empty($comment)){ $commentError =&#039;Please enter a description&#039;; $valid= false; } if(empty($metier)){ $metierError =&#039;Please select a job&#039;; $valid= false; } if(empty($url)){ $urlError =&#039;Please enter website url&#039;; $valid= false; } else if(!preg_match(&quot;/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&amp;@#\/%?=~_|!:,.;]*[-a-z0-9+&amp;@#\/%=~_|]/i&quot;,$url)) { $urlError=&#039;Enter a valid url&#039;; $valid=false; } // si les données sont présentes et bonnes, on se connecte à la base if ($valid) { $pdo = Database::connect(); $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br/>            $sql = &quot;INSERT INTO user (name,firstname,age,tel, email, pays,comment, metier,url) values(?, ?, ?, ? , ? , ? , ? , ?, ?)&quot;;<br/>            $q = $pdo-&gt;prepare($sql);<br/>            $q-&gt;execute(array($name,$firstname, $age, $tel, $email,$pays,$comment, $metier, $url));<br/>            Database::disconnect();<br/>            header(&quot;Location: index.php&quot;);<br/>        }<br/>    }<br/>?&gt;<br/>&lt;!DOCTYPE html&gt;<br/>&lt;html&gt;<br/>    &lt;head&gt;<br/>        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;<br/>        &lt;title&gt;Crud&lt;/title&gt;<br/>        	&lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%20src%3D%22js%2Fbootstrap.js%22%3E%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&lt;script&gt;&quot; title=&quot;&lt;script&gt;&quot; /&gt;<br/>        <br/>    &lt;/head&gt;<br/>    &lt;body&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;container&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;h3&gt;Ajouter un contact&lt;/h3&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;br /&gt;<br/>&lt;form method=&quot;post&quot; action=&quot;add.php&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo !empty($nameError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Name&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;input name=&quot;name&quot; type=&quot;text&quot;  placeholder=&quot;Name&quot; value=&quot;&lt;?php echo !empty($name)?$name:&#039;&#039;;?&gt;&quot;&gt;<br/>                            &lt;?php if (!empty($nameError)): ?&gt;<br/>                                &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $nameError;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo !empty($firstnameError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;firstname&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;input type=&quot;text&quot; name=&quot;firstname&quot; value=&quot;&lt;?php echo !empty($firstname)?$firstname:&#039;&#039;; ?&gt;&quot;&gt;<br/>                            &lt;?php if(!empty($firstnameError)):?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $firstnameError ;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo !empty($ageError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;age&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;input type=&quot;date&quot; name=&quot;age&quot; value=&quot;&lt;?php echo !empty($age)?$age:&#039;&#039;; ?&gt;&quot;&gt;<br/>                            &lt;?php if(!empty($ageError)):?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $ageError ;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                 <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo !empty($emailError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Email Address&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;input name=&quot;email&quot; type=&quot;text&quot; placeholder=&quot;Email Address&quot; value=&quot;&lt;?php echo !empty($email)?$email:&#039;&#039;;?&gt;&quot;&gt;<br/>                            &lt;?php if (!empty($emailError)): ?&gt;<br/>                                &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $emailError;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo !empty($telError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Telephone&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;input name=&quot;tel&quot; type=&quot;text&quot; placeholder=&quot;Telephone&quot; value=&quot;&lt;?php echo !empty($tel) ? $tel:&#039;&#039;;?&gt;&quot;&gt;<br/>                            &lt;?php if (!empty($telError)): ?&gt;<br/>                                &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $telError;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo !empty($paysError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                 &lt;select name=&quot;pays&quot;&gt;<br/><br/>&lt;option value=&quot;paris&quot;&gt;Paris&lt;/option&gt;<br/><br/>&lt;option value=&quot;londres&quot;&gt;Londres&lt;/option&gt;<br/><br/>&lt;option value=&quot;amsterdam&quot;&gt;Amsterdam&lt;/option&gt;<br/><br/>&lt;/select&gt;<br/>                     &lt;?php if (!empty($paysError)): ?&gt;<br/>                                &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $paysError;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo !empty($metierError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;checkbox-inline&quot;&gt;Metier&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        Dev : &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;dev&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;dev&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>                        Integrateur &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;integrateur&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;integrateur&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>                        Reseau &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;reseau&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;reseau&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                     &lt;?php if (!empty($metierError)): ?&gt;<br/>                                &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $metierError;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                 <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group  &lt;?php echo !empty($urlError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Siteweb&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                       &lt;input type=&quot;text&quot; name=&quot;url&quot; value=&quot;&lt;?php echo !empty($url)? $url:&#039;&#039; ; ?&gt;&quot;&gt;<br/>                        &lt;?php if(!empty($urlError)):?&gt;<br/>                       &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $urlError ;?&gt;&lt;/span&gt;<br/>                       &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo !empty($commentError)?&#039;error&#039;:&#039;&#039;;?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Commentaire &lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                           &lt;textarea rows=&quot;4&quot; cols=&quot;30&quot; name=&quot;comment&quot; &gt;&lt;?php if(isset($comment)) echo $comment;?&gt;&lt;/textarea&gt;    <br/>                            &lt;?php if(!empty($commentError)):?&gt;<br/>                               &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $commentError ;?&gt;&lt;/span&gt;<br/>                            &lt;?php endif;?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;form-actions&quot;&gt;<br/>                 &lt;input type=&quot;submit&quot; class=&quot;btn btn-success&quot; name=&quot;submit&quot; value=&quot;submit&quot;&gt;<br/>                 &lt;a class=&quot;btn&quot; href=&quot;index.php&quot;&gt;Retour&lt;/a&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>            &lt;/form&gt;<br/>&lt;p&gt;<br/>            <br/>            <br/>            <br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>        <br/>    &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Editer</h3>
<p>La page edit.php est sans doute la plus simple, ici pas d&rsquo;opération complexe, mais juste la lecture d&rsquo;un élément du tableau.</p>
<ul>
<li>On inclut notre fichier de connexion.</li>
<li>On initialise une variable $id,</li>
<li>si on a bien un id envoyé dans l&rsquo;url ($_GET), on le récupère.( le lien crée en index.php « <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">« </span>delete.php?id<span class="token punctuation">=</span>&lsquo; . $row[&lsquo;id&rsquo;] . &lsquo; <span class="token punctuation"> » attend cet id en paramètre)</span></span></li>
<li>s&rsquo;il n&rsquo;y pas d&rsquo;id, on redirige vers l&rsquo;index.</li>
<li>Autrement,  on se connecte à la base et avec une requête Select toute simple sur l&rsquo;id,  on affiche simplement chaque élément retourné.</li>
</ul>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php require(&#039;database.php&#039;); //on appelle notre fichier de config $id = null; if (!empty($_GET[&#039;id&#039;])) { $id = $_REQUEST[&#039;id&#039;]; } if (null == $id) { header(&quot;location:index.php&quot;); } else { //on lance la connection et la requete $pdo = Database ::connect(); $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) .<br/>    $sql = &quot;SELECT * FROM user where id =?&quot;;<br/>    $q = $pdo-&gt;prepare($sql);<br/>    $q-&gt;execute(array($id));<br/>    $data = $q-&gt;fetch(PDO::FETCH_ASSOC);<br/>    Database::disconnect();<br/>}<br/><br/><br/><br/>/*<br/> * To change this template, choose Tools | Templates<br/> * and open the template in the editor.<br/> */<br/>?&gt;<br/>&lt;!DOCTYPE html&gt;<br/>&lt;html lang=&quot;en&quot;&gt;<br/>    &lt;head&gt;<br/>        &lt;meta charset=&quot;utf-8&quot;&gt;<br/>        	&lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%20src%3D%22js%2Fbootstrap.min.js%22%3E%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&lt;script&gt;&quot; title=&quot;&lt;script&gt;&quot; /&gt;<br/>    &lt;/head&gt;<br/><br/>    &lt;body&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;container&quot;&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;span10 offset1&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;h3&gt;Edition&lt;/h3&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;form-horizontal&quot; &gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Name&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;name&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Firstname&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;firstname&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Email Address&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;email&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Phone&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;tel&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Pays&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;pays&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Metier&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;metier&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Url&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;url&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&quot;&gt;<br/>                        &lt;label class=&quot;control-label&quot;&gt;Comment&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                            &lt;label class=&quot;checkbox&quot;&gt;<br/>                                &lt;?php echo $data[&#039;comment&#039;]; ?&gt;<br/>                            &lt;/label&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;form-actions&quot;&gt;<br/>                        &lt;a class=&quot;btn&quot; href=&quot;index.php&quot;&gt;Back&lt;/a&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/>&lt;!-- /container --&gt;<br/>    &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Mettre à jour</h3>
<p>Pour ce fichier et sa partie html, on peut reprendre le fichier add et faire un copier coller du tableau.C&rsquo;est la requête qui change ici:</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">  &lt;?php require &#039;database.php&#039;; $id = null; if ( !empty($_GET[&#039;id&#039;])) { $id = $_REQUEST[&#039;id&#039;]; } if ( null==$id ) { header(&quot;Location: index.php&quot;); } if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot; &amp;&amp; !empty($_POST)) { // on initialise nos erreurs $nameError = null; $firstnameError = null; $ageError = null; $telError = null; $emailError = null; $paysError = null; $commentError = null; $metierError = null; $urlError = null; // On assigne nos valeurs $name = $_POST[&#039;name&#039;]; $firstname = $_POST[&#039;firstname&#039;]; $age = $_POST[&#039;age&#039;]; $tel = $_POST[&#039;tel&#039;]; $email = $_POST[&#039;email&#039;]; $pays = $_POST[&#039;pays&#039;]; $comment = $_POST[&#039;comment&#039;]; $metier = $_POST[&#039;metier&#039;]; $url = $_POST[&#039;url&#039;]; // On verifie que les champs sont remplis $valid = true; if (empty($name)) { $nameError = &#039;Please enter Name&#039;; $valid = false; } if (empty($firstname)) { $firstnameError = &#039;Please enter firstname&#039;; $valid = false; } if (empty($email)) { $emailError = &#039;Please enter Email Address&#039;; $valid = false; } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailError = &#039;Please enter a valid Email Address&#039;; $valid = false; } if (empty($age)) { $ageError = &#039;Please enter your age&#039;; $valid = false; } if (empty($tel)) { $telError = &#039;Please enter phone&#039;; $valid = false; } if (!isset($pays)) { $paysError = &#039;Please select a country&#039;; $valid = false; } if (empty($comment)) { $commentError = &#039;Please enter a description&#039;; $valid = false; } if (!isset($metier)) { $metierError = &#039;Please select a job&#039;; $valid = false; } if (empty($url)) { $urlError = &#039;Please enter website url&#039;; $valid = false; } // mise à jour des donnés if ($valid) { $pdo = Database::connect(); $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br/>             <br/>                $sql = &quot;UPDATE user SET name = ?,firstname = ?,age = ?,tel = ?, email = ?, pays = ?, comment = ?, metier = ?, url = ? WHERE id = ?&quot;;<br/>                $q = $pdo-&gt;prepare($sql);<br/>                $q-&gt;execute(array($name,$firstname, $age, $tel, $email,$pays,$comment, $metier, $url,$id));<br/>                Database::disconnect();<br/>                header(&quot;Location: index.php&quot;);<br/>            } <br/>           }else {<br/><br/>                 $pdo = Database::connect();<br/>                $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br/>                $sql = &quot;SELECT * FROM user where id = ?&quot;;<br/>                $q = $pdo-&gt;prepare($sql);<br/>                $q-&gt;execute(array($id));<br/>                $data = $q-&gt;fetch(PDO::FETCH_ASSOC);<br/>                $name = $data[&#039;name&#039;];<br/>                $firstname = $data[&#039;firstname&#039;];<br/>                $age = $data[&#039;age&#039;];<br/>                $tel = $data[&#039;tel&#039;];<br/>                $email = $data[&#039;email&#039;];<br/>                $pays = $data[&#039;pays&#039;];<br/>                $comment = $data[&#039;comment&#039;];<br/>                $metier = $data[&#039;metier&#039;];<br/>                $url = $data[&#039;url&#039;];<br/>                Database::disconnect();<br/>            }<br/>        <br/>        ?&gt;<br/><br/>&lt;!DOCTYPE html&gt;<br/>&lt;html&gt;<br/>    &lt;head&gt;<br/>        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;<br/>        &lt;title&gt;Crud-Update&lt;/title&gt;<br/>        	&lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>        &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%20src%3D%22js%2Fbootstrap.js%22%3E%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&lt;script&gt;&quot; title=&quot;&lt;script&gt;&quot; /&gt;<br/><br/>    &lt;/head&gt;<br/>    &lt;body&gt;<br/>     <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;container&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;h3&gt;Modifier un contact&lt;/h3&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;br /&gt;<br/>&lt;form method=&quot;post&quot; action=&quot;update.php?id=&lt;?php echo $id ;?&gt;&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo!empty($nameError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Name&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input name=&quot;name&quot; type=&quot;text&quot;  placeholder=&quot;Name&quot; value=&quot;&lt;?php echo!empty($name) ? $name : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($nameError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $nameError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo!empty($firstnameError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;firstname&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input type=&quot;text&quot; name=&quot;firstname&quot; value=&quot;&lt;?php echo!empty($firstname) ? $firstname : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($firstnameError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $firstnameError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo!empty($ageError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;age&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input type=&quot;number&quot; name=&quot;age&quot; value=&quot;&lt;?php echo!empty($age) ? $age : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($ageError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $ageError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo!empty($emailError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Email Address&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input name=&quot;email&quot; type=&quot;text&quot; placeholder=&quot;Email Address&quot; value=&quot;&lt;?php echo!empty($email) ? $email : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($emailError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $emailError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo!empty($telError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Telephone&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input name=&quot;tel&quot; type=&quot;text&quot; placeholder=&quot;Telephone&quot; value=&quot;&lt;?php echo!empty($tel) ? $tel : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($telError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $telError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo!empty($paysError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;select name=&quot;pays&quot;&gt;<br/><br/>&lt;option value=&quot;paris&quot;&gt;Paris&lt;/option&gt;<br/><br/>&lt;option value=&quot;londres&quot;&gt;Londres&lt;/option&gt;<br/><br/>&lt;option value=&quot;amsterdam&quot;&gt;Amsterdam&lt;/option&gt;<br/><br/>&lt;/select&gt;<br/>                    &lt;?php if (!empty($paysError)): ?&gt;<br/>                        &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $paysError; ?&gt;&lt;/span&gt;<br/>                    &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group&lt;?php echo!empty($metierError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;checkbox-inline&quot;&gt;Metier&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        Dev : &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;dev&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;dev&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>                        Integrateur &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;integrateur&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;integrateur&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>                        Reseau &lt;input type=&quot;checkbox&quot; name=&quot;metier&quot; value=&quot;reseau&quot; &lt;?php if (isset($metier) &amp;&amp; $metier == &quot;reseau&quot;) echo &quot;checked&quot;; ?&gt;&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                    &lt;?php if (!empty($metierError)): ?&gt;<br/>                        &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $metierError; ?&gt;&lt;/span&gt;<br/>                    &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group  &lt;?php echo!empty($urlError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Siteweb&lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;input type=&quot;text&quot; name=&quot;url&quot; value=&quot;&lt;?php echo!empty($url) ? $url : &#039;&#039;; ?&gt;&quot;&gt;<br/>                        &lt;?php if (!empty($urlError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $urlError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;control-group &lt;?php echo!empty($commentError) ? &#039;error&#039; : &#039;&#039;; ?&gt;&quot;&gt;<br/>                    &lt;label class=&quot;control-label&quot;&gt;Commentaire &lt;/label&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;controls&quot;&gt;<br/>                        &lt;textarea rows=&quot;4&quot; cols=&quot;30&quot; name=&quot;comment&quot; &gt;&lt;?php if (isset($comment)) echo $comment; ?&gt;&lt;/textarea&gt;    <br/>                        &lt;?php if (!empty($commentError)): ?&gt;<br/>                            &lt;span class=&quot;help-inline&quot;&gt;&lt;?php echo $commentError; ?&gt;&lt;/span&gt;<br/>                        &lt;?php endif; ?&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;form-actions&quot;&gt;<br/>                    &lt;input type=&quot;submit&quot; class=&quot;btn btn-success&quot; name=&quot;submit&quot; value=&quot;submit&quot;&gt;<br/>                    &lt;a class=&quot;btn&quot; href=&quot;index.php&quot;&gt;Retour&lt;/a&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>            &lt;/form&gt;<br/>&lt;p&gt;<br/><br/><br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/><br/>    &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Quand on est sur une ligne du tableau et qu&rsquo;on veut supprimer ou mettre à jour, on renvoie vers un lien contenant l&rsquo;id de la ligne à supprimer. Ce sont nos liens dans la page index.php</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">href=&quot;delete.php?id=&#039; . $row[&#039;id&#039;] . &#039; &quot;<br/><br/>href=&quot;update.php?id=&#039; . $row[&#039;id&#039;] . &#039; &quot;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Ces quelque lignes en début de fichier sont donc la pour tester qu&rsquo;on a bien un Id passé en paramètre dans notre url, via notre lien:</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">  $id = null;<br/>	if ( !empty($_GET[&#039;id&#039;])) {<br/>		$id = $_REQUEST[&#039;id&#039;];<br/>	}<br/>	<br/>	if ( null==$id ) {<br/>		header(&quot;Location: index.php&quot;);<br/>	}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>dans ce fichier on va modifier et insérer des données dans la base, on enchaîne donc avec toutes les vérif nécessaires.</p>
<p>Puis on se connecte à la base. On a ici deux requêtes, une pour l&rsquo;affichage des données, puis une pour l&rsquo;UPDATE des données. Sans la première on se retrouverait avec un tableau vide. Les deux requêtes sont donc nécessaires.</p>
<h3>Supprimer</h3>
<p>Dans notre tableau d&rsquo;index, on a enfin un dernier bouton, « delete ». Ce lien renvoie vers notre fichier delete.php qui est beaucoup plus simple. C&rsquo;est juste une petite interface qui demande à l&rsquo;utilisateur la confirmation de suppression. A l&rsquo;intérieur de ce fichier, une requête de suppression et le petit formulaire de confirmation</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php require &#039;database.php&#039;; $id=0; if(!empty($_GET[&#039;id&#039;])){ $id=$_REQUEST[&#039;id&#039;]; } if(!empty($_POST)){ $id= $_POST[&#039;id&#039;]; $pdo=Database::connect(); $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br/>     $sql = &quot;DELETE FROM user  WHERE id = ?&quot;;<br/>        $q = $pdo-&gt;prepare($sql);<br/>        $q-&gt;execute(array($id));<br/>        Database::disconnect();<br/>        header(&quot;Location: index.php&quot;);<br/>    <br/>}<br/>/*<br/> * To change this template, choose Tools | Templates<br/> * and open the template in the editor.<br/> */<br/>?&gt;<br/>&lt;!DOCTYPE html&gt;<br/>&lt;html lang=&quot;en&quot;&gt;<br/>&lt;head&gt;<br/>    &lt;meta charset=&quot;utf-8&quot;&gt;<br/>    	&lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;<br/>    &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%20src%3D%22js%2Fbootstrap.min.js%22%3E%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&lt;script&gt;&quot; title=&quot;&lt;script&gt;&quot; /&gt;<br/>&lt;/head&gt;<br/> <br/>&lt;body&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;container&quot;&gt;<br/>     <br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;span10 offset1&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;row&quot;&gt;<br/><br/>&lt;br /&gt;<br/>&lt;h3&gt;Delete a user&lt;/h3&gt;<br/>&lt;p&gt;<br/><br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                     <br/>&lt;br /&gt;<br/>&lt;form class=&quot;form-horizontal&quot; action=&quot;delete.php&quot; method=&quot;post&quot;&gt;<br/>                      &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $id;?&gt;&quot;/&gt;<br/>                      <br/>Are you sure to delete ?<br/><br/>&lt;br /&gt;<br/>&lt;div class=&quot;form-actions&quot;&gt;<br/>                          &lt;button type=&quot;submit&quot; class=&quot;btn btn-danger&quot;&gt;Yes&lt;/button&gt;<br/>                          &lt;a class=&quot;btn&quot; href=&quot;index.php&quot;&gt;No&lt;/a&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                    &lt;/form&gt;<br/>&lt;p&gt;<br/>&lt;/div&gt;<br/>&lt;p&gt;<br/><br/>                 <br/>&lt;/div&gt;<br/>&lt;p&gt;<br/>&lt;!-- /container --&gt;<br/>  &lt;/body&gt;<br/>&lt;/html&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Et voila, on a ici notre petite appli qui fonctionne, on peut rajouter des users dans la base via notre fichier add.php, et ensuite les mettre à jour les supprimer ou les lire tout simplement.<br />
Dans le<a href="https://www.copier-coller.com/un-crud-avec-espace-de-connexion-en-php/"> prochain tuto</a>, on verra comment rajouter la un espace de connexion.</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-crud-en-php/">Un crud en php</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/un-crud-en-php/feed/</wfw:commentRss>
			<slash:comments>99</slash:comments>
		
		
			</item>
		<item>
		<title>Les expressions regulières</title>
		<link>https://www.copier-coller.com/les-expressions-regulieres/</link>
					<comments>https://www.copier-coller.com/les-expressions-regulieres/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 12 Apr 2015 02:40:38 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3194</guid>

					<description><![CDATA[<p>Petit mémo pour retrouver les expressions régulières, très utiles pour consolider ses formulaires. &#160;</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/les-expressions-regulieres/">Les expressions regulières</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Les expressions régulières</h2>
<p>Petit mémo pour retrouver les expressions régulières, très utiles pour consolider ses formulaires.</p>
<h3>Un expression régulière pour le champ Mail</h3>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">filter_var($email,FILTER_VALIDATE_EMAIL)</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Un expression régulière pour le champ Name</h3>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">preg_match(&quot;/^[a-zA-Z ]*$/&quot;,$variable)</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Un expression régulière pour le champ Tel</h3>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">preg_match(&quot;#^0[1-68]([-. ]?[0-9]{2}){4}$#&quot;,$variable)</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Un expression régulière pour le champ Website url</h3>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">preg_match(&quot;/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&amp;@#\/%?=~_|!:,.;]*[-a-z0-9+&amp;@#\/%=~_|]/i&quot;,$variable)</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Un expression régulière pour le champ Code Postal</h3>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> preg_match ( &quot; \^[0-9]{5,5}$\ &quot; , $variable ) </code></pre> <div class="code-embed-infos"> </div> </div>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/les-expressions-regulieres/">Les expressions regulières</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/les-expressions-regulieres/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sécuriser un formulaire en php : les bases</title>
		<link>https://www.copier-coller.com/securiser-un-formulaire/</link>
					<comments>https://www.copier-coller.com/securiser-un-formulaire/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 12 Apr 2015 02:21:32 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3186</guid>

					<description><![CDATA[<p>Ici je fais suite au petit rappel php sur la transmission des données via un petit formulaire.Je vais donc reprendre exactement le même formulaire : Tout au début de mon fichier et avant le formulaire, je définis mes variables Ensuite je teste l&#8217;envoi du formulaire, et dans celui-ci le champ &#8216;name&#8217;, en testant s&#8217;il est rempli [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/securiser-un-formulaire/">Sécuriser un formulaire en php : les bases</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2> Sécuriser un formulaire</h2>
<p>Ici je fais suite au <a href="http://copier-coller.com/un-formulaire-simple/">petit rappel php sur la transmission des données </a>via un petit formulaire.Je vais donc reprendre exactement le même formulaire :</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> &lt;form method=&quot;POST&quot; action=&quot;test.php&quot;&gt;<br/>                &lt;label for=&quot;name&quot;&gt;Name&lt;/label&gt;<br/>                &lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;&quot;&gt;<br/>                &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;valider&quot;&gt;<br/>            &lt;/form&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Définir ses variables</h3>
<p>Tout au début de mon fichier et avant le formulaire, je définis mes variables</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">$nameError =&quot;&quot;;//on initialize notre message erreur<br/>$name = &quot;&quot;;//on initialize notre variable nom</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Tester l&rsquo;envoi du formulaire</h3>
<p>Ensuite je teste l&rsquo;envoi du formulaire, et dans celui-ci le champ &lsquo;name&rsquo;, en testant s&rsquo;il est rempli et si c&rsquo;est bien un mot.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {//je teste la methode d&#039;envoi<br/>   if (empty($_POST[&quot;name&quot;])) {//si l&#039;input name est vide<br/>     $nameError = &quot;Name is required&quot;;//message d&#039;erreur<br/>   } else {<br/>     $name = test_input($_POST[&quot;name&quot;]);//sinon on assigne l&#039;input récupéré dans une  variable<br/>     <br/>     // check if name only contains letters and whitespace<br/>     if (!preg_match(&quot;/^[a-zA-Z ]*$/&quot;,$name)) {//si c&#039;est pas un mot<br/>       $nameError = &quot;Only letters and white space allowed&quot;; //erreur<br/>     }else{//ici dernière condition optionnelle pour montrer $name que si ce n&#039;est pas un nombre<br/>         echo $name;<br/>     }<br/>   }<br/>}<br/>//fonction pour sécuriser les données<br/>function test_input($data) {<br/>   $data = trim($data);<br/>   $data = stripslashes($data);<br/>   $data = htmlspecialchars($data);<br/>   return $data;<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>J&rsquo;ai commenté le code pour explication. Si on insère des chiffres:</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3190" src="http://copier-coller.com/wp-content/uploads/2015/04/ulber.png" alt="ulber" width="292" height="145" /></p>
<p>si on valide sans rien mettre:</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3191" src="http://copier-coller.com/wp-content/uploads/2015/04/required.png" alt="required" width="256" height="118" /></p>
<p>et si on insère un mot on l&rsquo;affiche juste au dessus..</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3192" src="http://copier-coller.com/wp-content/uploads/2015/04/name.png" alt="name" width="236" height="101" /></p>
<h3>Le formulaire au complet</h3>
<p>Et voici le formulaire actualisé avec l&rsquo;affichage des messages d&rsquo;erreurs:</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> &lt;form method=&quot;POST&quot; action=&quot;test.php&quot;&gt;<br/>                &lt;label for=&quot;name&quot;&gt;Name&lt;/label&gt;<br/>                &lt;input name=&quot;name&quot; type=&quot;text&quot; value=&quot;&lt;?php echo !empty($name)? $name : &#039;&#039;;?&gt;&quot;&gt;<br/>                                 &lt;?php if (!empty($nameError)): ?&gt;&lt;!--on vérifie sil y a une erreur--&gt;<br/>                               &lt;p&gt; &lt;span class=&quot;red&quot;&gt;&lt;?php echo $nameError;?&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--dans ce cas on l&#039;affiche--&gt;<br/>                            &lt;?php endif; ?&gt;<br/>                &lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;valider&quot;&gt;&lt;/p&gt;<br/>            &lt;/form&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/securiser-un-formulaire/">Sécuriser un formulaire en php : les bases</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/securiser-un-formulaire/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Un formulaire simple</title>
		<link>https://www.copier-coller.com/un-formulaire-simple/</link>
					<comments>https://www.copier-coller.com/un-formulaire-simple/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sat, 11 Apr 2015 21:25:23 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://copier-coller.com/?p=3177</guid>

					<description><![CDATA[<p>Voici un petit mémo pour rappeler les bases de la programmation en php, avec la transmission des données.Ici rien de bien compliqué, un petit formulaire avec un seul input , et l&#8217;affichage dynamique du texte dans la même page. &#160; Pour l&#8217;exemple, juste au dessus ou au dessous du formulaire on affiche un message reprenant [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-formulaire-simple/">Un formulaire simple</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Un formulaire simple</h2>
<p>Voici un petit mémo pour rappeler les bases de la programmation en php, avec la transmission des données.Ici rien de bien compliqué, un petit formulaire avec un seul input , et l&rsquo;affichage dynamique du texte dans la même page.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3178" src="http://copier-coller.com/wp-content/uploads/2015/04/input.png" alt="input" width="308" height="36" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/input.png 308w, https://www.copier-coller.com/wp-content/uploads/2015/04/input-300x35.png 300w" sizes="(max-width: 308px) 100vw, 308px" /></p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code"> &lt;form method=&quot;POST&quot; action=&quot;test.php&quot;&gt;<br/>                &lt;label for=&quot;name&quot;&gt;Name&lt;/label&gt;<br/>                &lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;&quot;&gt;<br/>                &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;valider&quot;&gt;<br/>            &lt;/form&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>&nbsp;</p>
<p>Pour l&rsquo;exemple, juste au dessus ou au dessous du formulaire on affiche un message reprenant le nom inséré :</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;?php<br/>          <br/>            if(isset($_POST[&#039;submit&#039;])){<br/>                  $name=$_POST[&#039;name&#039;];<br/>                echo &#039;vous vous appelez &#039; .$name ;<br/>            }<br/>            <br/>            ;?&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Si le formulaire est soumis,</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3179" src="http://copier-coller.com/wp-content/uploads/2015/04/form.png" alt="form" width="319" height="37" srcset="https://www.copier-coller.com/wp-content/uploads/2015/04/form.png 319w, https://www.copier-coller.com/wp-content/uploads/2015/04/form-300x35.png 300w" sizes="(max-width: 319px) 100vw, 319px" /></p>
<p>on affiche juste en dessous un message avec le nom inséré par l&rsquo;utilisateur.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-3180" src="http://copier-coller.com/wp-content/uploads/2015/04/form1.png" alt="form1" width="282" height="79" /></p>
<p>L&rsquo;attribut action nous indique vers quelle page rediriger le formulaire.<br />
On envoie les données sous la forme d&rsquo;un tableau avec la méthode Post ( $_POST[&lsquo;name&rsquo;] )  ou via l&rsquo;url avec la méthode Get ( $_GET [&lsquo; name&rsquo; ] ) .</p>
<p>On sait que tous les input d&rsquo;un formulaire doivent posséder un attribut <em>name, </em>qui est considéré par le script PHP comme une variable contenant la valeur saisie et envoyée dans le tableau $_POST.<br />
On récupère donc notre « name&rsquo; via $_POST[] et on le met dans une variable grace à</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">$name = $_POST [&#039;name&#039;].</code></pre> <div class="code-embed-infos"> </div> </div>
<p>On l&rsquo;affiche uniquement si notre formulaire a été validé avec if($_POST[&lsquo;submit&rsquo;]) :</p>
<p>Pour info, &lsquo;submit&rsquo; est lui aussi un input comme un autre, il est lui aussi contenu dans le tableau $_POST.Il est préférable de tester la méthode, puis à l&rsquo;intérieur de la condition, tester ensuite avec des issets ou autre conditions, tous les champs du formulaire:</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">      &lt;?php<br/>          <br/>           if ($_SERVER[&#039;REQUEST_METHOD&#039;] == &#039;POST&#039;) {<br/>                  $name=$_POST[&#039;name&#039;];<br/>                echo &#039;vous vous appelez &#039; .$name ;<br/>            }<br/>            <br/>            ;?&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p><a href="%20http://copier-coller.com/securiser-un-formulaire/">Dans le tuto suivant</a>, on va reprendre exactement le même petit formulaire et voir comment on peut sécuriser un peu l&rsquo;affichage des données.</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-formulaire-simple/">Un formulaire simple</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/un-formulaire-simple/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
