Gros probleme update PHP/Mysql

Fermé
Alex - 15 avril 2008 à 10:49
 switch - 3 juil. 2008 à 15:56
Bonjour,

Cela fait quelques mois déja que je m'occupe de petits sites internet avec gestions de bases de données etc... et là je bute sur un problème qui me prend la tête.
J'ai un code en php qui sert à updater une table d'une base de données, ce code marche parfaitement pour les anciens sites que j'ai utilisés mais pas ici, au lieu de remplacer les champs concernés par leurs valeurs il les efface (seulement avec Firefox, pas avec IE)

Voici une partie du code:

$req = "UPDATE `Sponsored` SET
`results`='".$_POST['results']."' ,
`heroVal`='".$_POST['herobutton']."' ,
`fiveYVal`='".$_POST['fiveYbutton']."' ,
`coachViewVal`='".$_POST['coachViewbutton']."' ,
`teamViewVal`='".$_POST['teamViewbutton']."' ,
`pictused`='".$_POST['pict']."'
WHERE `firstname`='".$_GET['firstname']."' AND `surname`='".$_GET['name']."'
";
echo $req;
mysql_query($req) or die ("Erreur ".mysql_error());

L'affichage de la requête marche parfaitement, les données sont présentes, quand je copie/colle cette requête dans PHP My Admin cela fonctionne niquel.
Ce code fonctionne avec IE mais pas avec Firefox! J'ai tenté différentes écritures pour mes variables mais je ne trouve pas.
Si cela peut vous aider ma table est composée principalement de varchar et de longtext et aucune variable ne "dépasse" la longueur des varchars.

J'ai tout vérifié, même avec wireshark, les données sont bien envoyées au serveur mais le problème est donc que mes champs au lieux d'être updatés sont effacés sous firefox.

Merci de votre aide.

Alex
A voir également:

18 réponses

Hélas ce n'est pas ça :'(
J'ai bien spécifié sinon dans les meta tanks au début ça :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<meta name="Language" content="en">

Peut être que ça peut causer un problème mais sur un des autres sites que je gère cela marche avec ça...
Je croyais vraiment que ça allait marcher là :(
Merci de tes idées en tout cas mais ça ne marche toujours pas ...
1
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 avril 2008 à 10:59
Bonjour,

La requête affichée est-elle exactement la même pour IE et Firefox ?

Xavier
0
Oui, même chose...
0
Oui en fait c'est exactement la même chose et sous firefox quand je copie cette requête elle fonctionne très bien quand je la colle dans PHPMyAdmin, avec IE ça marche directement.
J'ai déja cherché longtemps ... sur internet, dans ma BDD et mon code mais je ne trouve pas ce qui peut causer ce problème.
Je ne sais pas si ça peut jouer mais j'ai mi les colonnes de ma table en UTF-8 general ci, ce que j'utilise d'habitude et qui fonctionne normalement.
Merci de votre aide c'est assez "urgent"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 avril 2008 à 11:29
J'allais dire que le problème ne peut pas venir de IE ou FF car il se situe au niveau du serveur, mais effectivement s'il y a un soucis d'encodage, ça peut venir de là...

Dans ta balise <form>, essaie de rajouter cet attribut : enctype="text/plain;charset=UTF-8"

Il me semble que ça devrait corriger ton problème.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 avril 2008 à 11:44
Autre possibilité alors :
Toujours dans <form>, ajoute
accept-charset="UTF-8"
0
dehia Messages postés 2 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 11:46
bonjour je cherche des ouvrage qui peut m'aider a apprendre la programmation en php mysql. merci
0
Désolé je viens d'essayer avec le bout de code que tu viens de me passer mais ça ne change rien ...
Je sais vraiment pas ce que ça peut être...
Sinon c'est peut être à cause de mes variables qui sont mal écrites dans ma requête en php ?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 avril 2008 à 12:00
Ben non, si tu me dis que tes requêtes ont exactement la même forme qu'elles soient générées à partir de FF ou de IE...

Si tu essaies de les enregistrer dans un fichier texte, elles sont toujours exactement pareil ?
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
15 avril 2008 à 11:59
A tout hasard, essaye avec :
$req = "UPDATE Sponsored SET"
	. " results='" . $_POST['results'] . "',"
	. "heroVal"='" . $_POST['herobutton'] . "',"
	. "fiveYVal='" . $_POST['fiveYbutton'] . "',"
	. "coachViewVal='" . $_POST['coachViewbutton'] . "',"
	. "teamViewVal='" . $_POST['teamViewbutton'] . "',"
	. "pictused='" . $_POST['pict'] . "'"
	. " WHERE firstname='" . $_GET['firstname'] . "'"
		. " AND surname='" . $_GET['name'] . "'";
echo $req;
$result = mysql_query($req) or die ("Erreur ".mysql_error());
echo '<br>...' . $result . ...';

J'ai supprimé les quotes inversées qui ne servent à rien dans ton cas, j'ai contrôlé les espaces générés dans la commande et j'ai ajouté l'affichage du résultat retourné par mysql_query.

Qu'est-ce-que ca donne ?
0
Après avoir corrigé 2 petites erreurs voici ce que cela retourne:

UPDATE Sponsored SET results='stsert',heroVal='yes',fiveYVal='yes',coachViewVal='yes',teamViewVal='yes',pictused='pict1' WHERE firstname='Alex' AND surname='mon-nom'
...1...

J'ai regardé dans la BDD et ça n'a rien ajouté encore... :s
Je comprends pas :s
Merci beaucoup quand même :)
0
Pas de différence pour les fichiers texte avec les données de FF et de IE ... :s
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
15 avril 2008 à 12:12
Une autre remarque : UPDATE n'ajoute pas mais modifie des enregistrements existants. Pour "ajouter" (je te cite) il faut utiliser INSERT.
0
Oui ça c'est car je me suis mal exprimé, biensur je sais qu'INSERT INTO est la commande pour insérer des valeurs, ici en fait j'ai dis ça car les champs (existant) que je veux modifier sont maintenant "vide" (firefox les vide au lieu de remplacer par la nouvelle valeur).
C'est pour cela que j'ai dit rien "ajouté", je voulais dire remplacer le vide par la bonne valeur..
Sinon ça ne marche toujours pas je pense que je vais me pencher vers une suppression de la ligne de la BDD et un INSERT INTO avec les nouvelles valeurs, c'est "moche" mais vu que le UPDATE ne fonctionne pas là... :s
Je vais tenter ça et on va voir...
Si vous avez des idées de solutions sinon.. :)
0
Bon, j'ai modifié mon code pour faire un DELETE et après un INSERT INTO, et là j'ai remaqué quelquechose.
J'ai commencé par faire un INSERT INTO ça fonctionnait très bien, ensuite j'ai voulu faire un DELETE et après un INSERT INTO, et dans ce cas là il m'insérait des "données vides" même si elles apparraissaient bien à l'écran.
Apparement quand il y a plusieurs requêtes SQL sur ma page les données insérées ou modifiées dans la 2nde requête sont "vides".
Je ne sais pas si ça peut vous avancer pour m'aider.
Merci beaucoup.
Alex
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
15 avril 2008 à 13:10
Est-ce-que le second INSERT est strictement identique au premier ?

Pourrais-tu essayer un script ultra-simple qui fait successivement
1. INSERT INTO avec deux champs en clair seulement INSERT INTO xxx (champ1,champ2) values('a','b');
2. DELETE xxx WHERE champ1='a';
3. le même INSERT

Après chaque commande, affiche la valeur de retour de mysql_query que tu auras complété par un or die(mysql_error())

Donne-nous le script ultra-simple et ce qui est affiché et précise s-nous si l'enregistrement recréé par le second INSERT est dans la base.
0
Bon bah j'ai voulu tester ce que tu m'as dit mais phpmyadmin avec 1&1 ne marche plus pour le moment(version UK je suis à Londres là et les sites sont hébergés sur les 1&1 uk).
Ils doivent être en maintenance ou quoi donc impossible de créer une table pour tester ni de vérifier tout ceci..
Je tentera donc plus tard.
Sinon donc le problème est toujours la, une UPDATE de la BDD remplace les champs concernés par "rien" avec firefox, cela fonctionne avec IE (ne me demandez pas pourquoi..)
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
18 avril 2008 à 18:49
Si phpmyadmin ne marche pas, tu peux essayer ce que je te propose en écrivant un script de qqes lignes.
0
Salut à toi, je pense qu'il est un peu tard, mais ça peut servir d'autres personnes!!!

Pour ce qui est de ton problème, vu qu'aucune erreur est générée, fais gaffe à l'encodage de ton fichier php (iso, utf,...) et à ton mode d'envoi par ftp!

Personellement, j'avais eu ce problème et je l'ai résolu en enregistrant mon fichier en utf-8 (avec notepad++ ==> format==> encodage ==> utf-8).


Cordialement, Switch.
0