Aiuto per strutturare applicazione

  • Creatore Discussione Creatore Discussione cusna
  • Data di inizio Data di inizio

cusna

Nuovo Utente
12 Feb 2010
15
0
1
Ciao, premetto che non ho lavorato molto con il PHP e per questo prima di
addentrarmi nello sviluppo di una piccola applicazione vi chiedo un aiuto
su come impostare il tutto.
Ovviamente il tutto lo vorrei fare in PHP e MYSQL.
Veniamo al dunque:
ho una serie di utenti esempio 100 che si loggano ed entrano
ognuno di essi ha un punteggio (in questo caso da 1 a 100) dopo essersi loggati possono scegliere tra 10 stanze (a,b,c,d,e,f,g,h,i,l) con priorità
a scelta dell' utente (per esempio scelgo come prima scelta la stanza c, come seconda scelta la stanza i, come terza scelta la stanza a ecc..)

E questo penso di riuscire a farlo... spero 0:) memorizzando il tutto in in una tabella del database.

Un giorno stabilito l' admin premendo un tasto lancerà uno script che dovrà assegnare le stanze in base alle scelte degli utenti dando la priorità a quelli che sono più alti in classifica
Faccio un altro esempio per spiegarmi meglio.
Mettiamo che ci siano 3 utenti (il n. 3, il n. 9, il n. 25) che hanno scelto la stanza c come prima scelta, tale stanza verrà assegnata a quello con punteggio maggiore in senzo più vicino allo zero (n. 3) e verrà considerata piena, si passerà a valutare un altra stanza assegnandola con lo stesso sistema.
Non so bene come impostare il tutto
Grazie in anticipo
 
Semplice, basta che ordini gli utenti del database in modo crescente e, per ogni utente, assegni tutte le stanze che ha scelto. Scusa ma, una stanza è piena quando c'è solo un utente? In questa maniera il 90% degli utenti si troverà con tutte le stanze piene...
 
ciao,
potresti fare così
crei le tabelle:
tabella scelte_utente
id int(20) autoincrement primary key //da quello che ho capito è il punteggio
nome varchar(50) NOT NULL//se ti serve
stanza_scelta varchar(1) NOT NULL//se usi a,b,c.....

la tabella scelte_utente viene riempita con un form da parte dell'utente (?)

tabella stanze
id int(20) autoincrement primary key
tipo varchar(1) NOT NULL//se usi a,b,c.....
assegnata_a int(20) DEFAULT 0//se 0 uguale a stanza libera

la tabella scelte_utente viene riempita con un form da parte dell'admin


PHP:
<?php
//l'admin lancia lo script
//fai una selec tper sapere quanti record hai
$quanti=mysql_num_rows(mysql_query("SELECT * FROM scelte_utente"));
$where="";
//cicli con for
for($j=1; $j<=$quanti;$j++){
	//per $j==1 leggi il primo record con punteggio minore
	//se il punteggio===id devi mettere ORDER BY id
	//altrimenti il campo punteggio nella tabella
	$query_su="SELECT * FROM scelte_utente ".$where." ORDER BY punteggio LIMIT 1";
	$result=mysql_query($query_su);
	//leggi l'id
	$rows=mysql_fetch_array($result);
	$id_utente=$rows['id'];
	if($j > 1){//stai leggendo i record successivi al primo
		$where.=" AND !='".$id"'";
	}
	//cerchi la prima stanza libera
	$query_st="SELECT * FROM stanze WHERE assegnata_a='0' ORDER BY tipo LIMIT 1";
	$result=mysql_query($query_st);
	$rows=mysql_fetch_array($result);
	$stanza=$rows['tipo'];
	//uppi stanza in questo modo viene assegnata
	$query_ust="UPDATE stanze SET assegnata_a='$id_utente' WHERE tipo='$stanza'";
	$result=mysql_query($query_ust);
}//fine for
?>

guarda che questa è comunque un'idea che deve essere sviluppata, ad es., tra l'altro, mancano i controlli se ci sono utenti e/o stanze libere
 
Semplice, basta che ordini gli utenti del database in modo crescente e, per ogni utente, assegni tutte le stanze che ha scelto. Scusa ma, una stanza è piena quando c'è solo un utente? In questa maniera il 90% degli utenti si troverà con tutte le stanze piene...

Grazie intanto,
gli utenti sono molto di più delle stanze diciamo 100 utenti 10 stanze
in ogni stanza ci sta un solo utente.
Sostanzialmente la tal stanza dovrà essere assegnata tra gli utenti che l' avranno scelta all' utente con numero più basso, poi si prosegue con un altra stanza e cosi' via fino a 10.
 
Grazie anche a te,
si' la tabella scelta utente viene riempita da un form da parte dell' utente
o meglio l' utente che entra si troverà 10 stanze che dovrà assegnargli una priorità come vuole lui (da 0 a 10) con magari 10 caselle a discesa per ogni stanza numerate da 1 a 10.

Mi sono dimenticato :crying: di dire che gli utenti che possono segliere non sono tutti e 100 ma a gruppi che seglierà il n. di partenze l' admin ( per esempio la prima volta parte da 1, la seconda volta si potrà partire da 30, la terza da 50 ecc... quindi la seconda volta l' utente che avrà le priorità su tutti è il n. 30)
La tabella scelta utente dovrà secondo me quindi avere una struttura come tu l' hai scritta sopra (se ho capito bene) cioè:

id int(20)
name varchar(50)
varchar(50) scelta_1 // nome prima stanza scelta
varchar(50) scelta_2 // nome seconda stanza scelta (se l' ha scelta)
varchar(50) scelta_3 // nome terza stanza scelta (se l'ha scelta)
......
varchar(50) scelta_10 // mome 10 stanza scelta (se l' ha scelta)

poi lo script dovrà elaborare e riempire
l' altra tabella definitiva stanze dovre ogni utente avrà solo una stanza.
per me è abbastanza complicata la cosa da sviluppare.:crying:
 
ciao
qui il problema diventa grosso, anche perchè l'utente puo scegliere più stanze.
ho un piccolo dubbio (che qualcuno più esperto di me può derimere):
tempo fa avevo provato (perche mi serviva) a fare una tabella con 40 campi (mi sembra che a te ne servano 50) e il mio maneger non accettava tabelle con tutti quei campi. non so se le cose sono cambiate, se no il problema diventa molto più difficile
 
ciao
pardon ho sbagliato: ho letto 50, i campi che ti servono sono (mi sembra) 10

Ciao al massimo le stanze potranno essere 30 non di più.
In effetti mi sembrava semplice da risolvere, in realtà sono alcuni gg
che penso ma non sono ancora riuscito a trovare lo sviluppo in modo corretto
 
ciao
da quello che ho capito l'utente può sceglere da una a trenta stanze, giusto?
ci deve essere una priorità di scelta?
es.
l'admin dice di partire da 27, quindi l'utente 27[*] ha la priorità sugli altri, quale stanza gli assegni se ha scelto la stanza A e la F? le priorità di scelta si devo escludere? es. se ha dato priorità 1 alla F non può dare priorità 1 anche alla A? se ha la possibilità di scegliere sino a 30 stanze devi avere una scala di priorità conseguente.

poi (messo aver risolto sopra) assegni all'utente 27 la stanza F
a qusto punto l'utente 28 ha scelto la F (priorità 1) la A (priorità 29) la L (priorità 2), allutente 28 non puoi assegnare la stanza F in quanto gia assegnata all'utente 27, quindi (data la priorità di scelta) gli assegni la stanza L, e così di seguito
ho capito quello che vuoi fare?

[*]nota: gli utenti con id minore di 27 sono esclusi dalle scelte? o, per es, vengono messi in coda
 
ciao
da quello che ho capito l'utente può sceglere da una a trenta stanze, giusto?
ci deve essere una priorità di scelta?
es.
l'admin dice di partire da 27, quindi l'utente 27[*] ha la priorità sugli altri, quale stanza gli assegni se ha scelto la stanza A e la F? le priorità di scelta si devo escludere? es. se ha dato priorità 1 alla F non può dare priorità 1 anche alla A? se ha la possibilità di scegliere sino a 30 stanze devi avere una scala di priorità conseguente.

Perfetto hai capito esattamente se ha già dato priorità 1 ad una stanza
potrà darre priorità 2 ad una seconda, 3 ad una terza ecc.. ma appena ha usato una priorità passa alla successiva (la può usare solo per una stanza)

poi (messo aver risolto sopra) assegni all'utente 27 la stanza F
a qusto punto l'utente 28 ha scelto la F (priorità 1) la A (priorità 29) la L (priorità 2), allutente 28 non puoi assegnare la stanza F in quanto gia assegnata all'utente 27, quindi (data la priorità di scelta) gli assegni la stanza L, e così di seguito
ho capito quello che vuoi fare?
Perfetto anche qui, è proprio quello che voglio fare

[*]nota: gli utenti con id minore di 27 sono esclusi dalle scelte? o, per es, vengono messi in coda

esatto sono in coda se paradossalmente gli altri non sciegliessero potrebbero avere loro la possibilità, cioè è una lista circolare.

Durante la scelta iniziale da parte degli utenti (esempio partiamo da 27)
quando il 27 ha scelto la stanza a priorità 1 uno gli utenzi successivi dal 28 in poi potrebbero anche non avere la possibilità di scelta di questa stanza , idem quando il 28 ha scelto la stanza con priorità uno i successivi dal 29 in poi non potranno segliere le stanze che sono già state "prenotate con priorità uno" da quelli prima di loro

E' un pò macchinosa la faccenda se riuisciamo ok se no amen inutile diventare matti:byebye:
 

Discussioni simili