Page 1 sur 1

Modification table access avec PHP

Posté : 06 juil. 2007, 14:44
par GL91
Bonjour,

J'ai un petit soucis a vous soumettre:

je voudrais mettre a jour dans ma base access le nom de la session que je voudrait recuperer dans ce code Comment faire? merci d'avance.

Gilles.
<?
	include 'connexion.php';
	include 'parametre.php';

	// On démarre la session
	session_start();

		// Vérouillage
	if ( !isset($_SESSION['Nom']) ) {
		include 'lock.php';
		exit();
	}
	
	
	if ( isset($_POST) && !empty($_POST) ) {
		extract($_POST);
			
		// Validation
		if ($_POST['Validation'] == "Accept")
		{
			$sql_update_status = "UPDATE BonCommande SET
																									Status = 1
						WHERE `NumBdc` = ".$_GET['id'];
			
		}
		
		elseif ($_POST['Validation'] == "Reject")
		{
			$sql_update_status = "UPDATE BonCommande SET
																									Status = 2
																									WHERE `NumBdc` = ".$_GET['id'];
		}
		
		$result_update_status = odbc_exec($cnx,$sql_update_status);

Posté : 06 juil. 2007, 15:09
par chrislabricole
les sessions marchent ?
il y a t-il un message d'erreur ?

Posté : 06 juil. 2007, 15:09
par Ryle
Soit je ne comprends pas ce que tu veux faire, soit je ne vois pas du tout ce qui peut te gener...

Le nom dans ta session, tu l'as dans ta variable $_SESSION['Nom'] (dont tu testes d'ailleurs déjà l'existance) et si tu veux le mettre à jour dans ta base, tu fais une requête d'update que tu exécutes, comme tu le fais pour mettre à jour ta table boncommande

Bref, je vois pas ce qui te gène :)

Posté : 06 juil. 2007, 15:26
par chrislabricole
ben déjà, à l'avant dernière inscruction, tu à oublier de refermer la guillemet.. et lde mettre le point firgule
$sql_update_status = "UPDATE BonCommande SET";
au lieu de
$sql_update_status = "UPDATE BonCommande SET 
et le temps que l'on y est, met cela
<?
   // On démarre la session
    session_start();

    include('connexion.php');
    include('parametre.php');
.  .  .
.  .  .
à la place de cela :
<?
    include 'connexion.php';
    include 'parametre.php';

    // On démarre la session
    session_start(); 

Posté : 06 juil. 2007, 15:37
par GL91
merci pour vos reponses,

je modifie le code comme celui que j ai en erreur et je le poste.

Gilles.

Posté : 06 juil. 2007, 15:44
par GL91
re bonjour,

si je mets ce code:
<?
// On démarre la session
session_start();

include 'connexion.php';
include 'parametre.php';

// Vérouillage
if ( !isset($_SESSION['Nom']) ) {
include 'lock.php';
exit();
}


if ( isset($_POST) && !empty($_POST) ) {
extract($_POST);

// Validation
if ($_POST['Validation'] == "Accept")
{
$sql_update_status = "UPDATE BonCommande SET
Status = 1,
Signataire = "$_SESSION['Nom'])"
WHERE `NumBdc` = ".$_GET['id'];

}

elseif ($_POST['Validation'] == "Reject")
{
$sql_update_status = "UPDATE BonCommande SET
Status = 2,
Signataire = "$_SESSION['Nom'])"
WHERE `NumBdc` = ".$_GET['id'];
}

$result_update_status = odbc_exec($cnx,$sql_update_status);



cela me donne cette erreur Parse error: parse error in c:\intranet\bdcmaintenance_visu.php on line 23

cela vous parle t-il?

Gilles

Posté : 06 juil. 2007, 15:51
par @rthur
cela me donne cette erreur Parse error: parse error in c:\intranet\bdcmaintenance_visu.php on line 23

cela vous parle t-il?
Bonjour,

Regarde à la ligne 23 (et éventuellement la ligne précédente), tu as oublié un point-virgule en fin de ligne...

Posté : 06 juil. 2007, 16:00
par GL91
je viens de verifier et j'ai toujours la meme erreur.

gilles.

Posté : 06 juil. 2007, 16:04
par Ryle
Ce n'est pas un problème de point-virgule, mais de guillemets et de parenthèse en trop... la coloration syntaxique des balises [ php ] te permettrait de le voir tout de suite :
elseif ($_POST['Validation'] == "Reject") 
{ 
$sql_update_status = "UPDATE BonCommande SET 
Status = 2, 
Signataire = "$_SESSION['Nom'])" 
WHERE `NumBdc` = ".$_GET['id']; 
} 
Pour délimiter une chaine en sql il te faut utiliser des apostrophes et pas des guillemets... en revanche, les guillemets te permettent de terminer ta chaine et de concaténer une variable à l'aide de points :
" ... Signataire = '" . $_SESSION['Nom'] . "' ... "
@chrislabricole : Tu peux mettre sans problème des retours à la ligne au milieu d'une chaine, ce qui est d'ailleurs bien pratique pour la lisibilité des requêtes sql :
$sql = " SELECT ...
  FROM ...
  WHERE ....
  ORDER BY .... "; // ma chaine se termine ici, pas besoin d'un ';' à la fin de chaque ligne ou de concaténation
Quant au démarrage de la session il n'y a pas d'ordre pour le mettre, il faut juste le faire avant d'envoyer du code html ou d'utiliser $_SESSION, mais ca pourrait très bien être l'avant dernière ligne de ton code ;)

Posté : 09 juil. 2007, 09:33
par GL91
Bonjour,

Merci beaucoup pour votre aide ça fonctionne!!!!!!

bonne journée.

Gilles.

Merci aux modérateur de passer ce sujet comme Resolu vu que j'etait comme invité au debut de ma question.