Permalänk
Inaktiv

Ändra värde vid submit

Är ute och trampa i djupt vatten nu men skulle vara roligt att försöka lära sig någonting nytt. Måste tillägga att det inte är min hemsida och inte jag som skapat den.
Har försökt jaga efter en lösning men snubblar alltid över nya frågor som kräver fler svar.

Försöker hjälpa en bekant med dennes hemsida.
Det som finns idag är ett enkelt bokningssystem skrivet i PHP. När formuläret är korrekt ifyllt och inskickat så skickas en bekräftelse i form av ett mail både till anmälaren och sidans ägare. Därefter har antal bokningar bara skötts med penna och papper.
Nu så vill ägaren av sidan göra så att det bara finns 10 tillgängliga bokningar/datum, därefter stängs datumet per automatik.

Som det ser ut idag
<input type="radio" name="datum" value="2020-01-01 kl. 09:00-16:00">2020-01-01 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-02 kl. 09:00-16:00">2020-01-02 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-03 kl. 09:00-16:00">2020-01-03 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-04 kl. 09:00-16:00">2020-01-04 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-05 kl. 09:00-16:00">2020-01-05 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-06 kl. 09:00-16:00">2020-01-06 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-07 kl. 09:00-16:00">2020-01-07 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-08 kl. 09:00-16:00">2020-01-08 kl. 09:00-16:00<br />
<input type="radio" name="datum" value="2020-01-09 kl. 09:00-16:00">2020-01-09 kl. 09:00-16:00<br />

Och hur ägaren vill att det ungefär ska se ut framöver
<input type="radio" name="datum" value="2020-01-01 kl. 09:00-16:00">2020-01-01 kl. 09:00-16:00 - Platser kvar 9 av 10<br />

Man väljer alltså datum via radio knappar, skriver in sitt namn, mail, telefonnummer etc och skickar in.
Ingen databas finns i dagsläget och en simpel lösning vore att föredra, där man även kan gå in och ändra antal bokningar manuellt om en avbokning skulle trilla in.

Permalänk

@anon25463:
Du kan ju hålla tillgängliga datum i minnet så länge programmet går, men skulle servern starta om är du ju rökt om du inte lagrar den här informationen på något sätt. Med andra ord: Det är bättre att fortsätta hantera bokningarna med papper och penna om du inte har en databas (och backuper!) bakom webbappen.

Permalänk
Inaktiv

Återigen så påpekar jag att det varken är min sida. Hade det varit min så hade jag helt sonika delat ut datum efter bokningar
Problemet ligger inte i penna och papper, utan det är folk som bokar och tror sig fått en plats på det valda datumet, men som sedan blir irriterad över ett telefonsamtal att dennes bokning måste flyttas då de valda datumet redan är fullt.
Det är alltså för anmälarens skull som det vore bra att visa hur många platser det finns kvar.

Permalänk
Medlem
Skrivet av anon25463:

Återigen så påpekar jag att det varken är min sida. Hade det varit min så hade jag helt sonika delat ut datum efter bokningar
Problemet ligger inte i penna och papper, utan det är folk som bokar och tror sig fått en plats på det valda datumet, men som sedan blir irriterad över ett telefonsamtal att dennes bokning måste flyttas då de valda datumet redan är fullt.
Det är alltså för anmälarens skull som det vore bra att visa hur många platser det finns kvar.

Data om vilka bokningar som är gjorda måste finnas på servern eller tillgängligt för servern för att det du vill göra ska vara möjligt.
En riktig databas vore det bästa, men i nödfall finns ju den gamla "enkla" lösningen med att använda en textfil för att lagra datan i.

Skulle jag vara tvungen att använda en textfil för bokningar skulle jag nog börjat med att skapa en katalog på webb-serven med namnet bokningar.
Nästa steg skulle vara att skriva lite PHP-kod som kontrollerar om textfilen 2020-01.txt finns, annars skapa den (ny textfil varje månad eller vecka eller vad som nu behövs för att inte bli för tungt).

Före bokningar, Skapa en array, vi kan kalla den Array A med tillgängliga datum. Öppna filen 2020-01.txt, läs in innehållet och lägg det i en array, Array B.
Filtrera Array A med hjälp av Array B och ta bort alla datum som finns i B från A.
Lista kvarvarande datum på webb-sidan.

Vid bokning, öppna textfilen och lägg till ny rad nederst via PHP-scriptet.

Viktigt att tänka på, Det här systemet skulle fortfarande tillåta dubbelbokningar om du inte skriver en funktion för att kontrollera det mot text-filen om två eller fler användare är anslutna samtidigt.

Jag skulle rekommendera att du läser på lite om fopen, fget, fwrite etc innan du börjar om du inta gjort sådant tidigare.

Visa signatur

Asus C6H | R9-3900XT | 4x8GB G-Skill Ripjaws V 3600@3466 CL14 | Asus Radeon RX 580 8GB Strix Gaming OC | Asus Strix Raid DLX | Corsair Obsidian 750D AE

Permalänk
Inaktiv

Tack så mycket för svar.
Antal bokningar brukar vara mellan 6-10 bokningar/år, så det rör sig inte om många dagar. Antal besökare är jag inte hundra på, men tror inte det rör sig om många/vecka
Ska rodda mig vidare i träsket och se om jag hittar en vettig lösning.

Vars kan man vända sig om man behöver gedigen hjälp, självklart mot betalning?

Permalänk
Medlem
Skrivet av anon25463:

Tack så mycket för svar.
Antal bokningar brukar vara mellan 6-10 bokningar/år, så det rör sig inte om många dagar. Antal besökare är jag inte hundra på, men tror inte det rör sig om många/vecka
Ska rodda mig vidare i träsket och se om jag hittar en vettig lösning.

Vars kan man vända sig om man behöver gedigen hjälp, självklart mot betalning?

Ah du klarar det säkert

Kunde inte låta bli utan att leka lite grann nu under kvällen, lite kod som du kan titta på och pilla runt i för att, tja, roa dig
Du kan se resultatet av koden på: https://objektiv.ddns.net/Bokningar

<html> <head> <link rel="stylesheet" type="text/css" href="stil.css"> </head> <body> <?php // Hämta alla datum som är bokningsbara och lägg dem i en array. echo "<div class='dnvc2'>"; echo "<u>Alla Datum:</u><p>"; // Skapa en Array med alla tillgängliga datum. $ArrayA = file('tillg_datum.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // Hur många värden finns I ArrayA? $ArrayA_Ant = count($ArrayA); // Skriv ut datumen på sidan. for ($x = 0; $x <= $ArrayA_Ant; $x++) { echo $ArrayA[$x]."<br>"; } echo "<br>Datumen hämtas från textfilen tilg_datum.txt."; echo "</div>"; // Hämta alla datum som redan är bokade och lägg dem i en array. echo "<div class='dnvc2'>"; echo "<u>Bokade datum:</u><p>"; // Skapa en Array med alla bokade datum. $ArrayB = file('Bokning/2020-01.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $ArrayB_Ant = count($ArrayB); // Skriv ut datumen på sidan. for ($y = 0; $y <= $ArrayB_Ant; $y++) { echo $ArrayB[$y]."<br>"; } echo "De bokade datumen hämtas från textfilen 2020-01.txt i underkatalogen Bokning."; echo "</div>"; // Jämför de två arrayerna med varandra och skriv ut skillnaden (obokade datum). echo "<div class='dnvc2'>"; echo "<u>Lediga Datum:</u><P>"; // Vad skiljer arrayerna åt? $result = array_diff($ArrayA,$ArrayB); // Skapa en ny array med skillnaden och justera värdena på Key $result2 = array_values(array_filter($result));. $result_Ant = count($result2); //Skriv ut de lediga datumen på sidan. (det här är egentligen det ända du behöver skriva ut på sidan :)) for ($z = 0; $z <= $result_Ant; $z++) { echo $result2[$z]."<br>"; } echo "<p>Skillnaden mellan alla datum och bokade datum visas här."; echo "</div>"; ?> </body> </html>

Visa signatur

Asus C6H | R9-3900XT | 4x8GB G-Skill Ripjaws V 3600@3466 CL14 | Asus Radeon RX 580 8GB Strix Gaming OC | Asus Strix Raid DLX | Corsair Obsidian 750D AE

Permalänk
Inaktiv

Mången tack