conditions non réspecté dans module gestion liens

ceostar
Invité n'ayant pas de compte PHPfrance

02 mars 2007, 01:22

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 : Tout sélectionner

RewriteRule ^administration-([0-9]+)-([a-z]+)-([0-9]+)\.html$ administration.php?rubrique=administration&numero=$1&mode=$2&idliens=$3 [L]
J'ai lus relus et même réecris plusieurs fois ce module...
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
<?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
<?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
<?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
<?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
<?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");
?> 
Voilà, j'éspère être assez explicite sur mon problême,
et vous donné suffisament de renseignements pour que vous puissiez
me cultivez sur mon erreur.

merci d'avance pour votre temps. :lol:

ceostar **
Invité n'ayant pas de compte PHPfrance

02 mars 2007, 12:33

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mars 2007, 14:07

et quelle est cette erreur ?
Au cas ou quelqu'un lise ce thread et qu'il ne reste pas frustré ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 656 Messages

03 mars 2007, 11:26

if ( isSet($_GET['mode']))
Je ne suis pas certain que PHP soit CI.. :?