Page 1 sur 1

peut on mettre un formulaire dans un formulaire ?

Posté : 02 avr. 2006, 14:09
par coxine
Bonjour
Ma question est vraiment bête ! :oops:
Je suis dans la réflexion d'un développement de panier.

Ce que je souhaite obtenir est la procédure suivante :
- une fois les produits sélectionnés dans le catalogue, on arrive sur le panier.
Ce panier récapitule la liste des produits enregistrés/réservés, permet de modifier la quantité et/ou de supprimer des articles.
Le total € de la commande est mis à jour si ces actions sont effectuées.
En dessous, juste avant le bouton : envoyer la commande, je souhaite rajouter un champ vide, pour que la personne ajoute un numéro de promo, qui changerait bien sur, le montant de la commande.
Comment dois-je m'y prendre ?

Le formulaire d'envoi du panier pour afficher la page commande est en méthode GET.

Code : Tout sélectionner

<form id="panier" method="get" action="panier.php">
Je souhaite donc insérer un champ vide en bas du panier pour envoyer un "code promo". Donc cela devrait se faire en méthode POST ?! :?:

Merci de vos tuyaux ! :)

Posté : 02 avr. 2006, 14:16
par Cyrano
Par rapport à ton titre : non, on ne peut pas imbriquer les formulaires.

Pour la construction d'un panier, j'ai fait un tuto disponible ICI

Posté : 02 avr. 2006, 14:25
par coxine
ok merci de ta réponse, c'est bien ce qu'il me semblait, mais je ne m'étais jamais posé la question ! lol
Là, j'aborde la question : modifier le tarif si promo. En partant d'un code promo qui sera enregistré dans la base.
Je vais rester sur la méthode get et faire des conditions de modifications si on clique sur "ajouter la promo".
Je me suis inspirée de ton tuto merci ! pour la gestion des tableaux et ça a bien fonctionné !!! =D> Mais j'ai un souci pour l'intégrer dans ma page catalogue en faisant appel aux fonctions :? :oops:

Posté : 02 avr. 2006, 15:19
par coxine
j'ai une petite question
Voici le code que j'essaye de faire pour calculer le prix avec le code du cheque cadeau (promo)
if(!isset($_GET['ajoutcodechkdo'])) $ajoutcodechkdo="";//init de chque cadeau
else $ajoutcodechkdo=$_GET['ajoutcodechkdo'];

//----------------------------------------------------Promo
if ($ajoutcodechkdo=="Ajouter")
{	
	$code_chkdo=$_GET['code_chkdo']; // en rapport avec mon champ de formulaire <input name="code_chkdo" type="text" class="form" id="code_chkdo" size="20" /> et <input name="ajoutcodechkdo" type="submit" id="ajoutcodechkdo" value="Ajouter" />

	$query_Chkdo="SELECT prix_cadeau FROM chequecadeau  WHERE code = '.$code_chkdo.'";
	$Chkdo = mysql_query($query_Chkdo, $connexion) or die(mysql_error());
    $row_Chkdo = mysql_fetch_assoc($Chkdo);
	$prix_cadeau=$row_Chkdo['prix_cadeau'];
}

//plus bas le total : 
$total+=($row_Panier['prix'] * $liste[$i][1])-$prix_cadeau; } 
			$_SESSION['total']=$total; //mémorise le total dans la session 
Ca ne fonctionne pas :-/
Apparement la variable $prix_cadeau n'est pas définie :(
Une idée de l'erreur ?
Merci ! :oops:

Posté : 02 avr. 2006, 15:54
par Cyrano
Une idée de l'erreur ? oui, la coloration syntaxique est pratique pour ça, ça aurait du t'apparaître plus clairement :
$query_Chkdo="SELECT prix_cadeau FROM chequecadeau  WHERE code = '".$code_chkdo."'"; 
Regarde la différence entre cette ligne et la même dans ton code ;)

Posté : 02 avr. 2006, 16:20
par coxine
arggg !
merci ! il faut que j'aille revoir le manuel car j'ai un souci avec la syntaxe des appels de variables dans les requetes.
Ce n'est pas la première fois ;-) une autre question, Je n'arrive pas à soustraire le prix cadeau du prix total :
Voici ma ligne de code :
<?php $total+=$row_Panier['prix'] * $liste[$i][1]; 
			if (isset($_GET['code_chkdo'])) {$total=$total-$row_Chkdo['prix_cadeau'];}
			} // fin du bloc for
			$_SESSION['total']=$total; //mémorise le total dans la session ?>
:-k :-s

Posté : 02 avr. 2006, 16:36
par Cyrano
Ta syntaxe a pourtant l,air correcte :-k
Essaye comme ceci à tout hasard :
<?php
//...
            $total += $row_Panier['prix'] * $liste[$i][1];
            $total = (isset($_GET['code_chkdo'])) ? ($total - $row_Chkdo['prix_cadeau']) : $total;
        } // fin du bloc for
        $_SESSION['total'] = $total; //mémorise le total dans la session
//...
?>

Posté : 02 avr. 2006, 17:34
par Invité
nope ça ne marche pas.....
:-k
Il faut que je revois le code, et notamment la condition de la promo.
Bizarre bizarre....
La requête dans la base chequecadeau n'est peut-être pas faite au bon endroit ?
Pourtant si je fais un echo de $rowChkdo['prix_cadeau'] ça m'affiche le bon résultat :roll:

Posté : 02 avr. 2006, 19:58
par coxine
oups, je ne m'étais pas identifiée....
Donc je reprends mon code
// init de la variable $ajoutcodechkdo
//condition :
//----------------------------------------------------CHEQUE CADEAU
if ($ajoutcodechkdo=="Ajouter") 
{     
	$code=$_GET['code_chkdo'];
	$_SESSION['code_chkdo']=$code;
}
// calcul du total avec ou sans code promo

			 $total += $row_Panier['prix'] * $liste[$i][1]; 
			 if (isset($_GET['code_chkdo'])){
			$query_Chkdo="SELECT prix_cadeau FROM chequecadeau  WHERE code = '".$code."'"; 
    		$Chkdo = mysql_query($query_Chkdo, $connexion) or die(mysql_error()); 
    		$row_Chkdo = mysql_fetch_assoc($Chkdo); 
    		 }
            $total = (isset($_GET['code_chkdo'])) ? ($total - $row_Chkdo['prix_cadeau']) : $total;}
			$_SESSION['total']=$total; //mémorise le total dans la session 
			
Keski cloche ?
Je n'ai aucun message d'erreurs !

Posté : 02 avr. 2006, 20:06
par Cyrano
Teste donc ta requête SQL, j'ai dans l'idée qu'elle n'est pas exécutée du tout :-k

Posté : 02 avr. 2006, 20:13
par coxine
quand je clique sur Ajouter (champ code_chkdo et submit = ajoutcodechkdo) j'obtiens l'affichage du
if (isset($_GET['code_chkdo']))echo $row_Chkdo['prix_cadeau'];
qui contient bien la valeur rentrée dans ma base....
:-k Donc la requête s'effectue bien ?

Posté : 02 avr. 2006, 20:26
par Cyrano
Je vois pas trop, à part peut-être une simplification :
<?php
    // init de la variable $ajoutcodechkdo
    //condition :
    //----------------------------------------------------CHEQUE CADEAU
    if ($ajoutcodechkdo=="Ajouter")
    {
        $code = $_GET['code_chkdo'];
        $_SESSION['code_chkdo'] = $code;
    }
    // calcul du total avec ou sans code promo
    
    $total += $row_Panier['prix'] * $liste[$i][1];
    if (isset($code))
    {
        $query_Chkdo = "SELECT prix_cadeau FROM chequecadeau  WHERE code = '".$code."'";
        $Chkdo       = mysql_query($query_Chkdo, $connexion) or die(mysql_error());
        $row_Chkdo   = mysql_fetch_assoc($Chkdo);
        $total      -=  $row_Chkdo['prix_cadeau'];
    }
}
$_SESSION['total'] = $total; //mémorise le total dans la session
?>

Posté : 02 avr. 2006, 20:36
par coxine
ça ne marche pas non plus....cette instruction fait partie de la boucle "for"
<?php
		   	$total=0.00;
		   	for ($i=0;$i<count($liste);$i++)
			{
			$query_Panier="SELECT * FROM// puis affichage du tabeau du panier
d'où la fin du bloc } juste avant la mise en session du total
}
		$_SESSION['total']=$total; //mémorise le total dans la session 
Je me demande si cela n'est pas placé au bon endroit.
Je vais essayer de voir ça, et je posterais demain...ça doit être surement une question d'ordre d'instructions dans ma page....
Pfiou ! :-) merci de ton aide en tous cas

Posté : 07 avr. 2006, 14:50
par coxine
petit up pour dire :
Ca y est, le code promo fonctionne merci Cyrano :wink:
Je voulais m'assurer que le nouveau tarif est bien mis en session....car je n'ai pas l'impression que ça soit le cas...que je me dirige vers ma page commande, l'ancien tarif de base est affiché.
<?php
			 // calcul du total avec ou sans code promo 
		    $total += $row_rsPanier['prix'] * $liste[$i][1]; }
    		if (isset($code)) 
    		{ 
        	$query_Chkdo = "SELECT prix_cadeau FROM chequecadeau  WHERE code = '".$code."'"; 
        	$Chkdo       = mysql_query($query_Chkdo, $connexion) or die(mysql_error()); 
        	$row_Chkdo   = mysql_fetch_assoc($Chkdo); 
        	$total      -=  $row_Chkdo['prix_cadeau']; 
    		} 
			$_SESSION['total'] = $total; //mémorise le total dans la session ?>
:-k