Gros probleme update PHP/Mysql
Alex
-
switch -
switch -
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
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:
- Gros probleme update PHP/Mysql
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
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 ...
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 ...
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"...
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"...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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 ?
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 ?
A tout hasard, essaye avec :
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 ?
$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 ?
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 :)
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 :)
Une autre remarque : UPDATE n'ajoute pas mais modifie des enregistrements existants. Pour "ajouter" (je te cite) il faut utiliser INSERT.
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.. :)
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.. :)
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
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
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.
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.
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..)
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..)
Si phpmyadmin ne marche pas, tu peux essayer ce que je te propose en écrivant un script de qqes lignes.
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.
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.