Vous n'êtes pas identifié(e).
bonjour a tous.
je n'ai pas beaucoup d'experience en programmation php et aujourd'hui je suis confronté a la réalisation d'une galerie d'articles genre e-commerce, mais je n'ai pas toutes les connaissances pour le faire.
j'ai déja récupéré le travail du site sur lequel je dois poser cette galerie,
j'ai donc des elements inscrits sur des .xml, sur lesquels je dois ajouter un bouton ajouter a ma commande, et aussi la quantité.
(cette partie la je la verrais apres)
et une page qui affichera mon caddi , j'ai créé un formulaire car le client ne veux pas de commerce mais une commande par mail.
dans ce formulaire j'ai ajouté un tableau qui , je voudrais, devrais afficher les objets choisis par le client.
extrait du code:
<table width="540" border="0" align="center">
<tr>
<td width="152"><div>
<div align="left">continuer la commande</div>
</div></td>
<td width="232"> </td>
<td width="134"><div align="right">envoyer</div></td>
</tr>
</table>
</form>
suis je sur la bonne voix ? (ca m'etonnerais)
Hors ligne
salut,
sur le principe, ça devrait être bon sauf :
- Pas de mailto dans l'action du formulaire, c'est une page php qui va envoyer l'email avec la fonction mail.
- pour le panier, soit tu met en session le panier soit tu créer une table mysql pour cela. en général la session suffit, il faut utiliser tableau du genre
$_SESSION['panier']['code article'] = quantité.
dans ce cas l'affichage se fait à partir du tableau de session et le calcul du prix avec mysql ou php comme tu veut.
ensuite il "suffit" d'envoyer le mail avec les info et les coordonnées du client.
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
alors, suite a ton message j'ai donc modifié mon code pour le mail.
ca marche, sauf que dans l'intitulé du message je souhaites recuperer les informations (nom, ville, code postal etc..) et que pour l'instant, je n'ai que le message tappé par le client.
[code =php]
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire =' *******************************************************************************************@orange.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail à échoué, veuillez réessayer SVP.";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"../Pages/Commande.php\">remplir le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$Adresse1= (isset($_POST['Adresse1'])) ? Rec($_POST['Adresse1']) : '';
$Adresse2= (isset($_POST['Adresse2'])) ? Rec($_POST['Adresse2']) : '';
$codepostal=(isset($_POST['codepostal'])) ? Rec($_POST['codepostal']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
if (($nom != '') && ($email != '') && ($ville != '') && ($Adresse1 != '') && ($codepostal != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="../Pages/Commande.php">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>[/code]
comment dois je m'y prendre pour integrer ces champs au corps du texte mesage ?
et aussi, je devrais surement m'y prendre de la meme maniere pour ajouter les choix fais sur le catalogue par le client ?
Hors ligne
heu tu sais utiliser tous ça ?
il te suffit de faire une concaténation de la pile d'information que tu sort du formulaire (lignes 67 à 75). idem avec les articles du panier qui sont en session et de tout mettre dans la variable $message, avant envoie du mail.
pour info str_replace accepte des tableaux en paramètre (exemple deux de la doc).
pourquoi remplacer une quote par une quote ? (ligne 86).
je pense qu'un htmlspecialchars_decode serait,peut être, plus indiqué pour ce que tu fait ?
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
non je fais du bricolage...
je suis graphiste a la base, j'ai aucun talent pour la programmation, si ce n'est que j'adapte le code deja existant et je modifies les parametres c'est tout.
je vais essayer de decripter ce que tu me racontes^^' ca semble evident mais je dois cogiter...
Hors ligne
conscient et honnête, ça change :D
a++
Hors ligne
héhé !
merci ^^':P
Hors ligne
pourquoi remplacer une quote par une quote ? (ligne 86).
je pense qu'un htmlspecialchars_decode serait,peut être, plus indiqué pour ce que tu fait ?
je n'ai pas la moindre idée de l'utilité de ces quelques ligne !! mdr !
non globalement ca doit remplacer des caracteres speciaux, mais je m'en sert pas specialement.
d'ailleurs a ce propos, j'ai pas réussi a faire apparaitre le é dans le mail il apparait sous la forme A@ ou un truc dans le genre....
bref peu importe, l'essentiel c'est que ca fonctionne, je vais pouvoir m'attaquer au dis panier.
tu dis:
- pour le panier, soit tu met en session le panier soit tu créer une table mysql pour cela. en général la session suffit, il faut utiliser tableau du genre
$_SESSION['panier']['code article'] = quantité.dans ce cas l'affichage se fait à partir du tableau de session et le calcul du prix avec mysql ou php comme tu veut.
alors ca veut dire quoi le mettre en session ?
je penses partir sur une bdd ca me parrait plus commode meme si jai jamais fais.
Dernière modification par blackant (04-11-2010 23:25:48)
Hors ligne
pour le caractère foireux c'est clairement un soucis d'encodage (utf-8 VS iso-machin ) vérifie ce que tu utilise sur ton éditeur, ce que tu met dans l’entête du mail etc). le plus simple est surement de le remplacer par un é je pense !
Pour les sessions le plus simples c'est d'ingurgiter le tuto http://phpdebutant.org/article69.php (indispensable pour bien piger la suite ).
Tu va avoir "besoin" de base de donnée pour gérer le catalogue (faut bien mettre ce que tu vend quelque part). Pour cela on utilise la base de donnée, mais pourquoi pas des fichiers (le 1er est "plus simple").
donc dans la session (la variable $_SESSION qui est un tableau) on met un tableau php ( qui va contenir lui même un tableau, ben oui un tableau de tableau de tableau ).
ça parait compliqué mais c'est simple :
- $_SESSION : variable globale qui contient tous ce que tu veut mettre en session
- $_SESSION['panier'] contient tous ce client achete
$_SESSION['panier'] contient un tableau indexé par la clef primaire de la table des produits (la clef primaire est un identifiant unique). la valeur sera la quantité que le client acheté.
imagine que tu soit marchand de primeur, tu aura dans la table mysql (ou autre) des pommes des poires etc
par exemple
clef | fruit
1 | Pomme
2 | Poire
3 | banne
4 | clémentine
5 | raisin
si le client achète 28 poires et 4 clémentines et 75 bannes le tableau sera
lorsque tu arrive sur la page de récapitulatif du panier il te faut récupérer les prix des éléments choisis par le client (les clefs du dernier tableau) et faire le calcul de chaque produit.
Ça peut paraitre compliqué mais si tu suis les tutos tu devrais comprendre
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
salut
merci pour les infos, c'est exactement ce que j'ai fais et ca fonctionne nikel!
par contee la ou je bloque maintenabt, c'est de faire varier le prix en fonction du nombre d'objets. c'est surement tres simple genr $total $prix * $ quantite); sauf que j'ai essayé et que sa me retourne 0 ou le chiffre de la quantité, bref pas la bonne syntaxe^^.
Hors ligne
Exemple de code pour avoir les prix avec les calcules et le total :
catch(Exception $e){
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
$bdd = null; // "déconnection" du sgbd, c'est crado je trouve ça !
?>
La table utiliser pour le test
voila commetnnt je ferais avec une table minimaliste a toi d'adapter.
@+
Ps : j'ai utiliser PDO pour tester mais tu fait comme tu veut hein :d
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
merci, je vais me pencher la dessus
Hors ligne
bon pour le moment j'ai pas encore capté ton truc de la session, j'y reviendrais plus tard (quand mon cerveau aura refroidi)
comment je dois faire pour creer un bouton "add to basket" qui soit inséré dans chaque tableau relatif a l'objet quand on clic dessus ?
je te mets le lien vers mon catalogue
http://www.espaceloisirs-56.com/Pages/BDD.php5
j'ai trouvé des scripts pour creer un panier mais il me retourne un message d'erreur.
Fatal error: Call to undefined function ajouterArticle() in /homez.20/espacelo/www/Pages/panier.php5 on line 37
ce qui donne:
ajouterArticle($l,$q,$p);
//récuperation des variables en POST ou GET
$l = (isset($_POST['l'])? $_POST['l']: (isset($_GET['l'])? $_GET['l']:null )) ;
$p = (isset($_POST['p'])? $_POST['p']: (isset($_GET['p'])? $_GET['p']:null )) ;
$q = (isset($_POST['q'])? $_POST['q']: (isset($_GET['q'])? $_GET['q']:null )) ;
Dernière modification par blackant (08-11-2010 13:46:14)
Hors ligne
au final j'ai trouvé trop de tutos sur comment creer un panier, mais je ne sais pas lequel suivre, ils sont tous a peu pret aussi mal expliqués les uns que les autres...
Hors ligne
bon, je commence a comprendre un peu mieux certains details mais la j'ai un petit soucis au niveau de la syntaxe.
je m'explique:
dans la boucle while, je demande a php de recuperer tout de la bdd.
elle affiche les infos et a chaque objet un bouton "ajouter au cadi".
ce dernier dois donc contenir un lien different pour chaque objet donc je souhaite ajouter l'id de l'objet (et c'est la que ca se complique, j'ai éssayé differentes manieres de l'ecrire mais non...)
le probleme est sur cette partie: href='Commande.php?prod=".$donnees['IDBDD']."'
le lien ne m'affiches pas le numero mais le code.ou alors si je remplace ' par " il m'affiche rien
Hors ligne
Salut blackant,
Moi je te propose un truc sympa, comme je suis une truffe en graphisme, nous pouvons faire un un échange.
Je te fais toute la programmation de ton site avec php Mysqlt avec une administration online de ton site et toi tu me refais le graphisme du mien qui est nul a chier ???
Denis
Hors ligne