changement parametres dans BD quand je refresh le navigateur

changement parametres dans BD quand je refresh le navigateur - PHP - Programmation

Marsh Posté le 09-12-2005 à 14:23:58    

An fait j'ai fait une requete qui m'affiche les news pour l'admin qu'il doit valider!
Celles  qui e sont pas valider ont un booleen a 0 et celle qui le devienne ont leur booleen qui passe a 1.
En effet sur cette page, il voit les news qui s'affiche et doit cocher si il valide, supprime.....
 
Le probleme, quand je fais F5 dans mon navigateur, la news passe à 1 toute seule et plus eaucune news ne s'affiche.

Reply

Marsh Posté le 09-12-2005 à 14:23:58   

Reply

Marsh Posté le 09-12-2005 à 14:30:21    

C'est qu'il y a un problème dans ton script [:spamafote]

Reply

Marsh Posté le 09-12-2005 à 14:35:29    

un probleme de syntaxe tout con, ou reellement une grosse erreur?
vous voulez voir un peu du code?

Reply

Marsh Posté le 09-12-2005 à 14:37:28    

Oh oui

Reply

Marsh Posté le 09-12-2005 à 14:45:02    

<center><font face="verdana"><h1><b> ACTUALITES A VALIDER</b></h1></font></center>
<br />
 
<?php
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('cisteme', $base);
 
$sql = 'SELECT idActualite, titreActualite, auteurActualite,dateActualite, contenuActualite, estValideeActualite FROM actualites  ORDER BY dateActualite DESC';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
$sql2= 'SELECT COUNT(idActualite) FROM actualites WHERE estValideeActualite=0';
$req3=mysql_query($sql2) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nombre_actualite_valide =  mysql_fetch_array($req3);
 if ($nombre_actualite_valide == 0)
  {
    echo 'Aucune actualite non validée dans la base....';
  }
 else
 {
       $req2 = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
       while ($data = mysql_fetch_array($req2))
       {
            if (($data['estValideeActualite']) == 0)
            {
                ?>
                <div id=actu>
             <table border="0" width="100%">
          <tr>
             <div id=titre><td width="70%">
                <?php
                $id=$data['idActualite'];
                echo  $data['titreActualite'],'<br/>';
                ?></td><td width="30%"><?php
          echo $data['dateActualite'],'<br/>';
                ?></td></tr><tr><td width="100%" align="left"><?
                echo $data['auteurActualite'],'<br/>';
                ?>
                </td></tr> </div></table> <br />
                <div id=text>
                <?php
                echo nl2br($data['contenuActualite']),'<br/>';
                ?>
                </div>
                <br/>
// LES NEWS NON VALIDEES SE SONT AFFICHEES
 
 
 
                <form name="serendipityEntry">
        <input align="left" type="button" name="valider" maxlength="50" size="80"  value="Valider"
                 onclick="<?php $sqlval = "UPDATE actualites SET estValideeActualite='1' WHERE idActualite='$id';";
                 $reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error()); ?>;document.forms[0].action='validerActualite.php'; document.forms[0].submit();"
     >
 
         <input align="right" type="button" name="supprimer" maxlength="50" size="80" value="Supprimer" onclick="<?php $sqlval = "DELETE FROM actualites WHERE idActualite='$id';";
                 $reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error()); ?>;document.forms[0].action='validerActualite.php'; document.forms[0].submit();">        <input align="right" type="button" name="editer" maxlength="50" size="80" value="Editer" onclick=" location='./modifieractu.php?id=<?php echo $data['idActualite'] ?>'">
        <input   align="right" type="button" name="retour" maxlength="50" size="80"  value="Retour à l expéditeur">
                 <br/><br/></form>
   
                </div>
                <br /> <?php
             }
         }
    }
 
DESOLE PR LE BORDEL DU CODE

Reply

Marsh Posté le 09-12-2005 à 14:47:06    

en meme temps donnez moi votre avis si les redirections une fois qu'on a cliqué sur un bouton, c bon! si c'est comme cca qu'il faut faire! j'ai trouavé ca cette aprem:
document.forms[0].action='validerActualite.php'; document.forms[0].submit();
 
MERCI...

Reply

Marsh Posté le 09-12-2005 à 14:47:52    

Pour préciser, je me suis au PHP y a juste une semaine, désolé, si les erreurs sont grossieres, mais il faut bien commencer un jour!
MERCI

Reply

Marsh Posté le 09-12-2005 à 15:31:36    

Code :
  1. <center><font face="verdana"><h1><b> ACTUALITES A VALIDER</b></h1></font></center>
  2. <br />
  3. <?php
  4. $base = mysql_connect ('localhost', 'root', '');
  5. mysql_select_db ('cisteme', $base);
  6. $sql = 'SELECT idActualite, titreActualite, auteurActualite,dateActualite, contenuActualite, estValideeActualite FROM actualites  ORDER BY dateActualite DESC';
  7. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  8. $sql2= 'SELECT COUNT(idActualite) FROM actualites WHERE estValideeActualite=0';
  9. $req3=mysql_query($sql2) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  10. $nombre_actualite_valide =  mysql_fetch_array($req3);
  11. if ($nombre_actualite_valide == 0)
  12.   {
  13.     echo 'Aucune actualite non validée dans la base....';
  14.   }
  15. else
  16. {
  17.        $req2 = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  18.        while ($data = mysql_fetch_array($req2))
  19.        {
  20.             if (($data['estValideeActualite']) == 0)
  21.             {
  22.                 ?>
  23.                 <div id=actu>
  24.              <table border="0" width="100%">
  25.           <tr>
  26.              <div id=titre><td width="70%">
  27.                 <?php
  28.                 $id=$data['idActualite'];
  29.                 echo  $data['titreActualite'],'<br/>';
  30.                 ?></td><td width="30%"><?php
  31.           echo $data['dateActualite'],'<br/>';
  32.                 ?></td></tr><tr><td width="100%" align="left"><?
  33.                 echo $data['auteurActualite'],'<br/>';
  34.                 ?>
  35.                 </td></tr> </div></table> <br />
  36.                 <div id=text>
  37.                 <?php
  38.                 echo nl2br($data['contenuActualite']),'<br/>';
  39.                 ?>
  40.                 </div>
  41.                 <br/>
  42. // LES NEWS NON VALIDEES SE SONT AFFICHEES
  43.                 <form name="serendipityEntry">
  44.         <input align="left" type="button" name="valider" maxlength="50" size="80"  value="Valider"
  45.                  onclick="<?php $sqlval = "UPDATE actualites SET estValideeActualite='1' WHERE idActualite='$id';";
  46.                  $reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error()); ?>;document.forms[0].action='validerActualite.php'; document.forms[0].submit();"
  47.      >
  48.          <input align="right" type="button" name="supprimer" maxlength="50" size="80" value="Supprimer" onclick="<?php $sqlval = "DELETE FROM actualites WHERE idActualite='$id';";
  49.                  $reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error()); ?>;document.forms[0].action='validerActualite.php'; document.forms[0].submit();">        <input align="right" type="button" name="editer" maxlength="50" size="80" value="Editer" onclick=" location='./modifieractu.php?id=<?php echo $data['idActualite'] ?>'">
  50.         <input   align="right" type="button" name="retour" maxlength="50" size="80"  value="Retour à l expéditeur">
  51.                  <br/><br/></form>
  52.  
  53.                 </div>
  54.                 <br /> <?php
  55.              }
  56.          }
  57.     }

Reply

Marsh Posté le 09-12-2005 à 15:36:24    

il faut déjà changer ca: ligne 11 -> 13
 

Code :
  1. $sql2= 'SELECT COUNT(idActualite) as nombre FROM actualites WHERE estValideeActualite=0';
  2. $req3=mysql_query($sql2) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  3. $ligne =  mysql_fetch_array($req3);
  4. $nombre_actualite_valide = $ligne['nombre'];

Reply

Marsh Posté le 09-12-2005 à 15:42:30    

tu fais

Code :
  1. if (($data['estValideeActualite']) == 0)


et arprès tu mets

Code :
  1. // LES NEWS NON VALIDEES SE SONT AFFICHEES


c'est un peu contradictoire (mais pas grave :p) ?
 
 
sinon, ton formulaire à l'air d'être dans ta boucle. C'est voulu ?
 
 
pourquoi fais-tu deux fois mysql_query($sql) ?
 
si tu veux ne sélectionner que les "non validés", rajoute la condition dans ta query plutot que de faire un test par après:
 

Code :
  1. $sql = 'SELECT idActualite, titreActualite, auteurActualite,dateActualite, contenuActualite FROM actualites WHERE estValideeActualite = 0 ORDER BY dateActualite DESC';


Message édité par art_dupond le 09-12-2005 à 15:43:32
Reply

Marsh Posté le 09-12-2005 à 15:42:30   

Reply

Marsh Posté le 12-12-2005 à 08:23:56    

En fait oui c'est fait expré que le formulaire est dans la boucle!
Le but c'est pour l'admin de voir afficher les news qui ont été postés et qui doivent etre validée pour apparaitre sur le site!
Donc sous chaque news, figure les boutons : valider, editer, supprimer et retour a l'envoyeur! (c'est pour ca que la news et les boutons sont dans la boucle)
Seulement comment doit on gerer ce genre de boutons!
comme un formulaire? avec la method POST?
ou gerer les boutons avec des fonctions?
J'essaye de cerner comment PHP fonctionne mais des fois j'avoue j'ai un peu de mal!
AIDEZ moi svp!

Reply

Marsh Posté le 12-12-2005 à 09:28:50    

ok, la flemme de voir à quoi il servait (le formulaire) :p
 
sinon je n'avais pas vu le '<?php ?>' dans le onclick...
dois y avoir un binz la dedans mais je dois y aller. Je regarderai mieux plus tard si personne ne l'a fait ;)

Reply

Marsh Posté le 12-12-2005 à 12:44:03    

Faut-il traiter les differentes news avec des boutons dans la boucle et avec des onclick="" ???
Ou faut-il utiliser la method post?
dites, moi car le onclick est un peu limité et on ne peut pas utiliser les headers!
merci

Reply

Marsh Posté le 12-12-2005 à 13:26:07    

alors le problème avec ca:
 

Code :
  1. onclick="<?php $sqlval = "UPDATE actualites SET estValideeActualite='1' WHERE idActualite='$id';";$reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error()); ?>;document.forms[0].action='validerActualite.php'; document.forms[0].submit();"


 
quand php (sur le serveur) voit ca, il se dit :  
 
1. j'envoie "...onclick" au navigateur
2. je vois "<?php" -> je dois interpréter, et il interprète donc

Code :
  1. $sqlval = "UPDATE actualites SET estValideeActualite='1' WHERE idActualite='$id';";$reqval = mysql_query($sqlval) or die('Erreur SQL !<br />'.$sqlval.'<br />'.mysql_error());


3. je vois "?>", j'arrête d'interpréter.
4. j'envoie le reste au navigateur.
 
au final, ca donne un truc du genre...
 

Code :
  1. onclick=";document.forms[0].action='validerActualite.php'; document.forms[0].submit();"


 
donc ca ne fait pas ce que tu veux puisque le SQL va être effectué de toute facon (et pas lors du onclick), et le onclick ne contient pas cet "ordre sql".
 
 
Ce que je ferais par exemple:  
 
Un grand formulaire avec pour chaque ligne un nom différent (par exemple: actu_1, actu_2 (-> actu_1_id, actu_1_effacer, actu_1_modifier, ...)) avec un champ hidden avec le nombre d'actus (nombre_actus).  
 
 
lors du submit du formulaire, je récupère tout ca, et je fais  
 

Code :
  1. for($i = 1; $i <= $_POST['nombre_actus']; ++$i)
  2. {
  3.    if($_POST['actu_'.$i.'_effacer'])
  4.    {
  5.        echo 'effacer';  // ici, faire l'action sql adéquate
  6.    }
  7.    elseif($_POST['actu_'.$i.'_modifier'])
  8.    {
  9.       echo 'modifier'; // ici, faire l'action sql adéquate
  10.    }
  11.    else
  12.    {
  13.    }
  14. }


 
 
 
 

Reply

Marsh Posté le 12-12-2005 à 17:01:25    

En fait, si je comprends bien, il faut que je fasse apparaitre mes 4 boutons aprés chaques news dans une boucle, et chaque bouton serait renommé en prenant compte du compteur:
 
a la premiere news: bouton_val_1   bouton_suppr_1 .....
 
a la news suivante: bouton_val_2   bouton_suppr_2 .....
 
aprés les boutons sont tous de type submit et selon le debut du nom, j'applique l'operation a faire en prenant soin de recuperer l'id qui se trouve a la fin du nom du bouton pour affecter que la news voulue.
 
(Sur l'exemple

Code :
  1. 1. for($i = 1; $i <= $_POST['nombre_actus']; ++$i)
  2.    2. {
  3.    3.    if($_POST['actu_'.$i.'_effacer'])
  4.    4.    {
  5.    5.        echo 'effacer';  // ici, faire l'action sql adéquate
  6.    6.    }
  7.    7.    elseif($_POST['actu_'.$i.'_modifier'])
  8.    8.    {
  9.    9.       echo 'modifier'; // ici, faire l'action sql adéquate
  10.   10.    }
  11.   11.    else
  12.   12.    {
  13.   13.
  14.   14.    }
  15.   15.
  16.   16. }


 
en fait, la variable $i me servira dans ma requete a detecter l'identifiant de la news a modifier. c'est bien ca?
 

Citation :

champ hidden avec le nombre d'actus (nombre_actus)


je comprend pas bien ce que tu veux dire:  mon nombre d'actus je peux faire comme avant, je peux garder ma variable php et m'en servir dans la boucle?
 
Dites moi bien si j'ai bien compris le systeme!
Si c'est ce qu'il y a de plus optimisé, alors je vais faire comme ca.
MERCI

Reply

Marsh Posté le 13-12-2005 à 12:03:40    

oups, je n'avais pas vu que c'étaient des boutons.
 
alors pour faire simple, tu peux faire (pour chaque actu):
 
 

Code :
  1. <form method="post" action="validation.php">
  2.    <p>
  3.       Actu numéro idActu:
  4.       <input type="hidden" name="idActu" value="la_valeur_idActu"/>
  5.       <input type="submit" value="valider" name="valider"/>
  6.       <input type="submit" value="supprimer" name="supprimer"/>
  7.    </p>
  8. </form>


 
 
et dans validation.php:
 

Code :
  1. if($_POST['valider'])
  2. {
  3.    // sql pour valider la news avec $_POST['idActu'];
  4. }
  5. elseif($_POST['supprimer'])
  6. {
  7.    // sql pour supprimer la news avec $_POST['idActu'];
  8. }
  9. header('location: la_page_ou_tu_veux_etre_redirigé');


 
 
 
moi je voyais en fait un grand formulaire avec des boutons radios  
 

  • on verra plus tard <input type="radio" name="actuTemporaire_1" value=""/>
  • valider <input type="radio" name="actuTemporaire_1" value="valider_idActu"/>
  • supprimer <input type="radio" name="actuTemporaire_1" value="supprimer_idActu"/>


pour chaque actu
 
 
et ceci à la fin du formulaire (tu mets la valeur de ton compteur dedans)
<input type="hidden" name="nombreActus" value="le_nombre_d_actus"/>
 
 
Comme ca, tu peux valider/effacer plusieurs actus en meme temps.  
 
ensuite:
 

Code :
  1. for($i = 1; $i <= $_POST['nombre_actus']; ++$i)
  2. {
  3.    $temp = split('_',$_POST['actuTemporaire_'.$i]);
  4.    $action = $temp[0];
  5.    $idActu = $temp[1];
  6.    switch($action)
  7.    {
  8.       case 'valider':
  9.           // valider l'actu
  10.           break;
  11.       case 'supprimer':
  12.           // supprimer l'actu
  13.           break;
  14.    }
  15.  
  16.    header('location: la_page_ou_tu_veux_etre_redirigé');
  17. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed