PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-11-2010 12:47:56

blackant
Membre
Inscription : 03-11-2010
Messages : 25

besoin d'aide pour programmer un tableau dynamique

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:

<form method="post" action="mailto:[b]ATTENTION_AU_SPAM[/b].master@orange.fr?subject=commande Pieces espace loisirs" enctype="text/plain">
<table width="540" border="0" align="center">
  <tr>
    <td width="121"><div align="left">Désignation:</div></td>
    <td width="83"><div align="right">Prix:</div></td>
    <td width="133"><div align="right">Quantité:</div></td>
    <td width="20"> </td>
    <td width="80"><div align="right">Sous Total:</div></td>
    <td width="77"> </td>
  </tr>
  <tr>
    <td><div align="left"><?php $Design= $_POST[''] ?> </div></td>
    <td><div align="right"><?php $Prix= $_POST[''] ?></div></td>
    <td><div align="right"><?php $Qtit= $_POST[''] ?></div></td>
    <td> </td>
    <td><div align="right"><?php $Stotal= $_POST[''] ?></div></td>
    <td><div align="center"></div></td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td><div align="right"></div></td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td><div align="right"></div></td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td><div align="right">Total:</div></td>
    <td> </td>
    <td colspan="2"><div align="center"><?php $Total= $_POST[''] ?></div></td>
  </tr>
</table>


  <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

#2 03-11-2010 15:25:48

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : besoin d'aide pour programmer un tableau dynamique

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

#3 04-11-2010 14:04:45

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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

#4 04-11-2010 20:39:05

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : besoin d'aide pour programmer un tableau dynamique

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

#5 04-11-2010 21:39:57

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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

#6 04-11-2010 22:36:44

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : besoin d'aide pour programmer un tableau dynamique

conscient et honnête, ça change big_smile:D
a++

Hors ligne

#7 04-11-2010 22:40:13

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

héhé !
merci ^^':P

Hors ligne

#8 04-11-2010 23:18:59

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

moogli a écrit :

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

#9 05-11-2010 22:22:57

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : besoin d'aide pour programmer un tableau dynamique

pour le caractère foireux c'est clairement un soucis d'encodage (utf-8 VS iso-machin smile ) 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 wink).

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 smile ).
ç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

array
  'panier' =>
    array
      2 => int 28
      4 => int 4
      3 => int 75

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 wink

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#10 05-11-2010 23:34:10

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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 sad$prix * $ quantite); sauf que j'ai essayé et que sa me retourne 0 ou le chiffre de la quantité, bref pas la bonne syntaxe^^.

http://www.espaceloisirs-56.com/Pages/BDD.php5

Hors ligne

#11 06-11-2010 02:39:23

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : besoin d'aide pour programmer un tableau dynamique

Exemple de code pour avoir les prix avec les calcules et le total :


<?php
$_SESSION['panier'][1]=24;
$_SESSION['panier'][2]=9;
$_SESSION['panier'][3]=1981;
echo '<h1>Test</h1>';
try{
        $bdd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
        $requete = 'select id,description,prix from catalogue where id in('.implode(',',array_keys($_SESSION['panier'])).')';
        $res = $bdd->query($requete);
        echo '<table>
            <thead>
                <tr>
                    <th>id</th>
                    <th>Description </th>
                    <th>Prix unitaire</th>
                    <th>Quantité</th>
                    <th>Prix total</th>
                </tr>
            </thead>
            <tbody>'
;
        $total=0;
        while ( $data = $res->fetch(PDO::FETCH_OBJ)) {
            $p = $data->prix * $_SESSION['panier'][ $data->id ];
            echo '<tr>
                    <td>'
,$data->id,'</td>
                    <td>'
,$data->description,'</td>
                    <td>'
,$data->prix,'</td>
                    <td>'
,$_SESSION['panier'][ $data->id ],'</td>
                    <td>'
,$p,'</td>
                </tr>'
;
            $total += $p;
        }
        echo '</tbody>
            <tfoot>
            <tr>
            <td colspan="4" style="text-align:right;paddind-right:20px;">Total :</td>
            <td>'
,$total,'</td>
            </tr>
            </tfoot>'
;
        $res->closeCursor();
}

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


CREATE TABLE `catalogue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`prix` float NOT NULL,
`description` tinytext NOT NULL,
PRIMARY KEY (`id`)
ENGINE=MyISAM;

#Données de test
insert into catalogue (prix,description) values(28.2,'prems'),(50.0,'a 50'),(21,'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

#12 07-11-2010 08:39:11

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

merci, je vais me pencher la dessus 
wink

Hors ligne

#13 08-11-2010 10:34:34

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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

#14 08-11-2010 14:04:52

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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

#15 15-11-2010 15:16:41

blackant
Membre
Inscription : 03-11-2010
Messages : 25

Re : besoin d'aide pour programmer un tableau dynamique

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...)

   

<td colspan="2">
  <div align="right">
  <a href='Commande.php?prod=".$donnees['IDBDD']."'><img src="../images/cadi.png" alt="ajouter au cadi" width="24" height="22" /></a>
  </div>
    </td>

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

#16 23-11-2010 15:39:54

sidne
Membre
Inscription : 23-11-2010
Messages : 1

Re : besoin d'aide pour programmer un tableau dynamique

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

Pied de page des forums