Données tronquées dans modification de compte !

Eléphanteau du PHP | 21 Messages

25 sept. 2009, 21:22

Bonjour,

Tout d'abord merci, car sans votre Site Internet et plus en particulier votre Forum, je ne me serais jamais lancé à la programmation en PHP.

Je débute en PHP et j'aime ça...
J'ai trouvé deux scripts tout fait sur Internet pour me faire la main sur un projet qui va me servir plus tard pour mon Site Internet, je les ai fusionnés et adaptés à ma convenance.

Le nom du 1er script est : web_espace_membre_V1.2

Composé des fichiers suivants :
--------------------------------------------------------
espace_membre/.htaccess
espace_membre/connecter.php
espace_membre/deconnecter.php
espace_membre/index.html
espace_membre/infos_perso.php
espace_membreinscription.php
espace_membre/membres.php
espace_membre/retour_mdp.php
image/
includes/functions.inc.php
a_lire.txt
bas.php
config.inc.php
espace_membre.php
haut.php
installer.php
--------------------------------------------------------
Voici la table fromageries.sql que j'ai créer
--------------------------------------------------------
--
-- Structure de la table `fromageries`
--

CREATE TABLE IF NOT EXISTS `fromageries` (
  `id` int(4) NOT NULL auto_increment,
  `login` varchar(100) character set utf8 NOT NULL,
  `mdp` varchar(10) character set utf8 NOT NULL,
  `adresse` varchar(32) character set utf8 default NULL,
  `cp` varchar(5) character set utf8 NOT NULL,
  `ville` varchar(50) character set utf8 NOT NULL,
  `departement` varchar(50) character set utf8 NOT NULL,
  `region` varchar(50) character set utf8 NOT NULL,
  `pays` varchar(50) character set utf8 NOT NULL,
  `email` varchar(50) character set utf8 NOT NULL,
  `telephone` varchar(15) character set utf8 NOT NULL,
  `fax` varchar(15) character set utf8 NOT NULL,
  `url_site` varchar(100) character set utf8 NOT NULL,
  `age` int(3) NOT NULL,
  `dimanche` char(3) character set utf8 NOT NULL,
  `horaires` text character set utf8 NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=10 ;

INSERT INTO `fromageries` (`id`, `login`, `mdp`, `adresse`, `cp`, `ville`, `departement`, `region`, `pays`, `email`, `telephone`, `fax`, `url_site`, `age`, `dimanche`, `horaires`) VALUES
(1, 'Fromagerie de test', 'fromage', 'rue du comté', '39220', 'Les Rousses', 'Jura', 'Franche-Comté', 'France', '[email protected]', '01 02 03 04 05', '06 07 08 09 10', 'http://www.test-fromagerie.com', 5, 'Oui', 'Du Lundi au Vendredi de 9h00 à 12h00 - 14h00 à 19h00.\r\nLe Samedi de 9h30 à 17h30 non stop.\r\nDimanche de 10h00 à 15h00.');

--------------------------------------------------------
--------------------------------------------------------
Le nom du 2ème script est : france_map_3.0

Composé des fichiers suivants :
--------------------------------------------------------
css/stylesheet.css
js/AC_RunActiveContent.js
php_xml/settings.php
php_xml/xml_datagrid.php
php_xml/xml_datagrid_reg.php
php_xml/xml_datagrid_ville.php
php_xml/xml_datas.php
php_xml/xml_datas_id.php
php_xml/xml_datas_id_old.php
php_xml/xml_options.php
swf/france_map_3.0.swf
AIDE_Include de la carte.txt
detail_membre.php
map.php
--------------------------------------------------------
Ce dernier utilisera la même table .sql que le premier

Le premier script permet d'inscrire, et de modifier des membres par le biais d'une interface d'administration, qui dans mon cas, sera utilisé pour référencé des fruitières à fromages en France et en Corse.
Le but est de se connecter à l’administration avec un login et un mot de passe, jusque là normal rien de bien spécial, ensuite on arrive sur une nouvelle page avec :
1- S’inscrire
2- Se connecter à son compte
3- Modifier ses données
Pour les deux premier c’est bon, ça marche nickel, mais lorsque je veux modifier les données d’un compte, mes données sont tronquées à l’espace.
Explications :
Première donnée : Fromagerie de Morbier = affichage Fromagerie, le reste n’apparait plus ?????
Je rentre de nouveau les données entières, je valide et c’est bon elles sont correctes dans la Base de donnée. Je retourne à la modification, c’est reparti de nouveau et là si je laisse les données tronquées, et que je valide, elles sont tronquées dans la base de donnée.
Je n’y comprends plus rien…
Pouvez vous m’indiquer ou est l’erreur.
L’exemple est en ligne à l’adresse suivante : http://broye.alain.free.fr/
Login : Fromagerie de test / mot de passe : fromagerie
Merci d’avance pour vos commentaires.
Modifié en dernier par gaston04 le 20 juin 2010, 12:33, modifié 3 fois.
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Mammouth du PHP | 686 Messages

26 sept. 2009, 10:04

Lorsque tu fais une modification des données,
qu'elle requete SQL effectues-tu ?

Eléphanteau du PHP | 21 Messages

26 sept. 2009, 12:57

Bonjour Sylvain,

Voici le code de la page appelée pour la modification des données :
<?php
if(!isset($_SESSION[login]))
{ /// VERSION 1.0 : if(!session_is_registered("login"))-> nécessité REGISTER_GLOBALS à ON
echo "<script language='javascript'>document.location='espace_membre.php?page=1'</script>";
}
else
{
	if(isset($_POST['email']) && !empty($_POST['email']) && isset($_POST['mdp']) && !empty($_POST['mdp']))
	{
		connecter();

		$mdp=addslashes(htmlspecialchars($_POST['mdp']));
		$adresse=addslashes(htmlspecialchars($_POST['adresse']));
		$cp=addslashes(htmlspecialchars($_POST['cp']));
		$ville=addslashes(htmlspecialchars($_POST['ville']));
		$departement=addslashes(htmlspecialchars($_POST['departement']));
		$region=addslashes(htmlspecialchars($_POST['region']));
		$pays=addslashes(htmlspecialchars($_POST['pays']));
		$email=addslashes(htmlspecialchars($_POST['email']));
		$telephone=addslashes(htmlspecialchars($_POST['telephone']));
		$fax=addslashes(htmlspecialchars($_POST['fax']));
		$url_site=addslashes(htmlspecialchars($_POST['url_site']));
		$age=addslashes(htmlspecialchars($_POST['age']));
		$dimanche=addslashes(htmlspecialchars($_POST['dimanche']));
		$horaires=addslashes(htmlspecialchars($_POST['horaires']));

		$query="UPDATE `fromageries` set `mdp`='$mdp',`adresse`='$adresse',`cp`='$cp',`ville`='$ville',`departement`='$departement',`region`='$region',`pays`='$pays',`email`='$email',`telephone`='$telephone',`fax`='$fax',`url_site`='$url_site',`age`='$age',`dimanche`='$dimanche',`horaires`='$horaires' WHERE `login` LIKE '$login'";
		$result=@mysql_query($query);
		
		if(!empty($avatar))
		{
			$ext = ".jpg"; 
			$nom_image=($meme[0].$ext);
			$chemin = "images/".$nom_image; 
			move_uploaded_file($HTTP_POST_FILES["avatar"]["tmp_name"],$chemin); 
 
		}
		echo "<script language='javascript'>document.location='espace_membre.php?page=3'</script>";
	}else
	{	
		connecter();
		$query="SELECT * FROM `fromageries` WHERE `login` LIKE '$login'";
		$result=@mysql_query($query);
		$row=@mysql_fetch_row($result);
		if($row){
		echo "<center><b>Infos sur la fruitière :</b></center>";
		echo "<p>";
		echo "<form action='espace_membre.php?page=5' method='post' enctype=multipart/form-data><table align=center class=texte>";
		echo "<tr><td>Nom de la fruitière : </td><td><input type=text name=login value=".stripslashes($_SESSION[login])." disabled></td></tr>";
		echo "<tr><td>Mot de passe : </td><td><input type=password name=mdp value=".stripslashes($row[2])."></td></tr>";
		echo "<tr><td>Adresse : </td><tD><input type=text name=adresse value=".stripslashes($row[3])."></tD></tr>";
		echo "<tr><td>Code postal : </td><tD><input type=text name=cp value=".stripslashes($row[4])."></tD></tr>";
		echo "<tr><td>Ville : </td><tD><input type=text name=ville value=".stripslashes($row[5])."></tD></tr>";
		echo "<tr><td>Département : </td><tD><input type=text name=departement value=".stripslashes($row[6])."></tD></tr>";
		echo "<tr><td>Région : </td><tD><input type=text name=region value=".stripslashes($row[7])."></tD></tr>";
		echo "<tr><td>Pays : </td><tD><input type=text name=pays value=".stripslashes($row[8])."></tD></tr>";
		echo "<tr><td>Adresse e-mail : </td><td><input type=text name=email value=".stripslashes($row[9])."></td></tr>";
		echo "<tr><td>Téléphone : </td><tD><input type=text name=telephone value=".stripslashes($row[10])."></tD></tr>";
		echo "<tr><td>Fax : </td><tD><input type=text name=fax value=".stripslashes($row[11])."></tD></tr>";
		echo "<tr><td>Url de votre site : </td><tD><input type=text name=url_site value=".stripslashes($row[12])."></tD></tr>";
		echo "<tr><td><tr><td>Nous fabriquons du fromage depuis : </td><td>";
		echo "<select name=age><option value=- selected>".stripslashes($row[13])."</option>";
		for($i=0;$i<100;$i++) echo "<option value='$i'>$i</option>";
		echo "</select> ans</td></tr>";
		echo "<tr><td><tr><td>Ouverture le Dimanche : </td><td> ";
		echo "<input type=radio name=dimanche value=Oui>Oui ";
		echo "<input type=radio name=dimanche value=Non>Non";
		echo "<tr><td></tD></tr>";
		echo "<tr><td><tr><td valign=top>Indiquez vos horaires d'ouverture ici : </td><td>";
		echo "<textarea name=horaires rows=4 cols=20>".stripslashes($row[15])."</textarea>";
		echo "</tD></tr>";
		echo "<tr><td>Avatar (extension .jpeg seulement)*: </td><tD>";
		echo "<input type='file' name='avatar'>";
		echo "</tD></tr>";
		echo "<tr><td colspan=2 align=center><input type=submit value=Modifier></td></tr>";
		echo "<tr><tD colspan=2 align=center><a href=espace_membre.php?page=3><font size=1>retour</font></a></tD></tr>";
		echo "</table></form>";
		echo "<center><font size=1>Les changements seront pris en compte lors de votre prochaine connection</font></center>";
		echo "</p>";
		}
		else{
		echo "<script language='javascript'>document.location='espace_membre.php?page=3'</script>";
		}
	}
}
?>
Merci pour ta réponse.

Gaston
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Mammouth du PHP | 686 Messages

26 sept. 2009, 14:00

D'après ce que tu dis, c'est lorsque tu recupere les donnée pour les modifier que tu as un soucis.
Est ce que tu peux me donner tous le code de ta page modification stp ?

Eléphanteau du PHP | 21 Messages

26 sept. 2009, 17:31

Sylvain,

Trouve la totalité de la partie administration téléchargeable ici : http://broye.alain.free.fr/.

Merci d'avance

Gaston
Modifié en dernier par gaston04 le 20 juin 2010, 12:34, modifié 1 fois.
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Mammouth du PHP | 985 Messages

26 sept. 2009, 17:38

Pas de données sensibles dedans?
Sinon, au pire, toujours possible d'éditer ton Post, et ensuite lui envoyer le lien par MP :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 21 Messages

26 sept. 2009, 18:25

Pour Dr@ke
Non c'est bon,

J'ai changé les données de connexion dans le fichier functions.inc.php par le standard : localhost, root etc...

Merci pour cette gentille intention :wink:
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Eléphanteau du PHP | 21 Messages

28 sept. 2009, 21:35

Bonsoir,

Je suis désolé, j'ai beau chercher, je ne trouve pas d'où vient le problème.
Je suis débutant en PHP, et là ça confirme bien !

Je suis perdu... :oops:

Encore merci à tous ceux qui on plancher sur mon problème et à ceux à venir.

Cordialement,

Gaston
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Eléphanteau du PHP | 21 Messages

05 oct. 2009, 21:00

Bonsoir à tous,

Je n'arrive pas à trouver d'où vient le problème, et je ne suis pas le seul vu qu'il n'y a pas d’autres personnes sur ce forum !
Peut-être que le problème vient de mon hébergeur, pourtant ça fait pareil chez 1and1, free, et même en local avec EasyPHP 3.0

J'abandonne le projet, sauf si quelqu'un trouve une solution bien sûr :wink:
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Mammouth du PHP | 686 Messages

05 oct. 2009, 21:34

Est ce que dans tes données de ta base, si c'est de type varchar, tu as mis assez de caracteres dedans ?

Mammouth du PHP | 686 Messages

05 oct. 2009, 21:43

Je sais pas du tout si ca peut venir de ca mais à tout hasard
$horaires=addslashes(htmlspecialchars($_POST['horaires']));
Mais plutot d'utiliser cette ligne essaie avec
$horaires=htmlspecialchars($_POST['horaires']);
$horaires=mysql_real_escape_string($horaires);

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 oct. 2009, 21:56

Ton problème vient du fait que tu ne délimites pas les valeurs de tes attributs html avec des guillemets.. du coup le navigateur s'arrête au premier espace qu'il trouve.

Dans ton code tu as :
echo "<tr><td>Nom de la fruitière : </td><td><input type=text name=login value=".stripslashes($_SESSION[login])." disabled></td></tr>";
ce qui génère le code :
<tr><td>Nom de la fruitière : </td><td><input type=text name=login value=Fromagerie de test disabled></td></tr>
Et du coup, pour la navigateur, la valeur du champ est "Fromagerie" (il considère que "de" et "test" sont des attributs html qu'il ne connait pas)

Pour éviter cela, il faut spécifier les valeurs de tes attributs entre guillemets. En gros, il faudrait obtenir
<tr><td>Nom de la fruitière : </td><td><input type="text" name="login" value="Fromagerie de test" disabled></td></tr>
Pour cela, il te faut donc coder :
echo "<tr><td>Nom de la fruitière : </td><td><input type=\"text\" name=\"login\" value=\"".stripslashes($_SESSION[login])."\" disabled></td></tr>";
ou (petite astuce pour alléger la lecture) mettre le code à afficher entre apostrophes (entre lesquelles tu peux mettre des guillemets sans avoir à les protéger :
echo '<tr><td>Nom de la fruitière : </td><td><input type="text" name="login" value="'.stripslashes($_SESSION[login]).'" disabled></td></tr>';
A appliquer à tes différents inputs pour éviter que cela ne se reproduise pour les autres champs ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 686 Messages

05 oct. 2009, 22:03

Je me fait un monologue.
J'ai trouvé ton erreur. Les guillemets dans le code html !
Essaie comme ca (j'ai pas fait toutes les lignes car c'est long ! :
		if($row){
		echo '<center><b>Infos sur la fruitière :</b></center>';
		echo '<p>';
		echo '<tr><td>Adresse : </td><td><input type="text" name="adresse" value="'.stripslashes($row[3]).'"></td></tr>';
		echo '<tr><td>Code postal : </td><td><input type="text" name="cp" value="'.stripslashes($row[4]).'"></td></tr>';
		}

dans les variables des balises html on mets des guillemets !!
input type="truc" name="machin" value="bidule" ....
Fais un clic de droit et affiche le code source de ta page et tu veras que tes données ne sont pas tronquées, elles sont pas encadrée par des guillement dans ton input
De me^me que les balises td s'ecrivent td et pas tD fais attention

Eléphanteau du PHP | 21 Messages

06 oct. 2009, 10:15

Merci à tous,

Je vais reprendre tout le code, avec vos précieux conseils, et je viens vous refaire un petit coucou après !
Encore merci pour votre efficacité et votre savoir !

Gaston
Il faut rêver très haut pour ne pas réaliser trop bas.
Alfred Capus.
Ecole de danse à Manosque
L'équipement éco. de la maison

Mammouth du PHP | 686 Messages

06 oct. 2009, 10:57

Merci à tous,

Je vais reprendre tout le code, avec vos précieux conseils, et je viens vous refaire un petit coucou après !
Encore merci pour votre efficacité et votre savoir !

Gaston
trop aimable :oops:
Pas de soucis on sera là ! :wink: