Jump to content

[Recherche] Script pour gestion de places


Recommended Posts

Bonjour à tous ! :ane:

Je m'en soumets totalement à vous, les spécialistes et moi le grand profane, pour une noble cause.

Je m'explique : je m'occupe de la gestion web pour l'organisation de vide-greniers au profit d'une association qui s'occupe d'animaux en difficulté. Sur la page web en question : une carte avec des emplacements numérotés, et un formulaire à remplir. J'aimerais que chaque nouvel inscrit puisse choisir sa ou ses place(s) désiré(es), et selon la disponibilité le système lui confirme ou infirme sa tentative d'inscription (du genre : "désolé, cette place n'est plus disponible, veuillez en choisir une autre").

Voilà, en attendant des âmes louables qui puissent m'offrir les précieuses lignes de code... je leur en serais fort reconnaissant après quelques heures de recherche infructueuse.

Merci pour votre attention :love:

Link to comment
Share on other sites

Salut,

je n'ai pas de code tout fait mais c'est faisable grâce à mysql et php.

tu fait un base de données dans laquelle tu stockes les emplacements existants. Quand quelqu'un le prend, tu stockes son nom sur cette ligne et du coup cet emplacement devient indisponible.

exemple de table "reservations emplacement"

num_emplacement | nom

1 | jean pierre

2 |

3 | thomas

4 |

çà veut dire que 1 et 3 sont réservés et 2 et 4 libres.

quand tu dis "J'aimerais que chaque nouvel inscrit puisse choisir sa ou ses place(s) désiré(es" çà veut dire qu'une seule personne peut en réserver plusieurs ?

Du coup tu fais un formulaire avec une liste déroulante. ( avec une requête sql, il est possible d'établir la liste déroulante en fonction des emplacements encore libres - les cases où il n'y a aucun noms d'inscrits)

dans le fichier php qui "traite" le formulaire, tu vérifies que l'emplacement choisi est toujours libre si oui, tu lui donnes, si non tu lui demandes d'en choisir un autre.

Voilà,

pour html / php / mysql, il y a par exemlpe le site du zero.

Link to comment
Share on other sites

Salut Treflemard et merci pour ta réponse !

Pour être honnête j'ai du mal à faire la liaison entre MySQL et PHP, je connais très peu ces langages, et jusqu'à là j'ai juste reussi à récupérer des scripts en HTML et PHP qui me permettent déjà de recevoir par mail un certain nombre d'infos (nom, prénom, n°, etc.). J'ai aussi une base de données sous forme de fichier texte qui s'auto-alimente.

L'objectif c'est de ne pas avoir à m'embourber dans le codage et la création de tables SQL auquel je n'ai jamais rien pigé :zero:

Oui, une personne peut réserver plusieurs emplacements. Dans l'idéal, j'aimerais que lorsqu'il y a réservation de place(s), le(s) numéro(s) d'emplacement soient automatiquement indisponibles. Le plus d'automatisation possible.

Link to comment
Share on other sites

Salut,

c'est tout à fait faisable en mysql et aps si compliqué, le site du zéro exlpique celà bien ... phpmyadmin est très bien pour gérer facilement une base de données / des tables SQL après, je doute fortement que tu ne trouves un script tout fait qui correspondent à tes besoins.

Après, en cherchant bien tu peux trouver un script fait pour un resto / un hotel php/mysql et le modifier de manière à ce que çà marche dans ton cas à savoir.

Jour unique et remplacer table / chambre par emplacement ...

Link to comment
Share on other sites

Salut,

Le problême c'est que pour faire une application PHP/MySQL il faut connaitre PHP et SQL. Pour apprendre SQL il faut commencer par comprendre les SGBD. Tout cela c'est un gros module de cours de plus d'un an en université ou en école d'ingénieur, et que tous le monde ne réussi pas à y arriver : pour beaucoup les SGBD ça reste obscur dès qu'on veux utiliser plus d'une table.

Enfin au cas ou : Cours SGBD et cours SQL.

Link to comment
Share on other sites

Salut,

Le problême c'est que pour faire une application PHP/MySQL il faut connaitre PHP et SQL. Pour apprendre SQL il faut commencer par comprendre les SGBD. Tout cela c'est un gros module de cours de plus d'un an en université ou en école d'ingénieur, et que tous le monde ne réussi pas à y arriver : pour beaucoup les SGBD ça reste obscur dès qu'on veux utiliser plus d'une table.

Enfin au cas ou : Cours SGBD et cours SQL.

T'exagère un peu, il n'a pas un besoin énorme ... il y a besoin d'une simple table avec 2 champs, a tout casser deux requête qui vont être d'une simplicité déconcertante. Et on parle de phpmyadmin, je ne l'ai utilisé que 1 fois il y a déjà quelques années mais il me semble que c'est très simple, c'est full interface on clic sur créer table on met les noms des champs et fini

Je vais t'apporter une réponse semi complète, j'ai légèrement la flemme de tout faire :love:

Une fois ton accès free sql ouvert tu devrais avoir accès à http://phpmyadmin.free.fr/

Tu vas ici lire vite fais histoire d'y comprendre quelque chose http://www.siteduzer....html#ss_part_1

Tu crées une nouvelle base de donnée (ici je vais prendre vide_grenier)

Puis tu crées une table avec le nom que tu veux (ici je vais prendre resa_emplacement) avec 2 champs :

- numEmplacement | type int | Index Primary | Auto increment décoché

- reservePar | type text | null coché

Je suis parti du principe que c'est un petit truc, donc je te laisse remplir à la main les numero de place en modifiant la table

http://www.siteduzer....html#ss_part_2

Bon voilà tu as ta base de donnée qui contient une table qui elle a 2 champs, dont 1 est normalement rempli (les numEmplacement)

je t'ai fais un truc à l'arrache, ça devrait marché (rien essayé) en gros tu as 2 pages, 1 pages ou est ton formulaire qui affiche dans une liste que les numéro vide et qui envoi les données en POST à ta 2ieme page qui elle met à jour la table. Avec le site du zero tu devrais pouvoir t'en sortir je pense, j'ai tiré une partie du code des tuto pour pas me faire chier.

Ce que j'ai fais n'est pas vraiment à faire (pour la connexion à la base etc ...) mais j'suis parti du principe que c'est un petit truc et on s'en fou un peu du "bien faire"

Page 1 :

----------------------------------------------------------------------------------------------------------

<?php

try

{

// On se connecte à MySQL

$bdd = new PDO('mysql:host=ADRESSEDUSERVEUR;dbname=vide_grenier', 'NOMUTILISATEUR', 'MOTDEPASS');

}

catch(Exception $e)

{

// En cas d'erreur, on affiche un message et on arrête tout

die('Erreur : '.$e->getMessage());

}

// Si tout va bien, on peut continuer

// On récupère tout le contenu de la table resa_emplacement

$reponse = $bdd->query('SELECT * FROM resa_emplacement');

?>

<FORM method=post action="page2.php"> <!--changer page2.php par le nom de ta page -->

<label> Votre nom </label><input type='text' id='nom'/>

<label> Numero de place souhaitée </label>

<SELECT name="liste" id="liste">

<?php

// On parcour chaque entrée une à une

while ($donnees = $reponse->fetch())

{

//On regarde si reservéPar est vide, si oui alors personne n'a reservé l'emplacement on l'ajoute donc à la liste

if(empty($donnees['reservePar'])) {

echo "<OPTION VALUE=".$donnees['numEmplacement'].">".$donnees['numEmplacement']."</OPTION>";

}

}

?>

</SELECT>

<br/><INPUT type="submit" value="Valider">

<?php

}

$reponse->closeCursor(); // Termine le traitement de la requête

?>

----------------------------------------------------------------------------------------------------------

Page 2

----------------------------------------------------------------------------------------------------------

<?php

try

{

// On se connecte à MySQL

$bdd = new PDO('mysql:host=ADRESSEDUSERVEUR;dbname=vide_grenier', 'NOMUTILISATEUR', 'MOTDEPASS');

}

catch(Exception $e)

{

// En cas d'erreur, on affiche un message et on arrête tout

die('Erreur : '.$e->getMessage());

}

// Si tout va bien, on peut continuer

// On récupère tout le contenu de la table resa_emplacement

$reponse = $bdd->query('UPDATE resa_emplacement SET reservePar = '.$_POST['nom'].' where numEmplacement='.$_POST['liste');

$reponse->closeCursor(); // Termine le traitement de la requête

echo "L'emplacement ".$_POST['liste']." a bien été reservé à votre nom (".$_POST['nom'].")";

?>

----------------------------------------------------------------------------------------------------------

:kimouss:

Link to comment
Share on other sites

Alors là : :incline:

MERCI Dark_mouton, ça va bien m'aider. J'ai fait ma demande d'accès y'a 4/5 jours et toujours pas d'espace web + sql débloqué (officiellement c'est 48h). Je pourrais confirmer la validité du code et faire mes petits tests une fois que ça sera ouvert. Font chiés... et la date approche ! :mad:

Je reviendrais vers vous au besoin pour vous mettre au courant, et je me suis déjà plongé dans le site du zéro ;)

Link to comment
Share on other sites

Salut Dark_Mouton (ou un autre pouvant m'aider).

Je ne trouve pas la fonction dans phpmyadmin permettant de rentrer les 140 numéros d'emplacements dans le champ numEmplacement ? J'ai besoin de captures d'écrans si c'est possible. Pourtant j'ai fouillé le site du zéro et rien trouvé...

597920201208261422221280x1024scrot.png

Il me semble que c'est dans Valeur qu'il faut insérer les numéros, seulement quand j'en mets plusieurs séparés par des ; ça me répond par un message d'erreur : #1062 - Duplicate entry '1' for key 'PRIMARY'.

Bref : HELP, please.

Deuxième chose : quand j'uploade les fichiers sur mon FTP Free, ça répond "syntax error", visiblement c'est le PDO qui fout le bordel... peut-être y a t'il des scripts php plus classiques pour se connecter à la base de données ? C'est ce que je veux. Il me faudrait aussi le champ SELECT avec les 140 numéros d'emplacements car là c'est vide.

S'il vous plait j'ai grandement besoin de votre aide, car je rame depuis des jours et là je commence à être VRAIMENT agacé :mad:

Les animaux en détresse comme moi-même vous remercient.

Link to comment
Share on other sites

Mis-à-jour : je viens de régler le problème pour Wordpress et les champs d'emplacements. Par contre, j'ai toujours les mêmes message d'erreurs de syntaxe avec le script proposé par Dark Mouton, probablement que la version chez Free est encore en 5.1, et les PDO ne sont donc pas compris.

--> J'ai besoin de scripts PHP complets et classiques (idéalement PHP4) permettant une bonne liaison avec MySQL. Merci :)

Link to comment
Share on other sites

Pour phpmyadmin, tu ne peux insérer les enregistrements que 1 par 1 il me semble, donc il faut se faire les 140 à la main ou générer un script SQL pour les créer.

Pour le reste du code, me faudrait la version à jour pour que j'installe une base de test... Ca fait des années que j'utilise que PDO car les fonctions mysql_* sont dépréciées, mais on fera avec :)

Link to comment
Share on other sites

Bonjour,

Petit question : j'ai crée 15 boutons PayPal avec menus déroulants (3 choix) + options (150 places avec gestion de stock (0 ou 1)) que j'ai condensé en un seul bouton "ajouter au panier" (car de façon standard, on ne peut avoir que 10 options à chaque bouton, ce qui aurait fait 15 boutons :-/). En collant l'un contre l'autre les balises <input> et <option value>.

Ce qui donne le résultat suivant : 175790201208300948151280x1024scrot.png

Seulement, quand on ajoute une place dans le panier, c'est seulement le dernier <input value="7RQ9BRD96ZSN2"> (place 141-150) qui est pris en compte, et que donc la gestion des stocks ne s'effectue pas automatiquement sur les autres places.

D'où ma question : existe t-il un moyen correct d'intégrer plusieurs <input value=" "> dans <form> ?

Voilà le code :

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal"><input type="hidden" name="cmd" value="_s-xclick" /><input type="hidden" name="hosted_button_id" value="CVMSTEAQRT6NQ"><input type="hidden" name="hosted_button_id" value="P2QAXLE7H452W"><input type="hidden" name="hosted_button_id" value="JPHXS54A3JK2U"><input type="hidden" name="hosted_button_id" value="XYPGW5H8WLP2U"><input type="hidden" name="hosted_button_id" value="PGBFUMNH95K4C"><input type="hidden" name="hosted_button_id" value="4PSSC5MZ9S69J"><input type="hidden" name="hosted_button_id" value="E7HNHVSYCXC2W"><input type="hidden" name="hosted_button_id" value="JVG6GHZ79CXPS"><input type="hidden" name="hosted_button_id" value="35PZC6TS9MC2Q"><input type="hidden" name="hosted_button_id" value="KHQPYZNXSM4TN"><input type="hidden" name="hosted_button_id" value="YS2UC7PXCEJBN"><input type="hidden" name="hosted_button_id" value="KRD2H8TXYNNX2"><input type="hidden" name="hosted_button_id" value="L6ZST44ASXR9Q"><input type="hidden" name="hosted_button_id" value="6B87XFW32MEYE"><input type="hidden" name="hosted_button_id" value="7RQ9BRD96ZSN2"><table><tr><td><input type="hidden" name="on0" value="Type(s) de place(s)" />Type(s) de place(s)</td></tr><tr><td><select name="os0"> <option value="Sans voiture">Sans voiture €10,40 EUR</option> <option value="Avec voiture">Avec voiture €12,50 EUR</option> <option value="Avec fourgon">Avec fourgon €15,60 EUR</option> </select></td></tr><tr><td><input type="hidden" name="on1" value="Numéro de place" />Numéro de place</td></tr><tr><td><select name="os1"><option value="1">1 </option><option value="2">2 </option><option value="3">3 </option><option value="4">4 </option><option value="5">5 </option><option value="6">6 </option><option value="7">7 </option><option value="8">8 </option><option value="9">9 </option><option value="10">10 </option>[...]<option value="150">150 </option></select></td></tr></table><input type="hidden" name="currency_code" value="EUR" /><input type="image" name="submit" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_cart_SM.gif" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !" /></form>
Link to comment
Share on other sites

C'est tout à fait possible (sinon on ne pourrait pas faire de formulaire avec plusieurs champs texte, ce qui serait gênant. Le problème avec le code que tu viens de donner en exemple, c'est que tes <input type="hidden" ...> du début ont tous la même valeur pour name. Ce qui fait que quand le navigateur envoie le contenu du formulaire tel que rempli par l'utilisateur, il ne renvoie, associé au nom "hosted_button_id" que la valeur du dernier champ.

Je n'ai jamais utilisé les APIs Paypal donc je ne sais pas si sur le coup tu peux mettre tout ensemble comme tu le veux. J'imagine qu'il y a moyen de contourner ça à coup de Javascript, mais il faudrait savoir la correspondance entre les valeurs associées au nom "hosted_button_id" et celles du menu de sélection de la place.

Link to comment
Share on other sites

Merci pour ta réponse !

Pour préciser : chaque <input type="hidden"> correspond à 10 places (1 à 10; 11 à 20, etc.). J'ai tout réuni sinon, vu qu'il y a 150 places et que les boutons PayPal sont limités à 10 options, c'était 15 menus déroulants sur la page. Donc très redondant...

Donc concrètement, quel est le code qui me permet de prendre en compte tous les groupes de places sur un même champ d'options, et pas uniquement le dernier (141-150) à cause des multiples <input> ? J'ai déjà cherché infructueusement sur le web... :(

Link to comment
Share on other sites

J'ai légèrement rien compris :dd:

Tu veux que si l'utilisateur choisis une place entre 1 et 10 la valeur de hosted_button_id soit CVMSTEAQRT6NQ ?

Si c'est ça un coup de javascript et c'est réglé

Un truc du genre

<select name="os1" onChange=' changerNumero(this.value)'><option value="1">1 </option><option value="2">2 </option><option value="3">3 </option><option value="4">4 </option><option value="5">5 </option><option value="6">6 </option><option value="7">7 </option><option value="8">8 </option><option value="9">9 </option><option value="10">10 </option>[...]<option value="150">150 </option></select>
function changerNumero(valeur) {if(valeur < 10) { document.getElementById('hosted_button_id').value = 'P2QAXLE7H452W';}else if(valeur < 20) document.getElementById('hosted_button_id').value = 'JPHXS54A3JK2U';}......}

Le tout avec un seul champs hidden, et lui rajouter id='hosted_button_id'

Mais comme je ne suis pas sur que ce soit ça vu que j'ai pas l'impression d'avoir compris, je vais aller manger :manger:

Link to comment
Share on other sites

Tu sembles avoir compris, Dark_mouton. J'allais en gros lui proposer le même code. :)

Pour préciser ta proposition, histoire que tout soit parfaitement clair (quitte à raconter des choses qui sont déjà sues) : le code Javascript est normalement posé entre balises <script> dans le <head>, ainsi :

<head>...<script type="text/javascript">  function changerNumero(valeur) {  ...  }</script>...</head>

Aussi, le premier code est bien associé aux places 1 à 10 ? Auquel cas, les conditions dans le code Javascript doivent être <= et non juste <.

Bon app' ;)

Link to comment
Share on other sites

Un grand merci pour ta réponse, mais j'ai encore besoin de ton aide si tu veux bien, donc je ré-explique le plus clairement possible.

Introduction :

A) Toutes les places n'ont pas le même prix. Il y en a 150 au total.

B) Les places 17 à 63 (sans voiture) valent 10,40€ / Les places 1 à 16, 64 à 91, 102 à 150 valent 12,50€ (avec voiture) / Les places 92 à 101 valent 15,60€ (avec fourgon).

Le formulaire (légèrement retouché), est le suivant : 773307201208311223501280x1024scrot.png

1) Le premier champ <select> concerne une liste de 15 tranches de places (1 à 10, 11 à 20, etc.) → PayPal limite à 10 options par bouton d'achat (donc 15x10) → après modification, j'ai réussi à tout condenser en un seul formulaire. L'acheteur choisit, selon la ou les places qu'il l'intéresse, une tranche de places. Ceci fait, le "value=" de la tranche correspondante sert à informer automatiquement au niveau de la gestion des stocks de place de la tranche, selon la ou les places choisies → basculement automatique sur 0 (pas dispo) si place achetée.

/!\ J'ai résolu la problématique des multiples "value=" soulevé plus haut dans ce sujet (voir mon code source plus bas). Ils sont maintenant tous pris en compte selon un choix grâce au premier menu <select>.

2) L'acheteur choisit ensuite dans le second champ <select> un type de place : sans voiture (10,40€), avec voiture (12,50€), avec fourgon (15,60€).

3) L'acheteur choisit dans le troisième champ select le numéro de place de 1 à 150.

Le problème à présent : c'est que l'acheteur peut choisir une place "sans voiture" à 10,40€ dans le second champ, et se tromper dans le numéro de place du troisième champ, en choisissant et payant un numéro de place "avec voiture", qui est plus chère.

=> J'aimerais que selon le type de place choisit dans le second champ <select>, le troisième champ <select> (les numéros de place) puissent se limiter en choix. Exemple : je choisis un type de place "sans voiture" à 10,40€, mes seuls choix disponibles dans le troisième champ sont de 17 à 63. Pareil pour les autres types de place et leurs numéros correspondants (voir introduction).

Maintenant, voilà mon nouveau code :

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal"><input type="hidden" name="cmd" value="_s-xclick" />Choisissez la tranche de place qui vous intéresse :<select name="hosted_button_id"><option value="CVMSTEAQRT6NQ">Places 1 à 10</option><option value="P2QAXLE7H452W">Places 11 à 20</option><option value="JPHXS54A3JK2U">Places 21 à 30</option><option value="XYPGW5H8WLP2U">Places 31 à 40</option><option value="PGBFUMNH95K4C">Places 41 à 50</option><option value="4PSSC5MZ9S69J">Places 51 à 60</option><option value="E7HNHVSYCXC2W">Places 61 à 70</option><option value="JVG6GHZ79CXPS">Places 71 à 80</option><option value="35PZC6TS9MC2Q">Places 81 à 90</option><option value="KHQPYZNXSM4TN">Places 91 à 100</option><option value="YS2UC7PXCEJBN">Places 101 à 110</option><option value="KRD2H8TXYNNX2">Places 111 à 120</option><option value="L6ZST44ASXR9Q">Places 121 à 130</option><option value="6B87XFW32MEYE">Places 131 à 140</option><option value="7RQ9BRD96ZSN2">Places 141 à 150</option></select><hr><input type="hidden" name="on0" value="Type(s) de place(s)" />Type(s) de place :<select name="os0"> <option value="Sans voiture">Sans voiture €10,40 EUR</option> <option value="Avec voiture">Avec voiture €12,50 EUR</option> <option value="Avec fourgon">Avec fourgon €15,60 EUR</option> </select><hr><input type="hidden" name="on1" value="Numéro de place" />Numéro de place :<select name="os1">	<option value="1">1 </option><option value="2">2 </option><option value="3">3 </option><option value="4">4 </option><option value="5">5 </option><option value="6">6 </option><option value="7">7 </option><option value="8">8 </option><option value="9">9 </option><option value="10">10 </option>[...]<option value="150">150 </option></select><hr><input type="image" name="submit" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_cart_SM.gif" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !" /></form>

Note : les pages sont sous Wordpress.

Link to comment
Share on other sites

Salut,

il faut faire çà en javascript en fonction de ce qui est coché dans la case 1. Par contre, je suis pas expert en javascript du coup il me faut ce que j'ai déjà écrit et je peux pas le faire avant dimanche me concernant ...

Sinon en attendant, tu peux pas mieux découper de manière à écrire

<select name="hosted_button_id">

<option value="CVMSTEAQRT6NQ">Places 1 à 10 - avec voiture</option>

<option value="P2QAXLE7H452W">Places 11 à 16 - avec voiture</option>

<option value="a changer">Places 16 à 20 - obligatoierment sans voiture</option>

<option value="JPHXS54A3JK2U">Places 21 à 30 - sans voiture</option>

[...]

</select>

<hr>

et etc ...

Link to comment
Share on other sites

Dark_mouton : j'ai essayé dans tous les sens le script proposé. Rien à faire : incompatible avec la structure de mon formulaire. Il me faut du sur-messure. Mais merci quand même, j'ai passé la journée à me casser les dents sur ce problème. Je sais pas comment je vais y arriver... mais l'idée de fond est la bonne, c'est exactement ce que je veux avec les 3 types de places et leurs numéros en fonction.

Treflemard : désolé mais cette méthode ne marche pas, j'ai expliqué pourquoi plus haut.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...