Php et mysql dans une fonction javascript
Fermé
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
-
16 avril 2008 à 23:21
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 23 mai 2008 à 13:21
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 23 mai 2008 à 13:21
A voir également:
- Javascript et mysql
- Telecharger javascript - Télécharger - Langages
- Mysql community server - Télécharger - Bases de données
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
- Node.js javascript runtime virus ✓ - Forum Virus
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
29 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
16 avril 2008 à 23:26
16 avril 2008 à 23:26
salut,
Javascript s'exécute en local (sur le PC du visiteur) PHP s'exécute sur le serveur, donc une fois la page chargé ce sont deux sphères distinctes.
le seul élément qui permette de communiquer entre les deux sans recharger entièrement la page c'est l'objet 'XMLHTTPRequest', on parle en générale d'Ajax.
en premier, mieux vaut lire des tutos.
Javascript s'exécute en local (sur le PC du visiteur) PHP s'exécute sur le serveur, donc une fois la page chargé ce sont deux sphères distinctes.
le seul élément qui permette de communiquer entre les deux sans recharger entièrement la page c'est l'objet 'XMLHTTPRequest', on parle en générale d'Ajax.
en premier, mieux vaut lire des tutos.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
17 avril 2008 à 11:23
17 avril 2008 à 11:23
salut,
sur le <input> dans lequel on saisit la référence tu codes l'évènement 'onchange'.
à chaque saisie ou plutôt quand la taille du texte saisi atteint la longueur équivalant à une référence tu envoies une requête à ton serveur avec 'XMLHTTPRequest'.
sur le serveur tu effectues ta requête MySQL et tu ne renvoies QUE le petit morceau de HTML qui servira à afficher le détail de l'article.
ensuite Javascript reçoit la réponse et affiche le détail de l'article au bon endroit dans ta page originelle.
sur le <input> dans lequel on saisit la référence tu codes l'évènement 'onchange'.
à chaque saisie ou plutôt quand la taille du texte saisi atteint la longueur équivalant à une référence tu envoies une requête à ton serveur avec 'XMLHTTPRequest'.
sur le serveur tu effectues ta requête MySQL et tu ne renvoies QUE le petit morceau de HTML qui servira à afficher le détail de l'article.
ensuite Javascript reçoit la réponse et affiche le détail de l'article au bon endroit dans ta page originelle.
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
17 avril 2008 à 23:22
17 avril 2008 à 23:22
MERCI pour m'avoir répondu, j'ai planché sur le problème toute la journée et j'avoue je suis complètement perdu , j'ai travaillé une fois sur un applicatif de commande et je me rappel que la page se régénérait une fois que la référence et la taille étaient saisie cela donné un affichage des détails du produit saisie et le champs vide passait en dessous , aurais tu une idée sur le script a utiliser stp? 100000000000000000 Merci
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
18 avril 2008 à 20:47
18 avril 2008 à 20:47
salut,
regarde cette intro, ce tuto et vois si ça peut coller avec ce que tu veux faire.
après on pourra voir comment il faut adapter la technique pour ton problème.
regarde cette intro, ce tuto et vois si ça peut coller avec ce que tu veux faire.
après on pourra voir comment il faut adapter la technique pour ton problème.
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
18 avril 2008 à 21:02
18 avril 2008 à 21:02
Merci pour le tuto :) je suis en train de le lire et cela m'a l'air très intéressant,pour le moment ce que j'ai compris c'est que je peux faire une page .php dedans il y aura le traitement ( vérification ) et il suffit d'appeler cette page a chaque fois que ma fonction qui crée un nouveau champs est appelé ? c'est plus ou moins ça ?
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
23 avril 2008 à 02:13
23 avril 2008 à 02:13
Salut , tu as jeté un coup d'œil sur le code ? franchement ca commence a me prendre la tête :( chaque fois que je résous un truc il y en a un autre qui me bloque,j'ai vérifié une dizaine de fois mais je trouve toujours pas pourquoi ca marche pas , tu peux m'aider s'il te plait ? Merci d'avance
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
18 avril 2008 à 21:49
18 avril 2008 à 21:49
le principe est bête comme chou.
pour changer le contenu d'une page, normalement tu es obligé de recharger la page en entier pour interroger à nouveau le serveur.
à côté de ça, tu sais qu'avec Javascript et le DOM on peut modifier un document HTML mais uniquement en local.
tu ne peux afficher une donnée que si elle est déjà contenue dans la page ou si tu l'obtiens avec JS (hormis les animations et les calculs, pas grand chose à faire…).
mais JS expose un objet qui permet d'interroger le serveur et de traiter sa réponse.
donc avec Javascript tu va exécuter une requête sur ton serveur et pouvoir afficher sa réponse (ou réagir à sa réponse en masquant ou affichant un élément par exemple).
donc tu as bien compris !!!
• un évènement HTML appelle une fonction JS
• la fonction exécute une requête sur le serveur et attends la réponse
• une autre fonction JS reçoit la réponse et la traite (donc peut modifier le document HTML originel)
pour changer le contenu d'une page, normalement tu es obligé de recharger la page en entier pour interroger à nouveau le serveur.
à côté de ça, tu sais qu'avec Javascript et le DOM on peut modifier un document HTML mais uniquement en local.
tu ne peux afficher une donnée que si elle est déjà contenue dans la page ou si tu l'obtiens avec JS (hormis les animations et les calculs, pas grand chose à faire…).
mais JS expose un objet qui permet d'interroger le serveur et de traiter sa réponse.
donc avec Javascript tu va exécuter une requête sur ton serveur et pouvoir afficher sa réponse (ou réagir à sa réponse en masquant ou affichant un élément par exemple).
donc tu as bien compris !!!
• un évènement HTML appelle une fonction JS
• la fonction exécute une requête sur le serveur et attends la réponse
• une autre fonction JS reçoit la réponse et la traite (donc peut modifier le document HTML originel)
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
18 avril 2008 à 22:09
18 avril 2008 à 22:09
Normalement c'est bon :) je m'y mets tout de suite , je vais en premier faire une page .php qui va faire ( comme dans le cours que tu m'as passé ) la connexion avec la Base de données, la recherche et l'extraction du résultat.
Et dans ma page principale je vais mettre le code pour l'ajax et une fonction qui va traiter le résultat retourné ( soit un message d'erreur si la référence n'existe pas soit un affichage des données si elle existe ) j'espere etre sur la bonne voie ?
merci beaucoup tu me sauve la vie
Et dans ma page principale je vais mettre le code pour l'ajax et une fonction qui va traiter le résultat retourné ( soit un message d'erreur si la référence n'existe pas soit un affichage des données si elle existe ) j'espere etre sur la bonne voie ?
merci beaucoup tu me sauve la vie
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
19 avril 2008 à 11:51
19 avril 2008 à 11:51
Bonjour, je suis encore entrain d'essayer avec le xmlhhtprequest et ca commence a me prendre la tète :( je voulais te poser une question , j'ai déjà vu une page comme celle que je veux faire mais sans ajax,et la page se régénérait a chaque validation de champs , je me demandais comment c'était possible ? car du moment qu'on dépassait les 20 saisie ( 20 champs complétés) après chaque validation on restait sur la même page tout en faisant le traitement sur ce qui avait été entré dans le champs ( c'est a dire affichage ) et apparition d'un nouveau champs a compléter .désole si mon explication n'est pas assez claire . merci si tu as une idée sur comment ça marchait cela pourrait m'aider .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
19 avril 2008 à 12:07
19 avril 2008 à 12:07
salut,
tu peux tout faire en PHP en rechargeant entièrement ta page.
à chaque validation tu envoies les données au serveur qui les traite puis renvoie ce qu'il faut dans la page HTML.
mais qu'est ce qui bloque avec Ajax ?
tu peux tout faire en PHP en rechargeant entièrement ta page.
à chaque validation tu envoies les données au serveur qui les traite puis renvoie ce qu'il faut dans la page HTML.
mais qu'est ce qui bloque avec Ajax ?
Salut,mon soucis avec AJAX c'est que je ne trouve pas comment coder ce qu'il faut faire avec le resultat c'est a dire cette partie dans l'exemple que tu m'as donné hier
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('livre').innerHTML = leselect;
}
}
quand au fait de tout faire avec php , pourquoi avoir besoin d'une page html ? puisque les resultat vont m'etre retourné sur la meme page ou il y'avait le champs a completer (php) parceque comme je l'ai expliqué normalement je dois rester sur la meme page et a chaque affichage le champ qui me permet de saisir les donnes descend en desosus de la reference qui vient de s'afficher,je pense que mon explication est un peu flou mais j'espere que tu as compris
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('livre').innerHTML = leselect;
}
}
quand au fait de tout faire avec php , pourquoi avoir besoin d'une page html ? puisque les resultat vont m'etre retourné sur la meme page ou il y'avait le champs a completer (php) parceque comme je l'ai expliqué normalement je dois rester sur la meme page et a chaque affichage le champ qui me permet de saisir les donnes descend en desosus de la reference qui vient de s'afficher,je pense que mon explication est un peu flou mais j'espere que tu as compris
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
19 avril 2008 à 14:36
19 avril 2008 à 14:36
salut,
ton script PHP qui traite la requête envoyée par JS doit retourner du HTML.
ce HTML c'est ce que tu veux afficher sur ta page déjà ouverte.
si tu veux ajouter un champ il faut renvoyer quelque chose du genre
comme ça tafonction 'go()' va l'insérer dans l'élément 'livre'
quand au fait de tout faire avec php , pourquoi avoir besoin d'une page html ?
tu utilises toujours du HTML !
le différence avec PHP c'est qu'il modifie le HTML en fonction du contexte.
normalement je dois rester sur la meme page et a chaque affichage le champ qui me permet de saisir les donnes descend en desosus de la reference qui vient de s'afficher
la question est de savoir est-ce que tu veux recharger la page en entier ou seulement modifier une partie de la page sans recharger la page elle-même.
ton script PHP qui traite la requête envoyée par JS doit retourner du HTML.
ce HTML c'est ce que tu veux afficher sur ta page déjà ouverte.
si tu veux ajouter un champ il faut renvoyer quelque chose du genre
<input type="text" name="myname" />
comme ça tafonction 'go()' va l'insérer dans l'élément 'livre'
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200)
{
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('livre').innerHTML = leselect;
}
}
quand au fait de tout faire avec php , pourquoi avoir besoin d'une page html ?
tu utilises toujours du HTML !
le différence avec PHP c'est qu'il modifie le HTML en fonction du contexte.
normalement je dois rester sur la meme page et a chaque affichage le champ qui me permet de saisir les donnes descend en desosus de la reference qui vient de s'afficher
la question est de savoir est-ce que tu veux recharger la page en entier ou seulement modifier une partie de la page sans recharger la page elle-même.
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
19 avril 2008 à 16:24
19 avril 2008 à 16:24
le fait de recharger ma page en entier ne va servir qu'a la vérification (accès a la BD ) et a l'affichage . je sais qu'on peut faire ça avec AJAX mais puisque c'est aussi possible en restant avec le php et en rechargeant toute la page c'est pas grave .j'ai déjà une fonction qui me sert a afficher un nouveau champ,il me reste plus qu'a inclure un rechargement de la page en même temps puisqu'on affiche un nouveau champ que si celui d'avant est rempli tu vois ce que je veux dire ?
Je pense donc qu'il faut mettre en haut du script de la page PHP une fonction qui en premier lieu vérifie si le champ est plein , si il est plein elle accède a la BD pour la vérification un truc du genre .tu pense que c'est faisable ?
Merci encore
Je pense donc qu'il faut mettre en haut du script de la page PHP une fonction qui en premier lieu vérifie si le champ est plein , si il est plein elle accède a la BD pour la vérification un truc du genre .tu pense que c'est faisable ?
Merci encore
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
19 avril 2008 à 16:37
19 avril 2008 à 16:37
oui.
avec un truc du genre
avec un truc du genre
<?php if( strtolower( $_SERVER['REQUEST_METHOD'] ) === 'post' ) { //la page est appelée depuis le formulaire qui a été "posté" if( filter_has_var( INPUT_POST , 'champ' ) ) { // une valeur a été envoyée par la zone se saisie } } ?> <form action="tonscript.php" method="post"> <p> <input name="champ" type="text" /> </p> </form>
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
19 avril 2008 à 17:17
19 avril 2008 à 17:17
j'ai une idée pour le script dis moi ce que tu en pense
je code une page traitement.php
Cette page reçoit une référence et fait le traitement dessus, elle reçoit la référence par la méthode POST
1-Donc il faut d abord extraire la référence envoyé
2-Recherche dans la base ( connexion à la BD,requête ... )
3-Mettre le résultat dans une variable ( FALSE) si elle n'existe pas et mettre les données du produit si elle existe
4-Puis elle renvoie le résultat a la page formulaire.php
Et une page formulaire.php
1-il y aura le champ a compléter dans une formulaire <form methode="Post" action="traitement.php">
C'est la que ça coince un peu,car je veux pas que l'autre page s'affiche,je me dis donc pourquoi ne pas passer la référence dans une cession qui sera extraite par la page traitement.php ? Je pense que mon idée est un peu bizarre et ce n'est pas surement pas la meilleure je serais intéressé par ta critique ou toute autre idée.
je code une page traitement.php
Cette page reçoit une référence et fait le traitement dessus, elle reçoit la référence par la méthode POST
1-Donc il faut d abord extraire la référence envoyé
2-Recherche dans la base ( connexion à la BD,requête ... )
3-Mettre le résultat dans une variable ( FALSE) si elle n'existe pas et mettre les données du produit si elle existe
4-Puis elle renvoie le résultat a la page formulaire.php
Et une page formulaire.php
1-il y aura le champ a compléter dans une formulaire <form methode="Post" action="traitement.php">
C'est la que ça coince un peu,car je veux pas que l'autre page s'affiche,je me dis donc pourquoi ne pas passer la référence dans une cession qui sera extraite par la page traitement.php ? Je pense que mon idée est un peu bizarre et ce n'est pas surement pas la meilleure je serais intéressé par ta critique ou toute autre idée.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
19 avril 2008 à 20:04
19 avril 2008 à 20:04
je pense comprendre ce que tu veux faire.
ce que je ne saisis pas c'est ce que tu veux dire par 4-Puis elle renvoie le résultat a la page formulaire.php
comme tu vas appeler le serveur à chaque fois, tu peux tout faire dans la même page.
il suffit de tester d'où vient la requête.
que penses-tu de ce scénario (suis la logique et ne lis pas ligne après ligne, c'est plus simple) ?
ce que je ne saisis pas c'est ce que tu veux dire par 4-Puis elle renvoie le résultat a la page formulaire.php
comme tu vas appeler le serveur à chaque fois, tu peux tout faire dans la même page.
il suffit de tester d'où vient la requête.
que penses-tu de ce scénario (suis la logique et ne lis pas ligne après ligne, c'est plus simple) ?
si ( il y a des données envoyées par POST ) // la requête provient de cette même page qui a déjà été affichée { si ( les données viennent du 2me formulaire ) { tu traites les données // inserion base de données ou autre; } sinon si ( les données viennent du 1er formulaire ) { tu traites les données pour savoir si elles sont conforme au format d'un id; // sécurité et optimisation, ne pas interroger la base pour des prunes si ( les données sont au bon format ) { interrogation de la base pour savoir si l'id existe dans la base; si ( l'id existe ) { extraction des données relatives à l'id; affichage du 2me formulaire et des données relatives à l'id; } sinon // pas d'identifiant correspondant dans la base { ré-afficher le 1er formulaire et un message "pas d'enregistrement correspondant dans la base"; } } sinon // erreur de saisie { ré-afficher le 1er formulaire et un message "l'id fourni n'est pas au bon format"; } } sinon // au cas où { affichage du 1er formulaire vide; } } sinon // la requête vient d'une autre page, situation initiale { affichage du 1er formulaire vide; }
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
19 avril 2008 à 23:44
19 avril 2008 à 23:44
slt, je comprend pas pourquoi tu me parle de deux formulaires ? il y en a un seul celui ou on saisit la référence,et puisque tout peut de faire en une seule page c'est plus facile. dis moi ce que tu pense de ce scénario, je te donne comment je vois le script
1- au début de ma page je commence par extraire les données envoyé par POST ( bien sur je vérifie que c'est pas vide )
2- Je fais ma vérification (connexion à la BD et recherche selon la référence transmise par POST)
3- je traite le résultat de ma recherche * Si non trouvé affichage message d'erreur * Si trouvé je l'affiche avec le reste des données concernant le produit ( couleur,prix...) dans un tableau invisible ordonné par id ( pour éviter d'écraser une référence déjà enregistré )
5- formulaire qui me permet de saisir ma référence avec action ="lamemepage.php"
Bon reste a mettre le input du formulaire dans le même tableau pour que chaque fois il descend en dessous de la référence affiché si tu vois ce que je veux dire
Alors qu'en pense tu ?
1- au début de ma page je commence par extraire les données envoyé par POST ( bien sur je vérifie que c'est pas vide )
2- Je fais ma vérification (connexion à la BD et recherche selon la référence transmise par POST)
3- je traite le résultat de ma recherche * Si non trouvé affichage message d'erreur * Si trouvé je l'affiche avec le reste des données concernant le produit ( couleur,prix...) dans un tableau invisible ordonné par id ( pour éviter d'écraser une référence déjà enregistré )
5- formulaire qui me permet de saisir ma référence avec action ="lamemepage.php"
Bon reste a mettre le input du formulaire dans le même tableau pour que chaque fois il descend en dessous de la référence affiché si tu vois ce que je veux dire
Alors qu'en pense tu ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
19 avril 2008 à 23:55
19 avril 2008 à 23:55
pour les deux formulaires, je pensais que tu voulais d'abord chercher une référence puis pouvoir faire quelque chose avec (ajout/modification/suppression).
mais ce n'est pas grave, un ou deux formulaires, le principe est le même.
pour ton scénario, je suis tout à fait ok, juste que en affichant l'erreur il faut aussi remettre le formulaire pour que le visiteur puisse retenter sa chance.
et je ne comprends pas ce que tu veux faire avec l'affichage du détail de l'article :
Si trouvé je l'affiche avec le reste des données concernant le produit ( couleur,prix...) dans un tableau invisible ordonné par id ( pour éviter d'écraser une référence déjà enregistré )
pourquoi un tableau invisible ordonné par id ?
mais ce n'est pas grave, un ou deux formulaires, le principe est le même.
pour ton scénario, je suis tout à fait ok, juste que en affichant l'erreur il faut aussi remettre le formulaire pour que le visiteur puisse retenter sa chance.
et je ne comprends pas ce que tu veux faire avec l'affichage du détail de l'article :
Si trouvé je l'affiche avec le reste des données concernant le produit ( couleur,prix...) dans un tableau invisible ordonné par id ( pour éviter d'écraser une référence déjà enregistré )
pourquoi un tableau invisible ordonné par id ?
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 00:04
20 avril 2008 à 00:04
le fait est que le client lorsqu'il tape une référence si elle est exacte on doit lui afficher a quoi cela correspond ( pour plus de détails ce que je suis entrain de faire va servir a passer des commandes par téléphone c'est a dire qu'un client appel un conseiller , il lui donne ses références et le conseiller les enregistre, même si il y a pas d'erreurs sur ce qu'il lui indique , le conseiller doit reformuler les articles commandés par le client( donc vous avez commandé un jean référence 1234567 en bleu a 18€ ) pour être sure qu'il ne c'est pas trompè ) tu vois pourquoi il faut faire l'affichage ? en plus il faut ordonner cela dans un tableau car il faut prévoir le cas ou le client commande plusieurs articles, ce qui fait qu'on aura plusieurs affichages successifs. C'est plus clair ? je pense qu'il faut un tableau où chaque référence enregistré et affiché prendrait une case et ou le champ de saisie prendra automatiquement la case vide juste en dessous
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 00:16
20 avril 2008 à 00:16
ah oki !
c'est comme un panier virtuel mais sans le paiement en fait ?!
tes articles tu peux les stocker dans une variable de session (unique pour chaque visiteur).
une variable de session peut être un tableau donc tu pourrais faire '$_SESSION['commande']' pour stocker les données.
à chaque article choisis, tu ajoutes un item au tableau en mettant l'id de l'article en clé et le détail de l'article en valeur.
comme il s'agit d'une session il faut sérialiser les données que tu vas entrer en valeur.
ça correspond à ce que tu veux faire ?
c'est comme un panier virtuel mais sans le paiement en fait ?!
tes articles tu peux les stocker dans une variable de session (unique pour chaque visiteur).
une variable de session peut être un tableau donc tu pourrais faire '$_SESSION['commande']' pour stocker les données.
à chaque article choisis, tu ajoutes un item au tableau en mettant l'id de l'article en clé et le détail de l'article en valeur.
comme il s'agit d'une session il faut sérialiser les données que tu vas entrer en valeur.
<?php $id = 'blabla' // tu as récupéré l'id $detail = array( 'taille' => '38' , 'couleur' => 'bleu' , 'prix' => '18' ); //tu as récupéré les infos et les stockes dans un tableau $_SESSION['commande'][$id] = serialize( $detail ); // tu stockes les infos dans la session, tu pourras en faire ce que tu en veux de page en page ?>
ça correspond à ce que tu veux faire ?
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 00:24
20 avril 2008 à 00:24
oui c'est ça,pour le paiement ça va venir après sur une autre page, au fait il y a une page pour identifier le client , une autre pour son code remise, une pour enregistrer ses références, une pour son choix de livraison, une pour le paiement ( a reception seulement ) et une pour la synthèse( montant total ) puis tous les détails sont enregistrés dans un fichier. Au fait c'est un projet de fin d'études
Donc tu es d accord avec moi que la solution pour garder chaque référence enregistré sur la page même après l'avoir rechargé est d'utiliser un tableau ?
Donc tu es d accord avec moi que la solution pour garder chaque référence enregistré sur la page même après l'avoir rechargé est d'utiliser un tableau ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 00:30
20 avril 2008 à 00:30
Au fait c'est un projet de fin d'études
rolala mais t'es bargeot !!!
-;o)
d'autant plus si tu veux gérer le paiement !!!
tu te rends compte de l'usine à gaz que ça représente ?!
et niveau sécurité il faut être au top !!!
Donc tu es d accord avec moi que la solution pour garder chaque référence enregistré sur la page même après l'avoir rechargé est d'utiliser un tableau ?
le problème n'est pas tellement que ce soit un tableau ou pas mais plutôt sous quelle forme tu le rends persistant (fichier, bdd, session).
dans le cas d'une boutique je me demande si il faudrait pas en plus sécuriser ta session, tu attaques un gros morceau !!!
rolala mais t'es bargeot !!!
-;o)
d'autant plus si tu veux gérer le paiement !!!
tu te rends compte de l'usine à gaz que ça représente ?!
et niveau sécurité il faut être au top !!!
Donc tu es d accord avec moi que la solution pour garder chaque référence enregistré sur la page même après l'avoir rechargé est d'utiliser un tableau ?
le problème n'est pas tellement que ce soit un tableau ou pas mais plutôt sous quelle forme tu le rends persistant (fichier, bdd, session).
dans le cas d'une boutique je me demande si il faudrait pas en plus sécuriser ta session, tu attaques un gros morceau !!!
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 00:35
20 avril 2008 à 00:35
:) t'inquiète pas le site est fictif ;) il doit juste tourner , je sais que c'est très difficile rien que coté sécurité c'est énorme .
il ne sera jamais mis sur le net,c'est juste un projet personnel que j'ai choisi de réaliser, en tout les cas tu es d accord avec ce que je t'ai dit ?
il ne sera jamais mis sur le net,c'est juste un projet personnel que j'ai choisi de réaliser, en tout les cas tu es d accord avec ce que je t'ai dit ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
>
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
20 avril 2008 à 00:39
20 avril 2008 à 00:39
il ne sera jamais mis sur le net,c'est juste un projet personnel que j'ai choisi de réaliser
dans ce cas, VAS Y A FOND !!!
tu es d accord avec ce que je t'ai dit
ouais en gros mais je ne suis pas une référence en la matière !
mais si tu as besoin de conseil, tu sais où me trouver.
tu es au point côté technique ?
session, tableaux et même les bases de PHP ?
c'est important pour pouvoir réfléchir sérieusement à la solution à apporter.
autre chose, j'espère que tu codes avec la dernière version de PHP !!!
dans ce cas, VAS Y A FOND !!!
tu es d accord avec ce que je t'ai dit
ouais en gros mais je ne suis pas une référence en la matière !
mais si tu as besoin de conseil, tu sais où me trouver.
tu es au point côté technique ?
session, tableaux et même les bases de PHP ?
c'est important pour pouvoir réfléchir sérieusement à la solution à apporter.
autre chose, j'espère que tu codes avec la dernière version de PHP !!!
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
20 avril 2008 à 00:44
20 avril 2008 à 00:44
Merci vraiment tu me remonte le moral , pour php j'utilise la dernière version ( php 5) et question code j'apprends comme tout le monde ;)
j'essaie de faire un truc pas trop compliqué c'est pour cela que j'ai préféré laisser tomber AJAX , je commence a coder la page références et j'espère ne te la montrer que pour te dire voila ça marche et non pas le contraire :) allez je m'y met
j'essaie de faire un truc pas trop compliqué c'est pour cela que j'ai préféré laisser tomber AJAX , je commence a coder la page références et j'espère ne te la montrer que pour te dire voila ça marche et non pas le contraire :) allez je m'y met
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 00:54
20 avril 2008 à 00:54
allez, derniers conseils !
• commence par bien gérer l'identification sur toutes tes pages, que tu puisses être sûr que ce que tu affiches va à un utilisateur identifié ou non.
• crées tes propres classes, tes propres objets. le modèle objet est obligatoire pour ce genre de projet.
• ne fais jamais (mais alors jamais) confiance à tout ce qui peut provenir de l'utilisateur.
tout ce qui rentre comme paramètre est nettoyé avec 'filter()', tout ce qui est envoyé pour affichage à l'utilisateur est
protéger par 'htmlentities()' (ou équivalent, même ce qui sort de la bdd), tout ce qui rentre dans la bdd est protégé (il y a plusieurs techniques).
• respire, si ça suffit pas, re-respire !
bon courage pour la suite et à plus !
• commence par bien gérer l'identification sur toutes tes pages, que tu puisses être sûr que ce que tu affiches va à un utilisateur identifié ou non.
• crées tes propres classes, tes propres objets. le modèle objet est obligatoire pour ce genre de projet.
• ne fais jamais (mais alors jamais) confiance à tout ce qui peut provenir de l'utilisateur.
tout ce qui rentre comme paramètre est nettoyé avec 'filter()', tout ce qui est envoyé pour affichage à l'utilisateur est
protéger par 'htmlentities()' (ou équivalent, même ce qui sort de la bdd), tout ce qui rentre dans la bdd est protégé (il y a plusieurs techniques).
• respire, si ça suffit pas, re-respire !
bon courage pour la suite et à plus !
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 16:14
20 avril 2008 à 16:14
Bonjour , voila j'avance dans mon code , la il y a deux choses qui coincent :
1- étant donné que c'est la page qui se régénère si il y a une référence déjà affiché , en affichant une autre elle est effacé , il faut donc la stocker dans une variable pour éviter qu'elle ne disparaisse lorsqu'on régénère la page , je pense a faire une fonction qui met la référence trouvé ainsi que les données qui en résultent ( couleur ..) dans une session.qu'en penses tu ? la variable de session va s'auto incrémenter ( un truc du genre )
2- puisque j'ai mi mon script de recherche dans la base de donné sur la même page au début lorsque je pose la condition ( si la référence n'existe pas affiche message d'erreur ) il me l'affiche dés le début si tu vois ce que je veux dire , car au lancement de cette page,une recherche va être effectué sur la bd avec référence =0 puisque je n'ai encore rien saisie .
Voila pour le moment mon script
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script language="Javascript1.2" type="text/javascript">
<!--
function codeTouche(evenement)
{
for (prop in evenement)
{
if(prop == 'which') return(evenement.which);
}
return(evenement.keyCode);
}
function scanTouche(evenement)
{
var reCarSpeciaux = /[\x00\x08\x0D]/;
var reCarValides = /\d/;
var codeDecimal = codeTouche(evenement);
var car = String.fromCharCode(codeDecimal);
var autorisation = reCarValides.test(car) || reCarSpeciaux.test(car);
return autorisation;
}
-->
</script>
</head>
<body>
<?php
// ou verture de la connexion Mysql
mysql_connect('localhost','root') or die(mysql_error());
mysql_select_db('applicatif') or die(mysql_error());
if(isset($_POST) &&!empty($_POST['reference']) )
$ref = $_POST['reference'];
// on recupère la fiche correspondante au client
$sql = "select * from produit where ref='".$ref."' " ;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$nb=mysql_numrows($req);
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($req) ) {
?>
<table border="0">
<tr><td>Reference</td><td>:</td><td><strong><?php echo $donnees['ref']; ?></td>
<td>Taille</td><td>:</td><td><strong><?php echo $donnees['taille']; ?></td>
<td>Designation</td><td>:</td><td><strong><?php echo $donnees['designation']; ?></td>
<td>Couleur</td><td>:</td><td><strong><?php echo $donnees['couleur']; ?></td>
<td>Prix</td><td>:</td><td><strong><?php echo $donnees['prix']; ?></td>
<td>Categorie</td><td>:</td><td><strong><?php echo $donnees['categorie']; }?></tr>
<form method="post" action="test.php">
<tr><td><input type="text" name="reference" maxlength="7" size="15" onKeyPress="return scanTouche(event)"/></td><td>
<input type="submit" value="valider" /></td></td>
</form>
<?php mysql_close(); ?>
</table>
</body>
</html>
1- étant donné que c'est la page qui se régénère si il y a une référence déjà affiché , en affichant une autre elle est effacé , il faut donc la stocker dans une variable pour éviter qu'elle ne disparaisse lorsqu'on régénère la page , je pense a faire une fonction qui met la référence trouvé ainsi que les données qui en résultent ( couleur ..) dans une session.qu'en penses tu ? la variable de session va s'auto incrémenter ( un truc du genre )
2- puisque j'ai mi mon script de recherche dans la base de donné sur la même page au début lorsque je pose la condition ( si la référence n'existe pas affiche message d'erreur ) il me l'affiche dés le début si tu vois ce que je veux dire , car au lancement de cette page,une recherche va être effectué sur la bd avec référence =0 puisque je n'ai encore rien saisie .
Voila pour le moment mon script
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script language="Javascript1.2" type="text/javascript">
<!--
function codeTouche(evenement)
{
for (prop in evenement)
{
if(prop == 'which') return(evenement.which);
}
return(evenement.keyCode);
}
function scanTouche(evenement)
{
var reCarSpeciaux = /[\x00\x08\x0D]/;
var reCarValides = /\d/;
var codeDecimal = codeTouche(evenement);
var car = String.fromCharCode(codeDecimal);
var autorisation = reCarValides.test(car) || reCarSpeciaux.test(car);
return autorisation;
}
-->
</script>
</head>
<body>
<?php
// ou verture de la connexion Mysql
mysql_connect('localhost','root') or die(mysql_error());
mysql_select_db('applicatif') or die(mysql_error());
if(isset($_POST) &&!empty($_POST['reference']) )
$ref = $_POST['reference'];
// on recupère la fiche correspondante au client
$sql = "select * from produit where ref='".$ref."' " ;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$nb=mysql_numrows($req);
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($req) ) {
?>
<table border="0">
<tr><td>Reference</td><td>:</td><td><strong><?php echo $donnees['ref']; ?></td>
<td>Taille</td><td>:</td><td><strong><?php echo $donnees['taille']; ?></td>
<td>Designation</td><td>:</td><td><strong><?php echo $donnees['designation']; ?></td>
<td>Couleur</td><td>:</td><td><strong><?php echo $donnees['couleur']; ?></td>
<td>Prix</td><td>:</td><td><strong><?php echo $donnees['prix']; ?></td>
<td>Categorie</td><td>:</td><td><strong><?php echo $donnees['categorie']; }?></tr>
<form method="post" action="test.php">
<tr><td><input type="text" name="reference" maxlength="7" size="15" onKeyPress="return scanTouche(event)"/></td><td>
<input type="submit" value="valider" /></td></td>
</form>
<?php mysql_close(); ?>
</table>
</body>
</html>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 16:30
20 avril 2008 à 16:30
salut,
indente ton code et pense à le mettre en forme sur le forum, c'est plus lisible !
pour stocker les produits, il faut une variable de session, comme on avait dit hier.
je n'ai pas trouver la condition pour afficher l'erreur.
indente ton code et pense à le mettre en forme sur le forum, c'est plus lisible !
pour stocker les produits, il faut une variable de session, comme on avait dit hier.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>test</title> <script language="Javascript1.2" type="text/javascript"> <!-- function codeTouche(evenement) { for (prop in evenement) { if(prop == 'which') return(evenement.which); } return(evenement.keyCode); } function scanTouche(evenement) { var reCarSpeciaux = /[\x00\x08\x0D]/; var reCarValides = /\d/; var codeDecimal = codeTouche(evenement); var car = String.fromCharCode(codeDecimal); var autorisation = reCarValides.test(car) || reCarSpeciaux.test(car); return autorisation; } --> </script> </head> <body> <?php // ou verture de la connexion Mysql mysql_connect('localhost','root') or die(mysql_error()); mysql_select_db('applicatif') or die(mysql_error()); if( isset( $_POST ) && !empty( $_POST['reference'] ) ) // if( strtolower( $_SERVER['REQUEST_METHOD'] ) === 'post' ) est plus propre et utilise plutôt is_null(), empty() te renverra faux pour certaines valeurs comme "0" { $ref = $_POST['reference']; // on recupère la fiche correspondante au client $sql = "select * from produit where ref='".$ref."' " ; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $nb=mysql_numrows($req); // on ajoute la produit à la variable de session qui sera un tableau d'objets (pluspratique mais tu peux utiliser un tableau de tableau si tu préfères) // il faudra peut être initialiser le tableau pour la première utilisation /* if( !isset($_SESSION['produits']) ) { $_SESSION['produits'] = array(); } */ if( $nb === 1 ) // sinon plantera quand $req est vide { $_SESSION['produits'][] = $donnees = mysql_fetch_object( $req ); } foreach( $_SESSION['produits'] as $produit ) // on boucle sur la variable de session { ?> <table border="0"> <tr><td>Reference</td><td>:</td><td><strong><?php echo $produit->ref; ?></td> <td>Taille</td><td>:</td><td><strong><?php echo $produit->taille; ?></td> <td>Designation</td><td>:</td><td><strong><?php echo $produit->designation; ?></td> <td>Couleur</td><td>:</td><td><strong><?php echo $produit->couleur; ?></td> <td>Prix</td><td>:</td><td><strong><?php echo $produit->prix; ?></td> <td>Categorie</td><td>:</td><td><strong><?php echo $produit->categorie; }?></tr> <?php } // moi je préfère toujours ouvrir et fermer les accolades } ?> <form method="post" action="test.php"> <tr><td><input type="text" name="reference" maxlength="7" size="15" onKeyPress="return scanTouche(event)"/></td><td> <input type="submit" value="valider" /></td></td> </form> <?php mysql_close(); // inutile, il le fait tout seul ?> </table> </body> </html>
je n'ai pas trouver la condition pour afficher l'erreur.
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 19:58
20 avril 2008 à 19:58
je n'ai pas bien compris cette partie , elle est censé faire quoi ?
if( !isset($_SESSION['produits']) )
{
$_SESSION['produits'] = array();
}
if( $nb === 1 ) // sinon plantera quand $req est vide
{
$_SESSION['produits'][] = $donnees = mysql_fetch_object( $req );
}
foreach( $_SESSION['produits'] as $produit ) // on boucle sur la variable de session
{
if( !isset($_SESSION['produits']) )
{
$_SESSION['produits'] = array();
}
if( $nb === 1 ) // sinon plantera quand $req est vide
{
$_SESSION['produits'][] = $donnees = mysql_fetch_object( $req );
}
foreach( $_SESSION['produits'] as $produit ) // on boucle sur la variable de session
{
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 20:18
20 avril 2008 à 20:18
GRRR !!! MAIS TU VAS L'UTILISER CE P***** DE BOUTON ?!
pour le code, si tu veux conserver les produits, d'une page à l'autre il faut les stocker dans une variable de session.
(t'es ok avec les sessions ?)
donc quand tu interroges la base, au lieu d'afficher le résultat, tu le stockes dans la session.
puis tu parcoures la variable session comme ça si il y déjà quelque chose dedans tu l'afficheras aussi.
est-ce que ça fonctionne ?
pour le code, si tu veux conserver les produits, d'une page à l'autre il faut les stocker dans une variable de session.
(t'es ok avec les sessions ?)
donc quand tu interroges la base, au lieu d'afficher le résultat, tu le stockes dans la session.
puis tu parcoures la variable session comme ça si il y déjà quelque chose dedans tu l'afficheras aussi.
est-ce que ça fonctionne ?
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 20:27
20 avril 2008 à 20:27
Désolé pour le bouton j'ai oublié :) t'es pas fâché j'espère
Je suis entièrement d'accord avec le sessions , c'est la seule solution que j'ai trouvé aussi pour garder les données extraites de la BD même après que la page se soit rechargé.Je suis entrain d'essayer de mettre ça en route, pour le code que tu m'as donné il m'a affiché le même résultat que celui que je t'avais envoyé .
Je suis entièrement d'accord avec le sessions , c'est la seule solution que j'ai trouvé aussi pour garder les données extraites de la BD même après que la page se soit rechargé.Je suis entrain d'essayer de mettre ça en route, pour le code que tu m'as donné il m'a affiché le même résultat que celui que je t'avais envoyé .
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 20:30
20 avril 2008 à 20:30
t'es pas fâché j'espère
ba non, quand même !
même quand tu ajoutes un deuxième produit ?
ba non, quand même !
même quand tu ajoutes un deuxième produit ?
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 20:35
20 avril 2008 à 20:35
oui c'est ca le problème , en général il prend pas un seul article,je pense qu'il faudra faire une boucle , étant donné que le nombre maximum d'articles est limité a 15 ( par commande ) la condition d'arrêt serait que i=15 , et a chaque tour on lit dans la variable session , si elle est pas vide alors on affiche ce qu'il y a dedans .
qu'en penses tu ?
qu'en penses tu ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
>
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
20 avril 2008 à 20:37
20 avril 2008 à 20:37
mieux vaut tester avant d'ajouter le produit à la session.
si le tableau de la session a déjà une longueur de 15, alors tu refuses l'ajout et tu expliques pourquoi.
si le tableau de la session a déjà une longueur de 15, alors tu refuses l'ajout et tu expliques pourquoi.
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
20 avril 2008 à 20:39
20 avril 2008 à 20:39
Ok , ça marche , tu n'as pas une idée sur un site ou il explique un peu ce que je veux faire ( session de type array ) ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
>
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
20 avril 2008 à 20:59
20 avril 2008 à 20:59
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
20 avril 2008 à 23:52
20 avril 2008 à 23:52
Salut , qu'est ce que tu pense de ce code ( il me reste a inclure la recherche dans la BD )
Si tu as une critique ou une remarque je suis ok
<?php session_start(); if ($_GET['action']=="destroy"){ session_unset(); session_destroy(); } $ref = $_POST['choix']; $qte = $_POST['qte']; $_SESSION['achats'][] = array('ref' => $_POST['choix'],'qte' => $_POST['qte']); echo "<br>"; $i = 0; echo "<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>"; echo "<tr>"; echo "<td>&nbsp;Références</td>"; echo "<td>&nbsp;Quantités</td>"; echo "</tr>"; do{ echo "<tr>"; echo "<td>".$_SESSION['achats'][$i]['ref']."</td>"; echo "<td>".$_SESSION['achats'][$i]['qte']."</td>"; echo "</tr>"; $i++; }while (isset($_SESSION['achats'][$i])); echo "</table>"; echo "<a href=panier.php?action=destroy>Détruire les sessions</a>"; echo "<br><a href=formulaire.htm>Retour</a>" ?> <form action="panier.php" method="post"> Référence produit : <input type="text" name="choix"><br> Quantité : <input type="text" name="qte"><br> <input type="submit" name="submit" value="Validez"> </form>
Si tu as une critique ou une remarque je suis ok
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 avril 2008 à 23:58
20 avril 2008 à 23:58
ça c'est inutile
et tu devrais utiliser 'foreach()' plutôt que 'do...while()'
ba sinon, ça se met gentiment en place !
-;o)
bonne nuit, bon courage pour la suite et à plus !
$ref = $_POST['choix']; $qte = $_POST['qte'];
et tu devrais utiliser 'foreach()' plutôt que 'do...while()'
ba sinon, ça se met gentiment en place !
-;o)
bonne nuit, bon courage pour la suite et à plus !
duxitto
Messages postés
247
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
7 janvier 2013
1
22 avril 2008 à 17:44
22 avril 2008 à 17:44
salut , j'ai essayé tant bien que mal de rajouter la recherche dans la base de données au script.
Ce qui devrait ce passer : lorsque je tape une référence correcte en plus de l'afficher dans le tableau il doit aussi afficher la désignation de l'article .
Ce qui se passe , lorsque je tape une référence correcte il me l'affiche dans le tableau mais sans la désignation :(
par contre si je tape une référence erronée, le tableau disparait .je pense avoir un problème avec ma boucle while mais je ne sais pas ou exactement et en plus de ca je n'arrive pas a mettre la quantité affiché dans un champs de sorte a pourvoir mettre quantité 0 dans le cas ou je souhaite annuler un article .
Merci si vous arrivez a m'aider a trouver l'erreur .
Ce qui devrait ce passer : lorsque je tape une référence correcte en plus de l'afficher dans le tableau il doit aussi afficher la désignation de l'article .
Ce qui se passe , lorsque je tape une référence correcte il me l'affiche dans le tableau mais sans la désignation :(
par contre si je tape une référence erronée, le tableau disparait .je pense avoir un problème avec ma boucle while mais je ne sais pas ou exactement et en plus de ca je n'arrive pas a mettre la quantité affiché dans un champs de sorte a pourvoir mettre quantité 0 dans le cas ou je souhaite annuler un article .
Merci si vous arrivez a m'aider a trouver l'erreur .
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Client.html</title> <script language="Javascript1.2" type="text/javascript"> <!-- function codeTouche(evenement) { for (prop in evenement) { if(prop == 'which') return(evenement.which); } return(evenement.keyCode); } function scanTouche(evenement) { var reCarSpeciaux = /[\x00\x08\x0D]/; var reCarValides = /\d/; var codeDecimal = codeTouche(evenement); var car = String.fromCharCode(codeDecimal); var autorisation = reCarValides.test(car) || reCarSpeciaux.test(car); return autorisation; } --> </script> </head> <body > <?php session_start(); //connexion a la base de données mysql_connect('localhost','root') or die(mysql_error()); mysql_select_db('applicatif') or die(mysql_error()); if(isset($_POST) &&!empty($_POST['reference']) ) $ref = $_POST['reference']; // on recupère la fiche correspondante au client $sql = "select * from produit where ref='".$ref."' " ; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); // On fait une boucle pour lister tout ce que contient la table : while ($donnees = mysql_fetch_array($req) ) { $designation=$donnees['designation']; if ($_GET['action']=="destroy"){ session_unset(); session_destroy(); } $ref = $_POST['reference']; $qte = $_POST['qte']; $taille=$_POST['taille']; $_SESSION['achats'][] = array('ref' => $_POST['reference'],'qte' => $_POST['qte'],'taille'=>$_POST['taille'],'designation'=>$_POST['designation']); echo "<br>"; $i = 0; echo "<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>"; echo "<tr>"; echo "<td width=100> Références</td>"; echo "<td width=50> Taille</td>"; echo "<td width=50> Quantité</td>"; echo"<td width=60> Designation</td>"; echo "</tr>"; do{ echo "<tr>"; echo "<td>".$_SESSION['achats'][$i]['ref']."</td>"; echo "<td>".$_SESSION['achats'][$i]['taille']."</td>"; echo "<td>".$_SESSION['achats'][$i]['qte'] ."</td>"; echo "<td>".$_SESSION['achats'][$i]['designation']."</td>"; echo "</tr>"; $i++; }while (isset($_SESSION['achats'][$i])); echo "</table>"; echo "<a href=test.php?action=destroy>Détruire les sessions</a>"; } ?> <form action="test.php" method="post"> Référence : <input type="text" name="reference" onKeyPress="return scanTouche(event)"><br> Taille : <input type="text" name="taille" onKeyPress="return scanTouche(event)" ><br> Quantite : <input type="text" name="qte" value="1" onKeyPress="return scanTouche(event)"><br> <input type="submit" name="submit" value="Validez"> </form> </body>
17 avril 2008 à 00:57
merci d'avance
17 avril 2008 à 01:20