[RESOLU] modification, mise à jour UPDATE

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 12:38

Bonjour à tous.
j'ai un souci dans ma table "datas" j'ai un champ "valid" qui est toujours à "N" par défaut lors de la réation de l'enregsitrement par INSERT INTO datas.....
je n'arrive pas à modifier cette valeur pour la passer à "O" avec la requête UPDATE...qu'est-ce qui ne va pas dans mon code..ci joint..?
Merci par avance...d'un super débutant +++
	
<?php

   //code connexion MySQL on line
if(!mysql_connect("....","...","....")) 



// sélection de la database
Mysql_select_db('.....'); 

$id_a = $_GET["id_a"];
echo "le num de l'id_a est : $id_a <br />";

?>

<?php
	$strSQL = "UPDATE datas SET valid='O' where id_a = $id_a" ;

;
	mysql_query($strSQL);



  if($strSQL )
  {
    echo("Enregistrement validé V !!") ;
	
  }
  
  else
  {
  echo("Validation ratée !!") ;
  
  }
	// Close the database connection
	mysql_close();
	
?>

...
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 12:41

Salut !

Essaye de mettre des ' autour de $id_a dans ta requête.

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 12:51

Merci pour ton conseil....mais ça ne marche pas..!!
je ne sais pas ce qui ne va pas..!!
j'ai bien regardé partout pour la syntaxe...
pour modifier une valeur déja existante, c'est bien update...
et pour le WHERE, je récupére bien l'Id de mon enregsitrement..
je ne sais pas...!! :(

ViPHP
ViPHP | 2577 Messages

02 mai 2013, 12:59

Bonjour,

Il y a la fonction mysql_error() pour vérifier que les appels à mysql se passe bien (erreur de syntaxe) et la fonction mysql_affected_rows() pour savoir combien de lignes ont été modifiées par la requete (erreur sur la clause where).

D'ailleurs, tu ne précises pas si tu obtiens le message "Enregistrement validé V !!" ou le message "Validation ratée !!".

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 13:09

j'obtiens bien le message "enregsitrement validé V"
je ne sais pas encore utiliser
mysql_error() et mysql_affected_rows() :oops:
je vais tester.
Merci

Eléphant du PHP | 51 Messages

02 mai 2013, 13:11

Le bonne syntaxe est :
$strSQL = "UPDATE `datas` SET `valid`='O' WHERE id_a = $id_a" ;

Invité
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 14:00

ça ne marche pas non plus...
cela ne peut pas venir du paramétrage de ma table..? en fait je ne crois pas.
je n'y comprends rien...
ca fait 2h que je patauge..

Eléphant du PHP | 51 Messages

02 mai 2013, 14:12

Il faudrait voir ton code entier parce que sur la partie que tu nous as donné si tu corriges avec ce que je t'ai mis il est bon. Maintenant il se peut qu'il y ait une erreur au dessus. Tu peux également tester ce que fais ton code en mettant des echo et également tester ta commande SQL indépendamment par exemple avec phpmyadmin.

Mammouth du PHP | 619 Messages

02 mai 2013, 14:21

Bonjour,

avec des guillemet peut-être ?
$strSQL = "UPDATE `datas` SET `valid`='O' WHERE id_a = '$id_a'" ;


sinon il est vrai que avoir juste un bout du code n'y la structure de la table ne nous donne pas beaucoup d'information

Eléphant du PHP | 51 Messages

02 mai 2013, 14:30

Non non ghost, la syntaxe est bien celle que j'ai donnée, pas besoin de mettre d'apostrophe ' entre la variable $id_a

Le problème doit venir d'au dessus

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 15:01

Voici ci dessous le SQL généré par phpmyadmin quand j'insère un 'O' dans le champ 'valid' de ma table 'datas'.
pas de message d'erreur. insertion correcte.
requête SQL: 
UPDATE `datas` SET `valid` = 'O' WHERE `id_a` =24 LIMIT 1 ;
Voici ci dessous le code php complet de ma page
dans ma table 'datas' tous mes champs 'valid' sont = à 'N' au moment de INSERT INTO.
et je souhaite pouvoir passer à 'O' uniquement ceux sélectionnés avec $id_a = $_GET["id_a"];
je n'ai aucum message d'erreur.
et affichage du message "enregistrement validé" = ok
encore merci par avance pour vos conseils
<?php

//code connexion
if(!mysql_connect("********","***********","************")) 
// sélection de la base
Mysql_select_db('********'); 

// récupération id
$id_a = $_GET["id_a"];
//test affichage id
echo "le num de l'id est : $id_a <br />";

// SQL pour updater

      $strSQL = "UPDATE datas SET valid = 'O' WHERE id_a = $id_a" ;
 
	  mysql_query($strSQL);

  if($strSQL )
  {
    echo("Enregistrement validé V !!") ;
	
  }
  
  else
  {
  echo("Validation ratée !!") ;
  
  }
	// Close the database connection
	mysql_close();
	
?

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 18:07

en fait, je vien de me rendre compte en "bidouillant" que si je change le nom de sélection de ma base dans le Mysql_select_db, je n'ai pas de message d'erreur..
et le code se déroule bien jusqu'à echo("Enregistrement validé V !!") sans faire de modif dans la table..!!!
par contre, avec le bon nom...ça ne marche pas mieux....
je n'y comprends rien rien du tout ...
// sélection de la base
Mysql_select_db('********'); 

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

02 mai 2013, 18:18

<?php
      $strSQL = "UPDATE datas SET valid = 'O' WHERE id_a = $id_a" ;
 
          mysql_query($strSQL);

  if($strSQL )
  {
    echo("Enregistrement validé V !!") ;
        
  }
  
  else
  {
  echo("Validation ratée !!") ;
  
  }
tu fait un test foireux sur la requête sql, qui dans ton cas sera toujours vrai (car une chaine de caractère, différente de zéro, sera converti en true) d'où le message affiché.

c'est le retour de mysql_query qu'il faut tester.
<?php

      $strSQL = "UPDATE datas SET valid = 'O' WHERE id_a = $id_a" ;
 
       $retour = mysql_query($strSQL);

  if($retour === false)
  {

        echo 'Erreur SQL avec la requête : ',$strSQL .'<br />',mysql_error(),'<br />';
  }
  
  else
  {
    echo("Enregistrement validé V !!") ;
  
  }
@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 20:08

Merci pour votre aide.
ça marche mieux maintenant...sauf que j'ai un pb avec la variable $id_a
si je la remplace par une valeur ex
WHERE id_a = 12
ca marche, ça me met bien un 'O' à la place du 'N' dans le champ 'valid'
mais ça plante avec $id_a.
j'ai essayé les ' ()...etc...
je n'y arrive pas !!!
merci encore

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

02 mai 2013, 20:51

est ce qu'elle est bien valorisée cette variable ?

par exemple
<?php
if(!empty($_GET['id_a'])) {
  $strSQL = 'UPDATE datas SET valid = \'O\' WHERE id_a = '.mysql_real_escape_string($_GET['id_a']);
 
       $retour = mysql_query($strSQL);

  if($retour === false)
  {

        echo 'Erreur SQL avec la requête : ',$strSQL .'<br />',mysql_error(),'<br />';
  }
  
  else
  {
    echo("Enregistrement validé V !!") ;
  
  }
}else {
echo 'pas possible y a pas l\'id dans l\'url !';
}

@+
Il en faut peu pour être heureux ......