diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
index 6897a4665c8078df81a10c4b4a346e4917b13a85..34ae663bb30f96aa468371ad4ae152913b7786c1 100644
--- a/ecrire/action/editer_article.php
+++ b/ecrire/action/editer_article.php
@@ -86,21 +86,22 @@ function revisions_articles ($id_article, $id_rubrique, $new) {
 {
 	global $flag_revisions, $champs_extra;
 
-	$id_auteur =  _request('id_auteur');
-	$texte = trop_longs_articles(_request('texte_plus')) . _request('texte');
-	if (!strlen($titre_article=corriger_caracteres(_request('titre'))))
-		$titre_article = _T('info_sans_titre');
-
-	$champs = array(
-		'surtitre' => corriger_caracteres(_request('surtitre')),
-		'titre' => $titre_article,
-		'soustitre' => corriger_caracteres(_request('soustitre')),
-		'descriptif' => corriger_caracteres(_request('descriptif')),
-		'nom_site' => corriger_caracteres(_request('nom_site')),
-		'url_site' => corriger_caracteres(_request('url_site')),
-		'chapo' => corriger_caracteres( _request('chapo')),
-		'texte' => corriger_caracteres($texte),
-		'ps' => corriger_caracteres(_request('ps')))  ;
+	$id_auteur = _request('id_auteur');
+
+	// unifier $texte en cas de texte trop long
+	trop_longs_articles();
+
+	// ne pas accepter de titre vide
+	if (_request('titre') === '')
+		$_POST['titre'] = _T('ecrire:info_sans_titre');
+
+	foreach (array(
+	'surtitre', 'titre', 'soustitre', 'descriptif',
+	'nom_site', 'url_site', 'chapo', 'texte', 'ps') as $champ) {
+		if (($val = _request($champ)) !== NULL) {
+			$champs[$champ] = corriger_caracteres($val);
+		}
+	}
 
 	// Stockage des versions : creer une premier version si non-existante
 	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
@@ -125,7 +126,11 @@ function revisions_articles ($id_article, $id_rubrique, $new) {
 		$champs_extra = extra_recup_saisie("articles", _request('id_secteur'));
 	}
 
-	spip_query("UPDATE spip_articles SET id_rubrique=$id_rubrique, surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article");
+	$update = '';
+	foreach ($champs as $champ => $val)
+		$update .= $champ . '=' . spip_abstract_quote($val).', ';
+
+	spip_query("UPDATE spip_articles SET id_rubrique=$id_rubrique, $update date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article");
 
 	// Stockage des versions
 	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
@@ -166,14 +171,14 @@ function revisions_articles ($id_article, $id_rubrique, $new) {
 //
 
 // http://doc.spip.org/@trop_longs_articles
-function trop_longs_articles($texte_plus)
-{
-	$nb_texte = 0;
-	while ($nb_texte ++ < count($texte_plus)+1){
-		$texte_ajout .= ereg_replace("<!--SPIP-->[\n\r]*","",
-					     $texte_plus[$nb_texte]);
+function trop_longs_articles() {
+#	print_r($_POST);exit;
+	if (isset($_POST['texte_plus']) && is_array($_POST['texte_plus'])) {
+		foreach ($_POST['texte_plus'] as $t) {
+			$_POST['texte'] = preg_replace(",<!--SPIP-->[\n\r]*,","", $t)
+				. $_POST['texte'];
+		}
 	}
-	return $texte_ajout;
 }
 
 // Poser un lien de traduction vers un article de reference
diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php
index 35af441190fe255ed1612dca0a0ed4df38e2d23b..f4dd9c99344885576759f628050b2bda8e9dcbe6 100644
--- a/ecrire/exec/articles_edit.php
+++ b/ecrire/exec/articles_edit.php
@@ -190,7 +190,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 		$onfocus .
 		" />\n<P>" .
 
-		(($articles_soustitre OR $soustitre) ?
+		(($articles_soustitre OR strlen($soustitre)) ?
 		 ("<b>" .
 		  _T('texte_sous_titre') .
 		  "</b>" .
@@ -198,7 +198,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 		  "\n<br /><input type='text' name='soustitre' class='forml' value=\"" .
 		  $soustitre .
 		  "\" size='40' /><br /><br />\n") :
-		 ("\n<input type='hidden' name='soustitre' value=\"$soustitre\" />")) .
+		 '') .
 
 		debut_cadre_couleur($logo, true, "", _T('titre_cadre_interieur_rubrique'). aide("artrub")) .
 
@@ -208,14 +208,14 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 	
 		($new ? '' : "\n<input type='hidden' name='id_rubrique_old' value='$id_rubrique'>") .
 
-		((($options == "avancees" AND $articles_descriptif) OR $descriptif)?
+		((($options == "avancees" AND $articles_descriptif) OR strlen($descriptif))?
 		 ("\n<P><B>" ._T('texte_descriptif_rapide') ."</B>" .
 		  aide ("artdesc") .
 		  "</p>\n<br />" ._T('texte_contenu_article') ."<br />\n" .
 		  "<textarea name='descriptif' class='forml' rows='2' cols='40' wrap=soft>" .
 		  $descriptif .
 		  "</textarea>\n") :
-		 ("<input type='hidden' name='descriptif' value=\"$descriptif\" />")) .
+		 '') .
 
 		((($options == "avancees" AND $articles_urlref) OR $nom_site OR $url_site) ?
 		 (_T('entree_liens_sites') ."<br />\n" .
@@ -234,9 +234,9 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 		($spip_display==4 ? '' : afficher_barre('document.formulaire.texte')) .
 		"<textarea id='text_area' name='texte'$att_text>$texte</textarea>\n" .
 
-		((($articles_ps AND $options == "avancees") OR $ps) ?
+		((($articles_ps AND $options == "avancees") OR strlen($ps)) ?
 		 ("\n<p><b>" . _T('info_post_scriptum') ."</b><br />" . "<textarea name='ps' class='forml' rows='5' cols='40' wrap=soft>" . $ps . "</textarea></p><p>\n") :
-		 ("<input type='hidden' name='ps' value=\"" . $ps . "\">")) .
+		 '') .
 
 		(!$champs_extra ? '': extra_saisie($extra, 'articles', $id_secteur, false)) .