script d'edition du contenu

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script d'edition du contenu

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 17:25

merci beaucoup, la ça passe son problème, il y'a juste le update qui ne fonctionne pas, mais je vais essayer de le resoudre.
encore une fois merci beacoup.

Re: script d'edition du contenu

par Thibaud C » 17 févr. 2012, 17:19

Non testé, mais j'ai corrigé les incohérences totales, à toi de voir si il reste des erreurs, mais déja tu devrais t'en sortir un peu mieux
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Gestion des onglets du site</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <script src="tinymce/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
        <script type="text/javascript">
tinyMCE.init({
        theme : "advanced",
        mode : "textareas",
        plugins : "pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_buttons1 :"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,insertdate,inserttime,preview,|,forecolor,backcolor,|,help,code,",
        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen,visualchars,",
});
    </script>
    </head>
      <body>
   
        
        <?php
        require "config.php";
        mysql_connect($adresse, $nom, $motdepasse);
        mysql_select_db($database);
        if(!isset($_GET['action']) || $_GET['action']!='edit')
        {
            $sql = 'SELECT * FROM onglets';
            $req = mysql_query($sql) or die("Balise 1".mysql_error());
            echo '<TABLE BORDER="1">
                    <CAPTION> la liste des Onglets du site</CAPTION>
                    <TR>
                      <TH> nom d\'onglet  </TH>
                      <TH> editer</TH>
                    </TR>';
            while($data = mysql_fetch_assoc($req))
            {
              echo '<TR>
                       <td>'.$data['nom'].'</td>
                       <td><a href="gest_onglet.php?action=editer&id='.$data['id'].'"><img src="edit.png" alt="editer" align="middle" border="0"></a></td></TR>';
            }
            echo '</TABLE>';

            $id = intval(htmlentities($_GET['id']));
            if(isset($_POST['nom']) && isset($_POST['contenu']))
            {
              $nom = addslashes(htmlentities($_POST['nom']));
              $contenu = addslashes($_POST['contenu']);
              $sql = 'UPDATE onglets SET nom="'.$nom.'", contenu="'.$contenu.'" WHERE id='.$id.'';
              $req = mysql_query($sql) or die("Balise 2".mysql_error());
              echo 'Votre onglet a bien été modifié';
            }               
                                
        }
        else
        {
            $sql = 'SELECT * FROM onglets WHERE id='.$_GET['id'].'';
            $req = $req = mysql_query($sql) or die("Balise 3".mysql_error());
            $data = mysql_fetch_assoc($req);
            ?>
            <form method="post" action="gest_onglet.php?action=editer&id=<?php echo $data['id'];?>">

            Titre : <br/><input type="text" name="le nom d'onglet" value="<?php echo $data['nom'];?>"/><br/>
            Contenu :<br/><textarea name="contenu" class="mceEditor"><?php echo $data['contenu'];?></textarea><br/>
            <input type="submit" value="envoyer"/>
            </form>

            <?php
        }
        mysql_close();
?>
     
    <br/><br/>
   </body>
</html>

( ps : l'indentation ca se travaille, une fois que j'avais réindenter ton code, j'ai mis 2 secondes a voir les endroits ou ca n'allait pas )

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 17:04

ok
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Gestion des onglets du site</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <script src="tinymce/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
	<script type="text/javascript">
tinyMCE.init({
	theme : "advanced",
	mode : "textareas",
	plugins : "pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_buttons1 :"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,insertdate,inserttime,preview,|,forecolor,backcolor,|,help,code,",
	theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen,visualchars,",
});
</script>
</head>
   <body>
   <TABLE BORDER="1">
  <CAPTION> la liste des Onglets du site</CAPTION>
  <TR>
 <TH> nom d'onglet  </TH>
 <TH> editer</TH>
  </TR>
	
	<?php
	require "config.php";
	mysql_connect($adresse, $nom, $motdepasse);
	mysql_select_db($database);
	$sql = 'SELECT * FROM onglets';
	$req = mysql_query($sql) or die("Balise 1".mysql_error());
	while($data = mysql_fetch_assoc($req))
	    {echo '<TR>
			
			<td>'.$data['nom'].'</td>
			<td><a href="gest_onglet.php?action=editer&id='.$data['id'].'"><img src="edit.png" alt="editer" align="middle" border="0"></a></td></TR>';
		}
		if(isset($_GET['id']))
		{
		  $id = intval(htmlentities($_GET['id']));
	         if(isset($_POST['nom']) AND isset($_POST['contenu']))
			   {
			
				extract($_POST);
				$nom = addslashes(htmlentities($nom));
				$contenu = addslashes($contenu);
				
			$sql = 'UPDATE onglets SET nom="'.$nom.'", contenu="'.$contenu.'" WHERE id='.$id.'';
			$req = mysql_query($sql) or die("Balise 2".mysql_error());
				
				echo 'Ok, <a href="gest_onglet.php">cliquez ici</a> pour revenir';
				
				}		
				
	
	else
			{
	

					
				$sql = 'SELECT * FROM onglets WHERE id='.$id.'';
				$req = $req = mysql_query($sql) or die("Balise 3".mysql_error());
				$data = mysql_fetch_assoc($req);
					
				?>
				<form method="post" action="gest_onglet.php?action=editer&id=<?php echo $data['id'];?>">
					
				Titre : <br/><input type="text" name="le nom d'onglet" value="<?php echo $data['nom'];?>"/><br/>
				Contenu :<br/><textarea name="contenu" class="mceEditor"><?php echo $data['contenu'];?></textarea><br/>
				<input type="submit" value="envoyer"/>
				</form>
					
				<?php
			
			}
		}
			
    
			
		
			
		mysql_close();
?>
	</TABLE>
<br/><br/>
   </body>
</html>

Re: script d'edition du contenu

par Thibaud C » 17 févr. 2012, 17:01

peux tu remettre le code entier après les récentes modifications s'il te plait ?

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 16:57

le $-post n'a rien changé non plus, pourtant dans le code je ne vois pas quelque chose qui peut boleur ça, méme le update ne marche pas, c'est bizzare.

Re: script d'edition du contenu

par xTG » 17 févr. 2012, 16:21

C'était un exemple qu'il te donnait...
Un peu de réflexion ne fait pas de mal de temps à autre tu sais. ;)

Là tu utilises dans tes deux traitements $_GET['id'], car tu as une requête d'update dans le premier et une requête SELECT dans le second.
Donc on ne peut pas travailler sur un isSet($_GET['id']).
Utilises plutôt empty($_POST) => littéralement "ais-je posté mon formulaire".

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 16:16

je vien de le faire on modifiant mon code, avec l'algo que vous m'aviez donnez
if(isset($_GET['id']))
		{
		  $id = intval(htmlentities($_GET['id']));
	         if(isset($_POST['nom']) AND isset($_POST['contenu'])){
			
				extract($_POST);
				$nom = addslashes(htmlentities($nom));
				$contenu = addslashes($contenu);
				
			$sql = 'UPDATE onglets SET nom="'.$nom.'", contenu="'.$contenu.'" WHERE id='.$id.'';
			$req = mysql_query($sql) or die("Balise 2".mysql_error());
				
				echo 'Ok, <a href="gest_onglet.php">cliquez ici</a> pour revenir';
				
				}
		}		
				
	
	else
			{

					
				$sql = 'SELECT * FROM onglets WHERE id='.$id.'';
				$req = $req = mysql_query($sql) or die("Balise 3".mysql_error());
				$data = mysql_fetch_assoc($req);
					
				?>
				<form method="post" action="gest_onglet.php?action=editer&id=<?php echo $data['id'];?>">
					
				Titre : <br/><input type="text" name="le nom d'onglet" value="<?php echo $data['nom'];?>"/><br/>
				Contenu :<br/><textarea name="contenu" class="mceEditor"><?php echo $data['contenu'];?></textarea><br/>
				<input type="submit" value="envoyer"/>
				</form>
					
				<?php
			
			}
			
    
			
		
			
		mysql_close();
?>
et la il me dit
Balise 3You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
il aime pas la requette $sql = 'SELECT * FROM onglets WHERE id='.$id.'';

Re: script d'edition du contenu

par Thibaud C » 17 févr. 2012, 16:04

Ben trouves une condition pour afficher la liste d'onglet, et sinon tu affiches la modification

par exemple :
( en algo )

si($_GET['id'] n'existe pas)
{
j'affiche ma liste d'onglet
}
sinon
{
j'affiche mon édition
}

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 15:59

c'est bin j'ai résolu partiellement mon probléme
j'ai plus l'erreur
j'ai rajouter
if(isset($_GET['id']))
et ça marche.
par contre il m'affiche toput dans la méme page, c'est a dire le text area, et le tableau qui liste mes onglets.
mon but était de lister dans un premier temps que le tableau, et une fois je click sur editer c'est la que la page avec le textarea icluant le tinymce apprait

Re: script d'edition du contenu

par xTG » 17 févr. 2012, 15:49

Bah oui $id est vide... C'est $_GET['id'] qui contient la valeur.
A priori tu utilises des fonctions sans savoir ce que cela fait.
extract($_POST) va te transformer $_POST['nom'] en $nom.
Je te recommande vivement d'utiliser $_POST et non extract() car c'est une très belle faille de sécurité.
Tout index transmis dans $_POST sera transformé en variable...

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 15:45

$id est vide??
je t'avoue que je n'est pas bien compris
je suis vraiment un novice en php :D

Re: script d'edition du contenu

par Thibaud C » 17 févr. 2012, 15:39

Ceci n'est pas une solution a ton problème seulement une technique pour repérer l'erreur.
Je sais très bien d'ou viens ton erreur, mais ca aurait été mieux que tu la trouves avec un coup de patte ;).

-> ta variable $id est vide au moment de ta requête

Re: script d'edition du contenu

par sidomed » 17 févr. 2012, 15:37

merci pour votre réponse.
ça ne change rien, toujours le même soucis

Re: script d'edition du contenu

par Thibaud C » 17 févr. 2012, 15:30

$sql = 'UPDATE onglets SET nom="'.$nom.'", contenu="'.$contenu.'" WHERE id='.$id.'';
echo $sql; // rajoute cette ligne et test la requête qu'il te sors directement dans ton SGBD
$req = mysql_query($sql) or die(mysql_error());
enfin fais ça pour la requête qui ne marche pas :) (je pense que c'est celle ci)

script d'edition du contenu

par sidomed » 17 févr. 2012, 15:24

bonjour,
je suis entrain de réaliser un script qui permet d'éditer le contenue de chaque onglet du site web, et pour ceci j'ai créer une bas de donnée dont le code est
CREATE TABLE IF NOT EXISTS `onglets` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `nom` varchar(60) NOT NULL,
  `contenu` mediumtext NOT NULL,
  PRIMARY KEY (`id`)
)  ;
et ensuite j'ai réalisé un script pour l'édition du contenue, voici mon code
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Gestion des onglets du site</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <script src="tinymce/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
	<script type="text/javascript">
tinyMCE.init({
	theme : "advanced",
	mode : "textareas",
	plugins : "pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_buttons1 :"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,insertdate,inserttime,preview,|,forecolor,backcolor,|,help,code,",
	theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen,visualchars,",
});
</script>
</head>
   <body>
   <TABLE BORDER="1">
  <CAPTION> la liste des Onglets du site</CAPTION>
  <TR>
 <TH> nom d'onglet  </TH>
 <TH> editer</TH>
  </TR>
	
	<?php
	require "config.php";
	mysql_connect($adresse, $nom, $motdepasse);
	mysql_select_db($database);
	$sql = 'SELECT * FROM onglets';
	$req = mysql_query($sql) or die(mysql_error());
	while($data = mysql_fetch_assoc($req)){echo '<TR>
			
			<td>'.$data['nom'].'</td>
			<td><a href="gest_onglet.php?action=editer&id='.$data['id'].'"><img src="edit.png" alt="editer" align="middle" border="0"></a></td></TR>';
		}
	if(isset($_POST['nom']) AND isset($_POST['contenu'])){
			
				extract($_POST);
				$nom = addslashes(htmlentities($nom));
				$contenu = addslashes($contenu);
				
				$sql = 'UPDATE onglets SET nom="'.$nom.'", contenu="'.$contenu.'" WHERE id='.$id.'';
				$req = mysql_query($sql) or die(mysql_error());
				
				echo 'Ok, <a href="gest_onglet.php">cliquez ici</a> pour revenir';
				
				}
	
	else
			{

					
				$sql = 'SELECT * FROM onglets WHERE id='.$id.'';
				$req = mysql_query($sql) or die(mysql_error());
				$data = mysql_fetch_assoc($req);
					
				?>
				<form method="post" action="gest_onglet.php?action=editer&id=<?php echo $data['id'];?>">
					
				Titre : <br/><input type="text" name="le nom d'onglet" value="<?php echo $data['nom'];?>"/><br/>
				Contenu :<br/><textarea name="contenu" class="mceEditor"><?php echo $data['contenu'];?></textarea><br/>
				<input type="submit" value="envoyer"/>
				</form>
					
				<?php
			
			}
		
			
		mysql_close();
?>
	</TABLE>
<br/><br/>
   </body>
</html>
et ça ne marche pas, ça me liste bien les enregistrement de ma base, mais quand je clik sur editer il n'ya rien qui se passe
de plus ça m'affiche ce message
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
et je n'arrive pas à trouver cette erreur.

merci d'avance pour votre aide.