[php/mysql pb] site vente en ligne

Fermé
fleur2 - 2 juin 2006 à 21:54
Zoromar Messages postés 2 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 11:59
Bonsoir

voila je fais actuellement un site de vente en ligne sous php et mysql et j'aimerai qu'on m'aide à trouver : voilà je ne sais pas comment faire pour ajouter des produits que les gens auront selectionné dans ma base de donnée et donc sur le panier d'achat (qui affiche selon la base de donnée les fiches sélectionné par l'acheteur).

les gens pour selectionnés mettent la quantité pour chaque produit que les gens veulent .. et en fait sa ajout zéro pour toutes mes variables dans ma base.

Voila si vous avez des conseils, Merci de me faire partager.
A voir également:

51 réponses

edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
21 juin 2006 à 14:50
REbonjour, en fait en meme temps que d'enregistrer les articles dans article_com, je voudrais enregistrer le login :

dans ajout_bd.php :
<?php 
include("vars.inc"); 
$cde=$_POST["cde"]; 

foreach ($cde as $art=>$donnees) 
{ 

$ref_art=$donnees["ref_art"];
$login=$donnees["login"];
$nom=$donnees["nom"];
$prix = $donnees["prix"]; 
$qtite_com = $donnees["qtite_com"]; 

if ($qtite_com) // si qté différente de zéro 
{ 

// Exécute une requête pour chaque article 
$req="INSERT INTO article_com(ref_art,login,nom,qtite_com,prix) VALUES('".$ref_art."','".$login."','".$nom."',".$qtite_com.",".$prix.") "; 

mysql_query($req) or die('erreur'); 

// On récupère le dernier nr de commande = lastinsert id LAST_INSERT_ID() syntaxe MySQL 
//$num_com =mysql_insert_id(); 
//echo"<br>Commande ".$num_com." créée";
} 
} 
include("sommaire4.php");
//include("formulaire_commande.html");
echo"<br>ajout effectuer"; 
?> 



Mais il n'en veut pas, alors que je l'ai rajouté dans ma table article_com..

et aprés dans mon panier je reteste la session et avec la requete :
$sql="SELECT article_com.num_com, ref_art, article_com.nom, prix, qtite_com
FROM utilisateur, article_com
WHERE utilisateur.login = article_com.login  ";


Cela me permet d'avoir les articles commandés par le login X et uniquement ses articles.

Voila.
Merci.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
21 juin 2006 à 21:31
Bsr

$access=(isset($panier["login"]) && ($panier["login"] != ""));

if (!$access)= "autrement" ..? 


D'où tu sors ce tableau $panier ? tu as changé le nom d'une variable dans tes pages ou bien s'agit-il seulement d'un exemple.

Je ne sais pas trop ce que tu entends par traduction en français : la signification du code ?


pour ta page ajout_bd.php : tu dois aller chercher le login dans la session et pas dans une variable de formulaire récupérée dans $_POST

Ce qui donne ajout_bd.php :

<?php 

// Ici on test de nouveau si l'utilisateur est connecté c'est plus sûr
include("verification_session.php");


// A partit d'ici on est sûr que l'utilisateur est connecté
$login=$_SESSION["login"];

include("vars.inc"); 
$cde=$_POST["cde"]; 

foreach ($cde as $art=>$donnees) 
{ 

$ref_art=$donnees["ref_art"];
$nom=$donnees["nom"];
$prix = $donnees["prix"]; 
$qtite_com = $donnees["qtite_com"]; 

if ($qtite_com) // si qté différente de zéro 
{ 

// Exécute une requête pour chaque article 
$req="INSERT INTO article_com(ref_art,login,nom,qtite_com,prix) VALUES('".$ref_art."','".$login."','".$nom."',".$qtite_com.",".$prix.") "; 

mysql_query($req) or die('erreur'); 

// On récupère le dernier nr de commande = lastinsert id LAST_INSERT_ID() syntaxe MySQL 
//$num_com =mysql_insert_id(); 
//echo"<br>Commande ".$num_com." créée";
} 
} 
include("sommaire4.php");
//include("formulaire_commande.html");
echo"<br>ajout effectuer"; 
?> 



Enfin ta requête SQL retourne tous les articles commandés par un utilisateur pour TOUTES ses commandes : bref s'il a passé 10 commandes dans l'année par ex tu auras les articles des 10 commandes confondus.

C'est ça que tu veux ?
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
22 juin 2006 à 21:13
Bonsoir, non, en fait je voudrais juste que dans le panier soit affiché les articles commandés par la personne qui ouvre sa session à ce moment là, et pas tout ces articles.

Merci,Bonne soirée.
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
24 juin 2006 à 18:19
Bonjour, en fait mon panier est faux, car en enregistrant trop tot dans la base de donnée je vais avoir des problèmes.

En fait, je me suis renseiller et il faut que je fasse avec la session :

session(panier)[][] => on m'a dit qu'il fallait que je fasse l'affichage du panier en tableau comme un espéce de matrice..

et donc pour ajouter les articles choisis par le loginX qui ouvre la session et les enregistrer aprés dans son panier de la session.

Mais la encore je sais pas comment on fait.

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
28 juin 2006 à 00:26
Hi Trinity,

Enter the MATRIX ... (LOL)

rappel :

PHP enregistre les sessions dans un tableau associatif nommé $_SESSION[]. C'est un tableau comme n'importe quel tableau PHP sauf qu'il est dit superglobal (car il est accessible depuis n'importe quel partie du code y compris à l'intérieur des fonctions et des méthodes d'objet sans déclaration particulière) au même titre que les tableaux $_POST[] ou $_GET[] entres autres.

Il existe quand même une différence de taille : le contenu du tableau $_SESSION[] est conservé sur le serveur entres les appels alors que normalement une fois la page php interprétée toutes les variables sont effacées. A la condition toutefois d'utiliser la fonction session_start()


la syntaxe pour manipuler le tableau $_SESSION[] est donc la même que pour manipuler une variable définie ainsi :
$mon_tableau = array();

Si tu écris :
$mon_tableau = array();
$mon_tableau ["panier"] = "demo";


alors echo var_dump($mon_tableau) affiche :

array(1) {
  ["panier"]=>
  string(4) "demo"
}


Maintenant si tu remplaces $mon_tableau par $_SESSION tu obtiens exactement la même chose (avec en plus la liste des variables déjà présentes dans le tableau $_SESSION bien sûr)

Dans un tableau associatif, tu peux mettre de simples chaînes de caractères comme "demo" mais aussi d'autres tableaux : c'est cette imbrication qui va donner la syntaxe que tu appelles la matrice ...


Ex
$_SESSION["panier"]=array(); 


Ajoute un tableau vide avec la clé panier (un tableau associatif associe toujours une clé à une valeur : cette valeur peut être un nombre, une chaîne, un tableau, un objet en PHP)

alors echo var_dump($_SESSION) affiche :

array(1) {
  ["panier"]=>
  array(0) {
  }
}


Maintenant tu as la possibilité d'écrire directement

$_SESSION["panier"]["Ref 1"]["prix"] = 10.5;
$_SESSION["panier"]["Ref 1"]["ref_art"] = "Ref article 1";
$_SESSION["panier"]["Ref 1"]["nom"] = "Désignation de l'article 1";


PHP va automatiquement créer les tableaux associatifs nécessaires (PHP créé automatiquement un tableau associatif comme valeur de la clé "panier" et un autre tableau associatif comme valeur de la clé "Ref 1")
ce qui donne :


array(1) {
  ["panier"]=>
  array(1) {
    ["Ref 1"]=>
    array(3) {
      ["prix"]=>
      float(10.5)
      ["ref_art"]=>
      string(13) "Ref article 1"
      ["nom"]=>
      string(26) "Désignation de l'article 1"
    }
  }
}



En fait cette syntaxe est là même que celle utilisé dans ta variable $cde de ta page ajout_test_panier1.php

Dans cette page tu peux d'ailleurs parfaitement écrire

$_SESSION["panier"]=$cde;



0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
28 juin 2006 à 07:58
salut PHP

je me glisse entre les messages pour te demander quelques petites choses

- aurait tu un site qui explique les tableaux (array) et le moyen d'en créer un multidimensionnel pour y inserer toutes les données d"une base SQL

-quelles sont toutes les choses a savoir pour inserer un systeme de paiement dans un site

- connais tu les tarifs pour la création d'un site web , soit a la page ou au forfait..


merci pour les eventuelles réponses
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
28 juin 2006 à 09:27
Salut antic80,

Pour les tableaux en PHP et plus généralement la syntaxe php je vais sur :
https://www.php.net/manual/fr/function.array.php

En plus c'est en francais que demander de plus ? Gagner la coupe du Monde ? ouais là faut pas trop rêver quand même ... LOL

Tu as un exemple de tableau à 2 dimensions.

Le truc à retenir c'est qu'en PHP les tableaux sont associatifs : chaque élément à une clé (ou index) associée à une valeur (au sens large : string, object, array etc ...) Le cas où la clé est un nombre (qui démarre à zéro) n'est qu'un cas particulier

Bref en PHP tu as le droit d'écrire

$tableau[0][0]="A0";
$tableau[0][1]="A1";
$tableau[1][0]="B0";
$tableau[1][1]="B1";

mais aussi

$tableau["A"][0]="A0";
$tableau["A"][1]="A1";
$tableau["B"][0]="B0";
$tableau["B"][1]="B1";


ou encore

$tableau["A"]["zéro"]="A0";
$tableau["A"]["un"]="A1";
$tableau["B"]["zéro"]="B0";
$tableau["B"]["un"]="B1";



Système de paiement en ligne : aucune idée
Je suppose qu'il faut passer par du https (page sécurisée) et s'abonner à un système bancaire quelconque et payant bien sûr pour les transactions (pas sûr que tu puisses en tant que particulier par ex)

Coût : ben ca dépend du site,, nombre de pages, complexité, technologie utilisée, design etc ...
Recherche "tarif site web" sur google tu auras ta réponse




0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
28 juin 2006 à 10:39
merci

pour les tableaux ce que je veux faire au juste c par exemple

j'ai une table avec les champs nom prenom

j'ai 2 enregistrements

Dupont Paul
Martin Luc

comment stocké ca dans un tableau avec PHP ? j'arrive pas a trouver d'exemple concret


pour les tarifs je ne trouve rien car toutes les sociétés ne proposent que des devis mais rien de bien explicite
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009
29 juin 2006 à 00:30
Le mieux serait de continuer cette discussion dans un autre post non ?


Sinon voici un ex que tu dois adapter :

<html>
<body>
<?php
// Connexion à MySQL

$cfg_server="localhost";  // Met ici l'adresse de ton serveur MySQL
$cfg_username="root";	  	
$cfg_password="";
$cfg_database="MABASE";  // Remplace MABASE par le nom de ta base de données


$config=true;

// Se connecte sur le serveur MySQL
$link=mysql_connect($cfg_server, $cfg_username, $cfg_password) or 
      die("Impossible de se connecter au serveur MySQL : ".$cfg_server);

// Sélectionne la base de données
$db=mysql_select_db($cfg_database, $link) or 
	die("Base de données ".$cfg_database." introuvable !");


// Prépare la requête SQL
$sql="SELECT * FROM MATABLE";  // Remplace MATABLE par le nom de ta table

// Exécute la requête
$result = mysql_query($sql,$link) or die(mysql_error());


// Déclare un tableau vide
$tableau = array();

// On charge chaque enregistrement retourné par la requête dans un tableau associatif temporaire (ici $row) qu'on
// copie ensuite dans notre tableau global $tableau
while ($row = mysql_fetch_assoc($result))
{
	$tableau[] = $row; // Difficile de faire plus simple !
}


// Libère la ressource (pas obligatoire car PHP le fait)
mysql_free_result($result);


// On test que tout est ok
echo "<pre>";
echo var_dump($tableau);
echo "</pre>";
?>
</body>
</html>



Au final dans $tableau on a :

$tableau[0][champ_0] = ...
$tableau[0][champ_1] = ...
...
$tableau[0][champ_N] = ...

$tableau[1][champ_0] = ...
$tableau[1][champ_1] = ...
...
$tableau[1][champ_N] = ...


$tableau[M][champ_0] = ...
$tableau[M][champ_1] = ...
...
$tableau[M][champ_N] = ...


ca te va ?

Attention cependant à ce que ta requête ne retourne pas trop de lignes !
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159 > PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
29 juin 2006 à 09:13
et si je veux afficher que la 1ere ligne du tableau je met koi

echo $tableau[0];

j'ai mis ca mais ca me retourne Array
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
29 juin 2006 à 14:59
Bjr

C'est normal étant donné que $tableau[0] contient un ... tableau.


Pour afficher $tableau[0] tu peux faire :

echo "nom=".$tableau[0]["nom"];
echo "prenom=".$tableau[0]["prenom"];


Maintenant si tu veux afficher tous les champs contenus dans $tableau[0] sans les nommer tu fais :

foreach ($tableau[0] as $key=>$value)
{
echo $key."=".$value;
}



Pour afficher toutes les lignes du tableau $tableau

for ($i=0; $i < count($tableau); $i++)
{
  foreach ($tableau[$i] as $key=>$value)
  { 
    echo $key."=".$value;
  }
}


0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159 > PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
29 juin 2006 à 15:27
ok je devrais m'en sortir

merci
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
28 juin 2006 à 18:58
J'ai essayé ton code et essayé de faire selon mes variables, mais marche pas.

En fait, je voudrai enregistré les articles de l'utilisateur =login qui ouvre sa session, dans sa session, j'ai remarqué que je suis obligée de faire comme ça.

Et donc lorsqu'il a selectionné un article et clique sur ajout ds bd= dans panier je veux que ça l'enregistre dans son panier session à lui et donc faire une espèce de matrice..lol comme t'as dit.. et aprés lorsque que l'utilisateur=login qui a ouvert sa session et qu'il clique sur Voir panier je veux que ça lui affiche tous les articles qu'il a ajouté dans son panier, et donc ceux qu'il a sélectionné..

donc matrice obligé mais la ce que tu me donnes c'est plus pour voir panier et il me manque l'enregistrement des articles dans ce panier... donc voila mon soucis..



voila ce que sa donné ton changement de code.. mais faux :

<?
// afficher et enregistrer les articles sélections pas l'utilisateur de la session 
//$_SESSION['login']=$cde; 

//$_SESSION['login']=array();

//$_SESSION['login']= array ("ref_art" =>"ref_art","prix" =>"prix","nom" =>"nom");
$_SESSION["login"]=array(); 
 echo  var_dump($_SESSION);
echo'<br>';

$_SESSION['login']["ref_art"]["prix"] =$prix; 
$_SESSION['login']["ref_art"]["ref_art"] =$ref_art; 
$_SESSION['login']["ref_art"]["nom"] =$nom; 


?>


Merci d'avance
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
28 juin 2006 à 23:45
Bonsoir,

Effectivement c'est faux ... Le login n'a rien à faire ici.

Sache qu'une session différente et indépendante est créée sur le serveur pour chaque utilisateur.

Si 2 utilisateurs se connectent en même temps , ils ont chaucun leur propre session.


Essai en modifiant la page ajout_test_panier1.php
comme ceci :

<html>
<body>
<?php
	//vérifier la connection de la session : login + mdp correctes 
	include("verification_session.php");
	echo "Votre login est ".$_SESSION["login"]."<br />";
?>

<?

// Vide le panier
if (isset($_SESSION["panier"])) $_SESSION["panier"]=null;

$cde=$_POST["cde"]; 

// Test si au moins 1 article est commandé 
$ok = false; 
foreach ($cde as $art=>$donnees) 
{ 
	$qtite_com = $donnees["qtite_com"]; 
	if ($qtite_com) 
	{ 
		$ok = true; // on a au moins 1 article en cde 
		break; // on sort de la boucle : pas la peine de continuer les tests 
	} 
} 

if ($ok) // Si au moins 1 article en cde 
{ 
	echo'<form action="ajout_bd.php" method="POST">';
	echo "<u>Contenu de votre panier</u> : <br><br>"; 
	foreach ($cde as $art=>$donnees) 
	{ 
		$ref_art=$donnees["ref_art"];
		$nom=$donnees["nom"];
		$prix = $donnees["prix"]; 
		$qtite_com = $donnees["qtite_com"]; 
		if ($qtite_com) 
		{ 
			// On sauve les infos sur l'article commandé dans le panier
			$_SESSION["panier"][$art]=$donnees;


			echo "<table><tr><td>Référence d'article :$ref_art<input name='cde[".$ref_art."][ref_art]' type='hidden' value=$ref_art></td></tr>"; 

			echo "<tr><td>Nom :$nom<input name='cde[".$ref_art."][nom]' type='hidden' value=$nom></td></tr>"; 

			echo "<tr><td>Quantité :<input name='cde[".$ref_art."][qtite_com]' type='text' value=$qtite_com></td></tr>";

			echo "<td>Prix : $prix<input name='cde[".$ref_art."][prix]' type='hidden' value=$prix></td></tr></table>";

		} 
	} 

	echo '<td align=right><input type="submit" name="save" value="Ajouter articles dans bd"></td></tr></form>';

	echo "<td align=right><form action='sommaire4.php'  method='POST'><input type='submit' value='Poursuivre Achats'></form>";
} 
else 
{ 
	echo "Votre panier est vide !<br />"; 
} 
?>
</body>
</html>



PS : Follow the white rabbit
0
j'ai un problème dans la partie "langage php" et "connexion à la base de donnée MySql" avec l'utilisation "d'un serveur local "Apache".SVP, envoyer moi quelques exemples si vous avez:html+php(formulaire_identification_client,formulaire contacter_moi....) ; veuiller recevoir mes sincères respects. Merci...
0
Zoromar Messages postés 2 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
29 janv. 2008 à 15:30
bonjour a toutes et a tous
je suis entrain dedevelloper un site vente en ligne et j'ai un probleme avec mon panier, chaque fois que je supprime ça me supprime selement le dernier si comme à chaque fois c 20-1=19.
j'arrive pas à trouver la ou ça coince, merci de votre aide....


// Controle si on veut supprimer l'article
if (isset($_GET['suppr']))
{
$y = $_GET['suppr'];
$_SESSION['nb_produit']--;
unset($_SESSION['id_' . $y],$_SESSION['type_' . $y],$_SESSION['qte_' . $y]);
}
0
Zoromar Messages postés 2 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
30 janv. 2008 à 11:59
rebonjour encore il ya personne pour m'eclairer svp un petit peu ça fait un moment que je cherche et pas de solution,
helpppppppppp please.
0