peut on mettre un formulaire dans un formulaire ?

Eléphant du PHP | 254 Messages

02 avr. 2006, 14:09

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 ! :)
Modifié en dernier par coxine le 02 avr. 2006, 15:49, modifié 1 fois.

Mammouth du PHP | 19672 Messages

02 avr. 2006, 14:16

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

02 avr. 2006, 14:25

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:

Eléphant du PHP | 254 Messages

02 avr. 2006, 15:19

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:

Mammouth du PHP | 19672 Messages

02 avr. 2006, 15:54

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

02 avr. 2006, 16:20

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

Mammouth du PHP | 19672 Messages

02 avr. 2006, 16:36

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
//...
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

02 avr. 2006, 17:34

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:

Eléphant du PHP | 254 Messages

02 avr. 2006, 19:58

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 !

Mammouth du PHP | 19672 Messages

02 avr. 2006, 20:06

Teste donc ta requête SQL, j'ai dans l'idée qu'elle n'est pas exécutée du tout :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

02 avr. 2006, 20:13

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 ?

Mammouth du PHP | 19672 Messages

02 avr. 2006, 20:26

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
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

02 avr. 2006, 20:36

ç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

Eléphant du PHP | 254 Messages

07 avr. 2006, 14:50

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