>>> Modification de contenu de chmp : problème avec les espaces

[Résolu]
Signaler
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007
-
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007
-
Bonjour à tous ! 8)

Vu que je suis nouveau sur le forum, je me présente : je suis étudiant. Cela fait maintenant un an que je programme en html mais je débute seulement avec les Base de données MySql. Pour l'instant, je n'ai fait qu'insérer et supprimer des enregistrements d'une table avec un petit programme php "self-made".

En plus d'ajouter des enregistrements à partir d'un formulaire et de les supprimer, je voudrais pouvoir les modifier en récupérant les valeurs depuis la base de données et les réinsérer dans un formulaire. Là, je les modifierai et je validerai les modifications pour mettre la base de données à jour.

Pour en venir au problème lui même, j'ai déjà réalisé le formulaire qui récupère les données prête à être modifiées, mais si jamais le contenu à insérer dans l'un des champs contient un espace, le remplissage des champs s'arrète et j'ai une erreur :

Notice: Undefined index: auteur in c:\program files\easyphp1-7\www\206sql\sql_accueil_gestion.php on line 132

Voilà, vous savez tout. Je vous donne mon script qui permet d'effectuer toutes les opérations que j'ai décrites. Si vous souhaitez avoir d'autres informations (nom de ma base de données, fichier.txt pour créer la table, etc.) je reste à votre disposition.

Cordialement,

PatX :)

<?
// Parametres de connexion à la base de données
include 'conf/sql_acces.php';
?>

<?
// calcul de la date
$date = date('d-m-Y');
$_REQUEST['date']=$date;
?>

<?
// -----------------------------------------
// Gestion de l'ajout d'un message d'accueil
// -----------------------------------------
if ($_REQUEST["action"]=="Ajouter")
{
print "
<HR width=60%>
<form action=sql_accueil_gestion.php method=post name=accueil_ajouter>
Ajouter un message :,

----

Titre,
,

----

Contenu,
<textarea name=contenu rows=8 cols=50></textarea>,

----

Auteur,
,

----

Date,
,

----

</form>";}

// --------------
// Enregistrement
// --------------
if ($_REQUEST["action"]=="Enregistrer")
{
$titre = isset($_POST['titre']) ? (get_magic_quotes_gpc() ? stripslashes($_POST['titre']) : $_POST['titre']): '';
$contenu = isset($_POST['contenu']) ? (get_magic_quotes_gpc() ? stripslashes($_POST['contenu']) : $_POST['contenu']): '';
$auteur = isset($_POST['auteur']) ? (get_magic_quotes_gpc() ? stripslashes($_POST['auteur']) : $_POST['auteur']): '';
// préparation de la requête
//mysql_query("insert into ... set champ="".mysql_real_escape_string($champ)."");
$requete = "INSERT INTO accueil (titre, contenu, auteur, date) ";
$requete .= "VALUES (
'" . mysql_real_escape_string($_REQUEST["titre"]) . "',
'" . mysql_real_escape_string($_REQUEST["contenu"]) . "',
'" . mysql_real_escape_string($_REQUEST["auteur"]) . "',
'" . mysql_real_escape_string($_REQUEST["date"]) . "');";
$resulat = mysql_query($requete, $cnx);
}

// -----------------------------------
// Suppression d'un message
// -----------------------------------
// Doit on supprimer un message ?
if ($_REQUEST["action"]=="Supprimer")
{
// préparation de la requête
$requete = "delete from accueil WHERE id_accueil=".$_REQUEST['id'];
$resulat = mysql_query($requete, $cnx);
}

// -----------------------------------
// Modification d'un message
// -----------------------------------
// Doit on modifier un message ?
if ($_REQUEST["action"]=="Modifier")
{

// préparation de la requête (Suppression + Ajout)
$requete = "delete from accueil WHERE id_accueil=" . $_REQUEST['ancien_message'];
$resulat = mysql_query($requete, $cnx);
{
print ("
<HR width=60%>
<form action=sql_accueil_gestion.php method=post name=accueil_ajouter>
Modifier un message :,

----

Titre,
,

----

Contenu,
<textarea name=contenu rows=8 cols=50>" . $_REQUEST["contenu"] . "</textarea>,

----

Auteur,
,

----

Date,
,

----

A enregistrer même sans modification (le message a été supprimé)

</form>
");}
}

// Interroger la base de données
$requete = "SELECT * FROM accueil ;";
$resultat = mysql_query ($requete,$cnx) ;

print ("<HR width=60%>
Liste des message enregistrés :

");
print ("\");
print (\"----

Id_accueil,
Titre,
Auteur,
Date,
 ,
 ,
\");

//fonction qui alterne les couleurs
function Couleur(){
static $valcoul;
if ($valcoul == \"#CCCCCC\")
$valcoul = \"#FFFFFF\";
else $valcoul = \"#CCCCCC\";
return $valcoul;
}

//affiche les informations
while ($ligne = mysql_fetch_array ($resultat))
{
print(\"----
\") ;
print (\"" . $ligne ["id_accueil"] . ", \") ;
print (\"" . $ligne ["titre"] . ", \") ;
print (\"" . $ligne ["auteur"] . ", \n\") ;
print (\"" . $ligne ["date"] . ", \n\") ;
print (\"[sql_accueil_gestion.php?action=Ajouter Ajouter un message]

7 réponses

Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
salut
je pense que si tu laisse un message de cette longeur tu a peut de chance davoir une reponse

donc si tu a moyen de reduire pour que ce soit lisible
ensuite ce serait bien de montrer la ligne 132 ou il y a l'erreur

mais de toute evidence il ne connait pas la variable auteur !!!

cordialement

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

question, parce que je ne suis pas sur, je n'ai jamais ecrit ca comme ca, et je n'ai pas php la (au taf) :

'" . mysql_real_escape_string($_REQUEST["titre"]) . "',
'" . mysql_real_escape_string($_REQUEST["contenu"]) . "',
'" . mysql_real_escape_string($_REQUEST["auteur"]) . "',
'" . mysql_real_escape_string($_REQUEST["date"]) . "');";

ca pose pas un probeme? Tu fermes le guillemt pour concatener le contenue de ta variable, et tu rouvres les guillemets pour mettre le nom de ton POST, le refermes, ferme la concatenation, ferme les guillemets.
Tu devrais pas plutot ecrire :

'" . mysql_real_escape_string($_REQUEST['titre']) . "',

?
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
salut
comme leur noms l'indique
addslashes ajoute des antislashes devant les carcteres le nécessitant (' " \ etc...)
comme ça, la chaine de caractere peut etre utiliser pour sql
stripslashes est la fonction inverse

ca s'utilise comme ca :
$var = addslashes("ta chaine de caractere ou ta variable")

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007

D'accord, euh, on fait comment pour modifier le message ?
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
on peut pas
il faut refaire le msg

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007

Salut Malalam !

Alors je viens de faire les modifications sur mon script, mais ça fonctionne comme avant. Rien n'a changé.

On m'a parlé de Stripslaches ou de Addslaches qui pourrait résoudre mon problème. C'est quoi et comment ça s'utilise ?
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007

Ok, donc en fait, ça ne permet pas d'accepter les espaces lorsque je veux reprendre le contenu de mes variables dans le formulaire pour les modifier.

En plus, je viens de m'apercevoir que les retours à la ligne n'étaient pas pris en compte lors de la saisie ... (sniff)