Académique Documents
Professionnel Documents
Culture Documents
Initiation partie 3
Tout est déjà en place dans les tables, nous allons donc commencer par la
publication ou non d'une page.
En utilisant ces valeurs nous pourrons décider si les pages apparaissent ou non
dans le site.
Comme nous allons faire un appel vers la BDD nous avons besoin de
connecteur.php.
require("php/connecteur.php");
En testant si la connexion se fait nous allons boucler pour remplir deux tableaux.
Un pour les liens un autre pour les textes des liens.
if($liens_aff){
while ($fetch_tabLiens_aff = mysql_fetch_object ($liens_aff)) {
$tab_defLien_aff[]=$fetch_tabLiens_aff->defLien;
$tab_lien_aff[]=$fetch_tabLiens_aff->lien;
}
}
$lMax = count($tab_lien_aff);
Une fois que nous avons le maximum pour la boucle il suffit de la mettre en
place. Cette boucle va remplacer les appels de fonction précédents. Les
indexations des tableaux vont permettre l'appel des valeurs de ces tableaux.
for($n=0;$n<$lMax;$n++){
affiche($tab_lien_aff[$n],$tab_defLien_aff[$n]);
}
if($liens_aff){
while ($fetch_tabLiens_aff = mysql_fetch_object ($liens_aff)) {
$tab_defLien_aff[]=$fetch_tabLiens_aff->defLien;
$tab_lien_aff[]=$fetch_tabLiens_aff->lien;
}
}
$lMax = count($tab_lien_aff);
// la fonction
function affiche($li_URL,$li_txt){
$lienURL = substr($_SERVER['REQUEST_URI'],1);
if($lienURL ==""){
$lienURL ="index.php";
}
if($li_URL == $lienURL){
$var_lien ="<p><strong>$li_txt</strong></p>";
}else{
$var_lien ="<p><a href=\"$li_URL\"
class=\"lienMG\">$li_txt</a></p>";
}
echo $var_lien;
}
// utilisation
for($n=0;$n<$lMax;$n++){
affiche($tab_lien_aff[$n],$tab_defLien_aff[$n]);
}
Nous allons permettre la modification des intilulés des liens et des liens par
l'utilisateur. Nouveau document dans le dossier login : modifPage.php
À la suite du code php pour la liste il va falloir déclarer nos variables post.
$defLienPage = $_POST['defLienPage'];
$titreHtmPage = $_POST['titreHtmPage'];
$lienPage = $_POST['lienPage'];
$docVisible = $_POST['docVisible'];
Le but ici va être de récupérer les valeurs déjà stockées dans les tables afin de
les afficher dans le document pour qu'elles puissent être modifiées par
l'utilisateur. Nous n'allons pas lui permettre de renommer les pages pour le
moment.
La première chose à faire va être d'afficher dans les champs correspondants les
valeurs récupérées dans la base.
<label class="boxColor1">
Nom de la page (non modifiable)
<? echo $fetch_tabLiensModif[1]; ?>
</label>
La seconde chose à faire va être de tester si le bouton est activé puisque les
données des tables auront été récupérées via la connexion pour créer la liste.
if($_POST['creaPage']){
Dans ce if nous allons insérer nos requêtes de mises à jour des tables.
if($_POST['creaPage']){
$dlp =$_POST['defLienPage'];
$thp =$_POST['titreHtmPage'];
$lp = $_POST['lienPage'];
$dv = $_POST['docVisible'];
//on refait une requête pour mettre à jour les données dans la page.
$fetch_tabLiensModif = mysql_fetch_row($req_tabLiensModif);
Pour que les boutons radio prennent en compte la valeur stockée il va falloir les
intialiser avec php.
Si aucune valeur n'a été détectée aucun des bouton radio ne sera coché.
$radioCheck = "checked=\"checked\"";
switch ($fetch_tabLiensModif[5]){
case "0":
$cocheRadio1="<input name=\"docVisible\" type=\"radio\" value=\"1\" />";
$cocheRadio0="<input name=\"docVisible\" type=\"radio\" value=\"0\"
$radioCheck />";
break;
case "1":
$cocheRadio1=" <input name=\"docVisible\" type=\"radio\" value=\"1\"
$radioCheck />";
$cocheRadio0="<input name=\"docVisible\" type=\"radio\" value=\"0\" />";
break;
default :
$cocheRadio1="<input name=\"docVisible\" type=\"radio\" value=\"1\" />";
$cocheRadio0="<input name=\"docVisible\" type=\"radio\" value=\"0\" />";
Les boutons radios vont être remplacés par le code php produit dans le switch
<label class="petitLabel">
<? echo $cocheRadio1; ?>page publiée
</label>
<label class="petitLabel">
<? echo $cocheRadio0; ?>page non publiée
</label>
Si les messages d'erreur n'ont pas été mis à jour c'est le moment.
ENT_COMPAT
Convertit les guillemets doubles, et ignore les guillemets simples.
ENT_QUOTES
Convertit les guillemets doubles et les guillemets simples.
ENT_NOQUOTES
Ignore les guillemets doubles et les guillemets simples.
Pour visualiser les modifications il faut que vous affichiez le code source de la
page.
$dlp = htmlentities($_POST['defLienPage'],ENT_QUOTES);
$thp =htmlentities($_POST['titreHtmPage'],ENT_QUOTES);
Il va aussi falloir vérifier qu'une page du même nom n'existe pas, qu'une page
ne porte pas le même lien ou même titre.
$defLienPage = $_POST['defLienPage'];
$titreHtmPage = $_POST['titreHtmPage'];
$lienPage = $_POST['lienPage'];
$docVisible = $_POST['docVisible'];
$afficheErrMssg ="";
function afficheErr($err,$errTxt){
if(!strlen($err)){
global $afficheErrMssg;
$afficheErrMssg .= " ".$errTxt." <br />";
}
}
function chercheExiste($dataExiste,$dataNew,$mssgDonnee){
if($dataExiste == $dataNew){
global $afficheErrMssg;
$afficheErrMssg .= " ".$mssgDonnee." <br />";
}
}
$mssgMail ="";
Nous allons aussi vérifier de nouveau si des caractères interdits existent dans le
nouveau nom du document à créer.
$tableau_chars = array(
"â","ä","à","é","è","ç","\"","'","ê","\\","/","!","?","ï","î","ô","ö","œ"
,"%","ù","#","&","(",")","*","$","€","§","ü","û","|","ñ","`","<",">","+",
"=","^","¨","°","£",",",";" );
$pos = strpos($lienPage,$valeur);
}
$afficheErrMssg .= $mssgErreurMail;
if($_POST['creaPage']){
$fetch_tabLiensNum = mysql_num_rows($req_tabLiens);
for($r=1;$r<=$fetch_tabLiensNum;$r++){
$fetch_tabLiens[$r] = mysql_fetch_row($req_tabLiens);
$lienPageExiste = $lienPage.".php";
chercheExiste($fetch_tabLiens[$r][1],$lienPageExiste,"Une page
<strong>$lienPageExiste</strong> existe déjà.");
chercheExiste($fetch_tabLiens[$r][2],$defLienPage,"Un lien
<strong>$defLienPage</strong> existe déjà.");
chercheExiste($fetch_tabLiens[$r][3],$titreHtmPage,"Un titre
<strong>$titreHtmPage</strong> existe déjà.");
if(!$afficheErrMssg){
}else{
echo $afficheErrMssg;
}
<body>
<div id="document">
Tout ce que nous allons devoir faire est d'insérer une nouvelle valeur à la
variable $numPage .
Le document à copier se trouve hors du dossier login, nous allons donc devoir
indiquer à PHP que le traitement se fera au niveau supérieur.
chdir('..');
$nbr_res = mysql_num_rows($newPageRec);
// donne le N° de la dernière la page auquel on ajoute 1
$nbr_PageBdd = $nbr_res+1;
//changement de dossier
chdir('..');
// on ouvre la copie
$fichierOuvert=fopen($fichierACopier,"r+");
//ferme le doc
fclose($fichierOuvert);
}else{
//on informe notre utilisateur...
$afficheErrMssg.="La copie a échoué, la page n'a pas étécréée";
echo $afficheErrMssg;
}
//les liens
$crea_lien = mysql_db_query(BASE," insert into `tabLiens` (
numLien,lien,defLien,titreHtm,chemin,docVisible) VALUES
(NULL,'$fichierACopier','$defLienPage','$titreHtmPage','','$docVisible')"
);
//les pages
$crea_page = mysql_db_query(BASE,"INSERT INTO `fictServBDD`.`tabPages`
(`num` ,`doc` ,`visible`)VALUES (NULL , '', '$docVisible');");
//on vide les champs pour ne pas les afficher dans les boites de texte
$defLienPage ="";
$titreHtmPage ="";
$lienPage ="";
$docVisible ="";