jacknikolson
Messages postés134Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention18 novembre 2012
-
11 nov. 2006 à 19:36
jacknikolson
Messages postés134Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention18 novembre 2012
-
13 nov. 2006 à 14:28
Salut,
je suis en train d'essayer de modifier un module (articles) d'un portail sur lequel je travaille. le but du jeu est d'ajouter la possibilité de modifier la position des articles dans la page qui les affiche.
Les articles sont rangés dans des catégories (ref) j'ai rajouté un champ 'position' dans la DB.
Je rencontre un problème quand je veux déplacer un article d'une catégorie à une autre:
Je dois reperer les positions des articles dans la catégorie d'arrivée et ajouter +1.
Ce qui se passe c'est que quand je re-poste mon article dans sa nouvelle catégorie, avec Firefox ça ajoute bien +1 mais avec IE ça rajoute +2
Voici la partie de mon code qui gère ça:
if ($faire = = 'edit')
{
$req_art = mysql_query('SELECT titre as titre, texte as texte, id as id, auteur as auteur, ref as ref, position as position, type as type FROM `articles_2` WHERE id="'.$id.'"');
$art = mysql_fetch_object($req_art) ;
$titre = stripslashes(htmlentities($art->titre));
$art->texte = stripslashes($art->texte);
echo '
<script type="text/javascript" src="bbcode.js"></script>
<script type="text/javascript">
function envoyer(formulaire)
{
if (formulaire.titreart.value=="")
{
alert("Veuillez indiquer un titre pour votre articles_2.");
formulaire.titreart.focus();
return false;
}
if (formulaire.texte.value=="")
{
alert("Veuillez indiquer un contenu pour votre articles_2.");
formulaire.texte.focus();
return false;
}
formulaire.submit();
}
</script>
<!--## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ Mes ajouts ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##-->
<!--## pour envoyer les valeurs de départ de ref et position et les comparer ##-->
id.'" />
ref.'" />
position.'" />
// Confirmation de la modification de l'articles_2
if ($faire == 'edit2')
{
$texte = addslashes($art->texte);
$titreart = addslashes($titreart);
## ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Mes ajouts ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ##
if (''.$_POST['ref_depart'].'' != ''.$_POST['ref'].'') {// si la ref n'est pas la même.
// je selectionne dans l'ancienne ref
$req_blocs=mysql_query('SELECT *
FROM `articles_2`
WHERE `id`="'.$_POST['id_depart'].'"');
$result_blocs = mysql_fetch_object($req_blocs) ;
$pos = $result_blocs->position ;
$ref = $result_blocs->ref ;
$req_blocs2=mysql_query("SELECT *
FROM `articles_2`
WHERE `articles_2`.`ref`=$ref
and `articles_2`.`position`>$pos
ORDER BY `articles_2`.`position` ASC");
// je selectionne dans la nouvelle ref
$req2=mysql_query("SELECT position
FROM `articles_2`
WHERE `articles_2`.`ref`=".$_POST['ref']."
ORDER BY position DESC");
// je mets à jour les infos dans la nouvelle catégorie ## probleme: actuellement ça me met +2 au lieu de +1.sous IE et pas sous FF.... ##
mysql_query('UPDATE `articles_2`
SET `titre`="'.$_POST['titreart'].'",
`ref`="'.$_POST['ref'].'",
`position`='.$new_pos.',
`type`="'.$_POST['type'].'",
`texte`="'.$_POST['texte'].'",
`attribut`="'.$_POST['smileys'].'",
`validation`="0"
WHERE id="'.$_POST['id'].'"');
// je comble le "trou" laissé dans l'ancienne catégorie par le déplacement.
while ($result2_blocs = mysql_fetch_object($req_blocs2)) {
$new_pos = $result2_blocs->position - 1 ;
mysql_query("UPDATE `articles_2`
SET `position`=$new_pos
WHERE `ref`=$result_blocs->ref
and `id`=$result2_blocs->id") ;// update en -1 de tous les articles
// dont la position était en dessous
// de l'article déplacé
// dans son ancienne catégorie.
}
}
if (''.$_POST['ref_depart'].'' == ''.$_POST['ref'].'') {// si la ref est la même.
$new_pos = ''.$_POST['position_depart'].'' ;
$req=reqmysql('UPDATE `articles_2`
SET `titre`="'.$_POST['titreart'].'",
`ref`="'.$_POST['ref'].'",
`position`='.$new_pos.',
`type`="'.$_POST['type'].'",
`texte`="'.$_POST['texte'].'",
`attribut`="'.$_POST['smileys'].'",
`validation`="0"
WHERE id="'.$_POST['id'].'"');
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 13 nov. 2006 à 12:57
Ca sent le problème de javascript à plein nez... Mais je n'arrive pas à
l'identifier... Regarde les champs modifiés en javascript, à mon avis
c'est là que se situe la boulette...
jacknikolson
Messages postés134Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention18 novembre 2012 13 nov. 2006 à 14:28
quand même bien étrange ça.....
Voici le fichier intégral au cas où...
(au fait, y a pas une option pour faire ressortir le code php dans le forum?)
<?php
$id = intval($_GET['id']);
// Ajout de la requete options pour la gestion du grade administrateur
$req_options = reqmysql('SELECT grade_admin as grade_admin FROM articles_2_options');
$option = mysql_fetch_object($req_options);
if ($grade >= $option->grade_admin)
{
# FIN DES MODIFICATIONS
bloc_head('Gestion des articles (module + administrable)');
// articles_2 EN ATTENTE DE VALIDATION
$req_art = reqmysql('
SELECT
articles_2.id as id,
articles_2.ref as ref,
articles_2.titre as titre,
articles_2.auteur as auteur,
articles_2.texte as texte,
articles_2.date as date,
articles_2_cat.titre as cat_titre,
articles_2_cat.id as cat_id
FROM articles_2
LEFT JOIN articles_2_cat
ON articles_2.ref=articles_2_cat.id
WHERE articles_2.validation="1"
ORDER BY articles_2.ref ASC, articles_2.date DESC
');
$nb_attente = mysql_num_rows($req_art);
echo'articles_2 en attente de validation :
';
// S'il n'y a aucun articles_2 disponible on informe l'admin
if ($nb_attente == 0)
{
echo '
Vous n’avez aucun articles_2 en attente de validation.
';
}
else
{
// Autrement on affiche tous les articles_2 en attente de validation
// LISTE DES articles_2 VALIDES
$req_art = reqmysql('
SELECT
articles_2.id as id,
articles_2.position as position,
articles_2.ref as ref,
articles_2.titre as titre,
articles_2.auteur as auteur,
articles_2.texte as texte,
articles_2.date as date,
articles_2_cat.titre as cat_titre,
articles_2_cat.id as cat_id
FROM articles_2
LEFT JOIN articles_2_cat
ON articles_2.ref=articles_2_cat.id
WHERE articles_2.validation="0"
ORDER BY articles_2.ref ASC, articles_2.position ASC
');
$nb_valide = mysql_num_rows($req_art);
echo'Liste des articles_2 :
';
// S'il n'y a aucun articles_2 disponible on informe l'admin
if ($nb_valide == 0)
{
echo '
Vous n’avez aucun articles_2 de validé.
';
}else{
// Autrement on affiche tous les articles_2 validés
## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ FIN Modif par VANGARDIS ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##
echo' position de l\'article:'.$art->position.'
</li>';
}
echo'';
}
close_table ();
echo '[login.php Retour ]
';
}
else
{
// GESTION DES articles_2
// Validation de l'articles_2
if ($faire == 'valid')
{
reqmysql('UPDATE articles_2 SET articles_2.validation="0" WHERE articles_2.id="'.intval($id).'"');
reqmysql('DELETE FROM `alerte` WHERE `module` ="articles_2" AND `date`="'.intval($_GET['date']).'"');
echo'
<center>
articles_2 validé.'.$art_attente->date.'
<form action="index.php">
</form>
</center>';
}
## ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Modif par VANGARDIS ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ##
//-->DELETE pour ne pas laisser de trou dans les positions
// il faut que je choppe la ref de l'article pour faire l'update uniquement dans cette ref
if ($faire == 'del'){
$req_blocs=mysql_query('SELECT * FROM `articles_2` WHERE `id`='.$id.'');
$result_blocs = mysql_fetch_object($req_blocs) ;
$pos = $result_blocs->position ;
$ref = $result_blocs->ref ;
mysql_query("DELETE FROM `articles_2` WHERE `id`=$id") ;
// Suppression de la table alerte si l'articles_2 n est pas validé
if ($art->validation ==1){reqmysql('DELETE FROM `alerte` WHERE `module` ="articles_2'.$id.'"');}
$req_blocs2=reqmysql("SELECT * FROM `articles_2` WHERE `articles_2`.`ref`=$ref and `articles_2`.`position`>$pos ORDER BY `articles_2`.`position` ASC");
while ($result2_blocs = mysql_fetch_object($req_blocs2)) {
$new_pos = $result2_blocs->position - 1 ;
mysql_query("UPDATE `articles_2` SET `position`=$new_pos WHERE `ref`=$result_blocs->ref and `id`=$result2_blocs->id") ;
}
Header("Location: index.php?mod=articles_2&ac=gestion");
}
## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ FIN Modif par VANGARDIS ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##
## ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Modif par VANGARDIS ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ##
## Rajout dans l'admin de flèches pour monter ou descendre une catégorie ##
//--> Fonction pour descendre
if ($faire == 'down'){
$req_blocs=mysql_query("SELECT * FROM `articles_2` WHERE `id`=$id");
$result_blocs = mysql_fetch_object($req_blocs) ;
$pos_down = $result_blocs->position ;
$id_down = $id ;
$pos_up = $pos_down + 1 ;
$req_blocs=mysql_query("SELECT * FROM `articles_2` WHERE `position`=$pos_up and `ref`=$result_blocs->ref");
$result_blocs = mysql_fetch_object($req_blocs) ;
$id_up = $result_blocs->id ;
mysql_query("UPDATE `articles_2` SET position=$pos_down WHERE `id`=$id_up") ;
mysql_query("UPDATE `articles_2` SET position=$pos_up WHERE `id`=$id_down") ;
//--> Fonction pour monter
if ($faire == 'up'){
$req_blocs=mysql_query("SELECT * FROM `articles_2` WHERE `id`=$id");
$result_blocs = mysql_fetch_object($req_blocs) ;
$pos_down = $result_blocs->position ;
$id_down = $id ;
$pos_up = $pos_down - 1 ;
$req_blocs=mysql_query("SELECT * FROM `articles_2` WHERE `position`=$pos_up and `ref`=$result_blocs->ref");
$result_blocs = mysql_fetch_object($req_blocs) ;
$id_up = $result_blocs->id ;
mysql_query("UPDATE `articles_2` SET position=$pos_down WHERE `id`=$id_up") ;
mysql_query("UPDATE `articles_2` SET position=$pos_up WHERE `id`=$id_down") ;
}
## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ FIN Modif par VANGARDIS ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##
// Edition de l'articles_2
if ($faire == 'edit')
{
$req_art = mysql_query('SELECT titre as titre, texte as texte, id as id, auteur as auteur, ref as ref, position as position, type as type FROM `articles_2` WHERE id="'.$id.'"');
$art = mysql_fetch_object($req_art) ;
$titre = stripslashes(htmlentities($art->titre));
$art->texte = stripslashes($art->texte);
echo '
<script type="text/javascript" src="bbcode.js"></script>
<script type="text/javascript">
function envoyer(formulaire)
{
if (formulaire.titreart.value=="")
{
alert("Veuillez indiquer un titre pour votre articles_2.");
formulaire.titreart.focus();
return false;
}
if (formulaire.texte.value=="")
{
alert("Veuillez indiquer un contenu pour votre articles_2.");
formulaire.texte.focus();
return false;
}
formulaire.submit();
}
</script>
<!--## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ Modif par VANGARDIS ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##-->
<!--## pour envoyer les valeurs de départ de ref et position et les comparer ##-->
id.'" />
ref.'" />
position.'" />
<!--## ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ Fin Modif par VANGARDIS ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ##-->
Titre : titre).'" />
Auteur : auteur.'" />
position:'.$art->position.'
Rubrique :
<select name="ref">';
$req_articles_2 = mysql_query('SELECT titre as titre, id as id, position as position FROM `articles_2_cat` ORDER BY `articles_2_cat`.`position` ASC');
// Confirmation de la modification de l'articles_2
if ($faire == 'edit2')
{
$texte = addslashes($art->texte);
$titreart = addslashes($titreart);
## ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Modif par VANGARDIS ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ##
if (''.$_POST['ref_depart'].'' != ''.$_POST['ref'].'') {// si la ref n'est pas la même.
// je selectionne dans l'ancienne ref
$req_blocs=mysql_query('SELECT *
FROM `articles_2`
WHERE `id`="'.$_POST['id_depart'].'"');
$result_blocs = mysql_fetch_object($req_blocs) ;
$pos = $result_blocs->position ;
$ref = $result_blocs->ref ;
$req_blocs2=mysql_query("SELECT *
FROM `articles_2`
WHERE `articles_2`.`ref`=$ref
and `articles_2`.`position`>$pos
ORDER BY `articles_2`.`position` ASC");
// je selectionne dans la nouvelle ref
$new_pos = '0';
$req2=mysql_query("SELECT position
FROM `articles_2`
WHERE `articles_2`.`ref`=".$_POST['ref']."
ORDER BY position DESC");
// je mets à jour les infos dans la nouvelle catégorie ## probleme: actuellement ça me met +2 au lieu de +1.sous IE et pas sous FF.... ##
mysql_query('UPDATE `articles_2`
SET `titre`="'.$_POST['titreart'].'",
`ref`="'.$_POST['ref'].'",
`position`='.$new_pos.',
`type`="'.$_POST['type'].'",
`texte`="'.$_POST['texte'].'",
`attribut`="'.$_POST['smileys'].'",
`validation`="0"
WHERE id="'.$_POST['id'].'"');
// je comble le "trou" laissé dans l'ancienne catégorie par le déplacement.
while ($result2_blocs = mysql_fetch_object($req_blocs2)) {
$new_pos = $result2_blocs->position - 1 ;
mysql_query("UPDATE `articles_2`
SET `position`=$new_pos
WHERE `ref`=$result_blocs->ref
and `id`=$result2_blocs->id") ;// update en -1 de tous les articles
// dont la position était en dessous
// de l'article déplacé
// dans son ancienne catégorie.
}
}
if (''.$_POST['ref_depart'].'' == ''.$_POST['ref'].'') {// si la ref est la même.
$new_pos = ''.$_POST['position_depart'].'' ;
$req=reqmysql('UPDATE `articles_2`
SET `titre`="'.$_POST['titreart'].'",
`ref`="'.$_POST['ref'].'",
`position`='.$new_pos.',
`type`="'.$_POST['type'].'",
`texte`="'.$_POST['texte'].'",
`attribut`="'.$_POST['smileys'].'",
`validation`="0"
WHERE id="'.$_POST['id'].'"');