Gå til innhold

Reservering av billetter - problem: begrensing av bestillinger


Anbefalte innlegg

Jeg er i ferd med å "utvikle" et reserveringsscript for min egen del, og har møtt et problem. Funksjonene det ferdige scripte skal ha, er at du skal kunne skrive inn navn, antall billetter og annen informasjon i en database. Videre skal informasjonen legges inn i en database, og du skal kunne få et spesifikt id nummer for din bestilling.

 

Problemet er da å kunne begrense bestillingene i forhold til billettene. Si at det bare er 200 billetter tilgjengelig. Jeg er klar over muligheter i forhold til å kunne telle anntall rader i databasen, men om jeg gjør det på den måten, så tas det ikke hensyn til antall billetter hver har bestilt.

 

Jeg forestiller meg at man kanskje kan legge sammen verdiene i kolonnen "antall", eller noe lignende, men hva vet jeg ... Jeg er ikke så veldig erfaren innenfor mysql ,og php, jeg håper noen har en løsning på dette problemet!

 

- Themecreator

Lenke til kommentar
Videoannonse
Annonse

Er flere måter å løse dette problemet på. Personlig tror jeg at har kommet til å lage det slik man har 1 rad per bilett, og hver rad har en kolonne knyttet til bruker-ID eller noe. Dermed kan man bruke "SELECT COUNT(*) FROM biletter" for eksempel.

Endret av BigJackW
Lenke til kommentar

Du kan bruke to tabeller.

 

Den ene tabellen inneholder bestillingsnummere.

Den andre tabellen inneholder billetter.

 

Slik at hvis du f.eks bestiller 5 billetter settes det 5 rader inn i tabell 2 og 1 rad inn i tabell 1 med bestillings-nummer.

Ved bestilling av x antall billetter sjekker du om antall bestilte billetter(antall rader i tabell 2) er over 200 eller det antallet du skal ha som max.

Lenke til kommentar

Aha! Den var ikke dum! Takker og bukker, Thomas!

 

Bare et kjapt annet spørsmål... Finnes det en funksjon i php som genererer en tilfeldig kode på x antall bokstaver/tall evt. også symboler? Tenkte i forhold til en verifiseringskode på utskriften som jeg echoer tilbake etter hver gang formen er submitted.

 

takk igjen!

Lenke til kommentar

Aha! Den var ikke dum! Takker og bukker, Thomas!

 

Bare et kjapt annet spørsmål... Finnes det en funksjon i php som genererer en tilfeldig kode på x antall bokstaver/tall evt. også symboler? Tenkte i forhold til en verifiseringskode på utskriften som jeg echoer tilbake etter hver gang formen er submitted.

 

takk igjen!

 

Jeg bruker iallefall denne koden (som forøvrig er skrevet av Jooakim her på forumet)

 

function makeCode($lengde = 15) {
$kode = "";
$poss = "ABCDEFGHIJKLMOPQRSTUVWXYZ0123456789abcdefghijklmopqrstuvwxyz";
$i = 0;
while($i < $lengde) {
	$char = substr($poss, mt_rand(0, strlen($poss)-1), 1);
	if(!strstr($kode, $char)) {
		$kode .= $char;
		$i++;
	}
}
// return hash('sha256', $kode);
return $kode;
}

 

Jeg har kunn begrenset efaring innen php, men den burde vel kanskje fungere greit for ditt behov? Du kan helt sikkert sette inn forskjellige tegn innen for $poss variablen slik at den genererer andre tegn også. :thumbup:

Lenke til kommentar

Jeg bruker en lignende kode når jeg genererer salts for nye brukere blant annet.

 

<?php
/**
* Generates a random salt.
* 
* Returns a random salt of between $MinLen to $MaxLen characters,
* (minimum 6 chars)
* 
* @author Hellkeepa
* @param int $MinLen = 7
* @param int $MaxLen = 10
* @return string
*/
function Gen_Salt ($MinLen = 6, $MaxLen = 10) {
if ($MinLen < 6) {
	$MinLen = 6;
}

$NumChars = mt_rand ($MinLen, $MaxLen);
$Salt = '';
$Pool = array_merge (range (chr (32), chr (126)), range (chr (128), chr (254)));
$PoolEnd = count ($Pool);

for ($Run = 0; $Run < $NumChars; $Run++) {
	$Salt .= $Pool[mt_rand (0, $PoolEnd)];
}

return $Salt;
}
?>

 

Genererer random ascii tegn, deretter kan man f.eks. kryptere med md5 eller sha1.

Endret av BigJackW
Lenke til kommentar

Flott! Takker og bukker!

 

Tror jeg nesten bare må kjøre på med ett til spørsmål. Under ser dere sammensetningen av koden min. Med min begrenset kunnskap innenfor nettopp dette, så er jeg litt usikker på hva som er galt.. Formen er der nemlig fortsatt når antall poster overskrider 6 (et relativt lavt tall, bare for å sjekke). Har forresten ikke fiksa det med to databaser enda, men det kommer.

 

Poenget med koden under, er at formen på en eller annen måte skal bli deaktivert når antall poster overskrider 6. Det fungerer ikke :/

 

               <?php
	$connect = mysql_connect('localhost', 'bruker', 'passord');

	$fornavn = $_POST['fornavn'];
	$etternavn = $_POST['etternavn'];
	$email = $_POST['email'];
	$telefon = $_POST['telefon'];
	$antall = $_POST['antall'];
	$kode = 'testkode';

	if(!$connect){
		die('Klarte ikke å koble til! '. mysql_error());
	}

	if($_POST['submit']){
		mysql_select_db('database', $connect);
		$result = mysql_query("SELECT COUNT(*) FROM forestilling_1");
		$row = mysql_fetch_row($result);

		if ($row[0] > 6) {
                               echo 'Vi har dessverre ikke plass til flere reserveringer! Prøv en annen forestilling!';
                       }
		else {
			mysql_query("INSERT INTO forestilling_1 VALUES ('', '$fornavn', '$etternavn', '$email', '$telefon', '$antall', '$kode')"); 
			echo'<br/>Dine reservasjoner er lagret!';
		}
	}
	?>

	<form action="billetter.php" method="POST">
		Fornavn: <input type="text" name="fornavn" maxlength="50"/><br/>
		Etternavn: <input type="text" name="etternavn" maxlength="50"/><br/>
		Email: <input type="text" name="email" maxlength="75"/><br/>
		Telefon: <input type="text" name="telefon" maxlength="8"/><br/>
		Antall: <input type="text" name="antall" maxlength="1"/><br/><br/>
		<input type="submit" name="submit" value="Reserver"/>
	</form>

Endret av Themecreator
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...