Problème de requête Update

Eléphanteau du PHP | 20 Messages

23 juin 2011, 08:17

Bonjour à tous, voilà j'essai tant bien que mal de faire un update depuis hier mais ça ne marche pas. Je ne comprends pas parceque ce n'est pas la 1ere fois que je fais ça ! L'attribut Sauvegarde recoit oui ou non selon si le disque dur concerner est sauvegardé ou pas . Ici sa date de sauvegarde à atteint le maximum et donc je veux repasser Savegarde à non :
$Machine = $_Get['Machine'];
mysql_query(" Update Disque SET Sauvegarde='non' where MachineAssocié='$Machine' ") or die ('Erreur:'.mysql_error());
Aucune erreur sql m'est retournée et si je fais echo $Machine, le nom de ma machine apparait correctement.

Merci d'avance à vous :D
Hail to the king!

ViPHP
xTG
ViPHP | 7331 Messages

23 juin 2011, 09:23

Le nom de la machine ? Pas de clé ?
Le souci avec les chaînes de caractères c'est qu'il faut être sûr de pas avoir de conflit d'encodage.
En effet, si ta base de données est en iso et que ton programme est en utf-8 le nom de la machine sera déformé s'il contient des caractères accentués ou spéciaux.

Eléphanteau du PHP | 20 Messages

23 juin 2011, 09:41

Oui je sais mais j'essaie de me débrouiller sur le programme d'une autre personne et c'est pas facile :D
La bado est en latin1_swedish et pour le coté php je ne sais pas
Hail to the king!

Eléphant du PHP | 314 Messages

23 juin 2011, 09:54

Bonjour,

J'ai plusieurs propositions pour toi :

1. Afficher la variable $Machine en détail
var_dump($Machine);
Tu verras ainsi si il n'y a pas de caractère en trop ou invisible ( ça m'est déjà arrivé ! ) SI oui, un coup de trim(); et c'est parti !

2. S'assurer qu'une entrée existe avec cette machine !
Tu réalises un SELECT * FROM Disque WHERE MachineAssocié='$Machine'; et tu regardes que des résultats existe? Peut être faut il créé la machine ?

[RienAVoir] 3. SAFETY FIRST !
Utilises [url="http://php.net/manual/fr/function.mysql ... string.php"]mysql_real_espace_string[/php] dans ta requête pour la rendre plus sûre !

Je ne vois rien de plus, assures toi que ton code arrive jusque là ( mais si tu as fait un echo $Machine ça devrait être bon ). Rien à voir je pense mais, Utilises $_GET plutôt que $_Get , je ne suis même pas sûr que $_Get marche ( Les variables sont sensibles à la casse ! )
Modifié en dernier par AoSiX le 23 juin 2011, 10:06, modifié 1 fois.
Cordialement,
Julien - http://laravel.fr/

Eléphanteau du PHP | 20 Messages

23 juin 2011, 10:02

Merci Aosix, le var_dump me renvoi ca :
string(12) " CEMLHAVAP32"
c'est le nom de la machine mais c'est le string(12) qui fait tout buger du coup, mais comment je me débarasse de ca ? :O
Hail to the king!

Eléphant du PHP | 314 Messages

23 juin 2011, 10:05

Salut Dralex,

Le String 12, c'est var_dump qui l'affiche pour te donner des informations sur ta variable !! Cependant, tu remarqueras qu'il y a un espace avant le début du nom de ta machine !!

Pour ce qui est du var_dump, consultes la page suivante : http://php.net/manual/fr/function.var-dump.php ; et fais les test suivant pour comprendre :
$a = 45;
var_dump($a);

$b = "coucou";
var_dump($b);

$c = array("a"=>1,"b"=>2);
var_dump($c);
Cordialement,
Julien - http://laravel.fr/

Eléphanteau du PHP | 20 Messages

23 juin 2011, 10:13

Merci beaucoup vraiment, a force de regarder j'en oubliais l'essentiel et l'espace m'est passé à coté de la tête.
Je te remercie vraiment, toi et toutes les personnes qui ont la gentillesse de prendre du temps pour les autres .
PS: Merci pour ce petit test du var_dump ca va m'aider dans le futur.
Hail to the king!

Eléphant du PHP | 80 Messages

23 juin 2011, 10:15

Et si tu copies ta requête dans PMA, ça te retourne quoi ?
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.