Bonsoir à vous,
j'essaie tant bien que mal d'écrire un module de gestion de liens en php5,
pour ce faire je me suis inspiré d'un module de gestion décrit dans le livre de Philippe Rigaux mysql et php 3eme édition (chapitre3, mise à jour ... par formulaire)
mon probleme:
visible à cette url:
http://www.cae2louerre.com/administration-1.html
le script fonctionne pour l'affichage des blocks présentant les liens, mais lorsque je clic sur modifier, validé, devalidé ou ajouté évidemment rien ne se passe sauf le retour à l'affichage, je pense que cela vient des conditions et plus précisement du mode passé en GET.
j'utilise l'url rewriting en htaccess de ce type:
Code:
J'ai lus relus et même réecris plusieurs fois ce module...
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule ^administration-([0-9]+)-([a-z]+)-([0-9]+)\.html$ administration.php?rubrique=administration&numero=$1&mode=$2&idliens=$3 [L]
et je vois vraiment pas!!
mon environnement:
PHP Version 5.1.6
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
mes codes:
ModeMaj.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php // les constantes pour le mode define ("MODE_DEFAUT", "defaut"); define ("MODE_INSERTION", "insertion"); define ("MODE_MAJ", "maj"); define ("MODE_VALIDATION", "valide"); define ("MODE_DEVALIDATION", "dvalid"); define ("MODE_SUPPRESSION", "delete"); ?>
MAJLienSimple.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php // fonction de mise à jour ou d'insertion dans la table liens function MAJLienSimple ($mode, $lien, $connexion) { $id = $lien['id']; $nom = htmlentities(addslashes($lien['nom'])); $contenu = htmlentities(addslashes($lien['contenu'])); $url = addslashes($lien['url']); $idUser = $lien['idUser']; if ($mode == MODE_INSERTION) $requete = "INSERT INTO liens (id, nom, contenu, url, timestamp, idUser, valide)" ."VALUES ('', '$nom', '$contenu', '$url', 'time()', '$login','')"; elseif ($mode == MODE_VALIDATION) $requete = "UPDATE liens SET valide=1" ."WHERE id='$id'"; elseif ($mode == MODE_DEVALIDATION) $requete = "UPDATE liens SET valide=0" ."WHERE id='$id'"; elseif ($mode == MODE_SUPRESSION) $requete = "DELETE FROM liens" ."WHERE id='$id'"; else $requete = "UPDATE liens SET nom='$nom', contenu='$contenu', url='$url'" ."WHERE id='$id'"; //Exécution de l'ordre SQL ExecRequete ($requete, $connexion); }// fin de la fonction ?>
AffichageLiens.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <?php // Affichage sous blocks Xhtml des Liens Zone Admin function AffichageLiens($connexion) { $resultats = ExecRequete ("SELECT * FROM liens", $connexion); echo"<div id=\"admin_montreliens\"><p>Tous les liens enregistrés dans votre base de données sont ici.</p>" ."<p>vous pouvez les modifier, les valider/dévalider ou les supprimer.</p>"; while ($lien = ObjetSuivant ($resultats)) { echo "<div class=\"blockliens_admin\" title=\"Présentation de la fiche $lien->nom\">" ."<h2><span>Identifiant BD: <strong>$lien->id</strong></span>$lien->nom</h2>\n<p>"; $texte = $lien->contenu; parseceostarcode($texte); echo "</p>\n<p><span class=\"url\">Url:</span>" ."<span class=\"link_url\"><a class=\"liens_url_admin\" href=\"$lien->url\" title=\"$lien->url\">$lien->url</a></span></p>\n" ."<h3> <span class=\"creepar_link_admin\">Crée par: <strong>$lien->idUser</strong> <strong>"; $date = $lien->timestamp; dateJMAHM($date); echo"</strong></span><span>Etat: <strong class=\"etat_liens_admin\">"; if ($lien->valide == '1') { echo "Validé <img alt=\"Validé\" src=\"design/imgsadmin/btn_valid.gif\" />"; } else { echo "Dévalidé <img alt=\"Dévalidé\" src=\"design/imgsadmin/btn_devalid.gif\" />"; } echo "</strong></span></h3><div class=\"action_admin\" title=\"Action possible sur cette fiche\"><h4>Action:</h4>\n<ul><li>"; if ($lien->valide == '1') { echo "<a class=\"deval_link_admin\" href=\"administration-1-". MODE_DEVALIDATION ."-$lien->id.html\" title=\"dévalider\"><span>dévalider</span></a>"; } else { echo "<a class=\"val_link_admin\" href=\"administration-1-". MODE_VALIDATION ."-$lien->id.html\" title=\"valider\"><span>valider</span></a>"; } echo "</li><li><a class=\"modif_link_admin\" href=\"administration-1-". MODE_MAJ . "-$lien->id.html\" title=\"modifier\"><span>modifier</span></a></li>\n" ."<li><a class=\"delete_link_admin\" href=\"administration-1-". MODE_SUPPRESSION ."-$lien->id.html\" title=\"supprimer\"><span>supprimer</span></a></li>\n" ."<li><a href=\"administration-1-". MODE_INSERTION ."-0.html\" title=\"new-link\">new-link</a></li></ul></div></div>"; } } ?>
LienSimple.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 <?php require_once ("UtilLienSimple.php"); // Normalisation des entrées Normalisation(); // tableau "vide" utilisé comme valeur par défaut pour les insertions $NULL_LIEN = array("id" => "", "nom" => "", "contenu" => "", "url" => "", "timestamp" => "", "idUser" => "", "valide" => "0"); $connexion = Connexion (NOM, PASSE, BASE, SERVEUR); if ( !isset($_POST['action']) and !isset($_GET['mode'])) { // L'execution n'est pas lancée par le formulaire ou par une ancre créee dans le block des liens // Donc on affiche le block des liens AffichageLiens($connexion); } else { // Traitement des actions utilisateur recueillis par l'application if ( isSet($_GET['mode'])) { // L'utilisateur a cliqué l'une des ancres permettant de modifier ou d'ajouter un lien if ($_GET['mode'] == MODE_MAJ) { // On récupére les données du lien à modifier // Et on affiche le formulaire pré-remplis $id = ($_GET['idliens']); $requete = "SELECT * FROM liens WHERE id='$id'"; $resultat = ExecRequete ($requete, $connexion); $lien = LigneSuivante ($resultat); FormLienSimple (MODE_MAJ, $lien); } else if ($_GET['mode'] == MODE_INSERTION) { // on affiche le formulaire de saisie vierge FormLienSimple (MODE_INSERTION, $NULL_LIEN); } } else if (isSet($_POST['action'])) { // L'utilisateur à saisi des données dans le formulaire // pour modifier ou insérer un lien, puis à cliqué sur Enregistrer // Contrôle de saisie, mise à jour de la table et on affiche le // block actualisé des liens // contrôle des données if (ControleLien ($_POST)) { MAJLienSimple ($_POST['mode'], $_POST, $connexion); AffichageLiens ($connexion); } } echo "test"; } ?>
UtilLienSimple.php
Voilà, j'éspère être assez explicite sur mon problême,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php require_once ("Normalisation.php"); require_once ("UtilBD.php"); require_once ("ModeMaj.php"); require_once ("AffichageLiens.php"); require_once ("MAJLienSimple.php"); require_once ("FormLienSimple.php"); require_once ("DateJMAHM.php"); require_once ("ParserCeostar.php"); ?>
et vous donné suffisament de renseignements pour que vous puissiez
me cultivez sur mon erreur.
merci d'avance pour votre temps.
Partager