Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
  1. #1

    Risoluzione problema logico

    Ragazzi allora vi spiego il mio dilemma, ho 4 tabelle:

    oggetto (id_oggetto,nome_oggetto,foto_oggetto)
    numero (id_numero, numero (va da 1 a 100)
    utente (id_utente,nome,cognome etc)
    partita (id_partita,id_utente,id_numero,id_oggetto)

    vi spiego cosa vorrei fare, per ogni oggetto ci sono 100 numeri disponibili, ogni utente è libero di prendere quanti numeri vuole, ovviamente se Mario prende il numero 10-11 per l'oggetto chiamato Telefono, quei numeri (10-11) non devono più essere liberi ma occupati, ovviamente solo per l'oggetto telefono, perchè se Mario va sull' oggetto Pc, quei numeri devono essere liberi (se non sono stati occupati da un altro utente).
    Per fare questo bastano 4 tabelle?

    Come posso realizzare questo sistema??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    da un punto di vista di performance la cosa migliore è tenere da qualche parte il conteggio dei valori ancora disponibili.

    puoi utilizzare ad esempio un array e semplicemente quando un utente sceglie i numeri controllare se questi ancora esistono nell'array, nel tal caso valida la selezione ed eliminali dall'array.

    quell'array può essere semplicemente contenuto in un oggetto serializzato che tieni in memoria sul db.

    ti conviene tenerlo a mo di oggetto per potere tenere i vari metodi di verifica, aggiunta ed eliminazione dall'array all'interno della classe di cui fa parte, in questo modo è anche più facilmente mantenibile il tutto.

  3. #3
    mmm non ho seguito bene il tuo ragionamento, io avevo intenzioni di avere una tabella che avesse al suo interno (id_numero,id_oggetto) cosi da poter sapere in qualsiasi momento quale numero è stato occupato e per quale oggetto, io avevo fatto cosi, la query funziona:

    Codice PHP:
    <?
    $id 
    $_GET['id'];
    //Tramite $_GET 
    //mi ricavo l'id ed eseguo la prima query, cosi ho l'id dell oggetto in questione e il titolo etc..
    //Grazie a questo posso sapere quale numero è stato utilizzato

    query=mysql_query("Select id_numero from partita where id_oggetto = $id"); 
    while(
    $array=mysql_fetch_array($query)){
    Numeri Occupati: <? echo $array['numero']; ?>

    }

    //Fina a qui ci siamo il problema sorge adesso ho provato a fare cosi

    $query_due=mysql_query("select numero from numeri INNER JOIN partita ON $id = gioco.id_oggetto where numeri.numero != partita.id_numero"); 
    while($array=mysql_fetch_array($query_due)){?>

    Numeri Liberi <? echo $array['numero'?> 

    <? ?>
    Il problema della seconda query è che esegue diverse cicli, nel senso se sono stati occupati 10 biglietti lui esegue 10 cicli, e ovviamente a ogni ciclo sottrae il numero diverso, il punto è come posso risolvere adesso?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    appunto invece di tenere in store così tante righe nel db, tienile una in store per ogni oggetto (televisori, bambini, bombe) e metti al suo interno un oggetto che contiene i dati dei numeri ancora liberi.

    è più semplice, meno righe da girare all'interno del db e così via.

  5. #5
    scusami non ti seguo, tu mi dici di aggiungere nel campo della tabello oggetto un campo che mi conserva i numeri utilizzati? ma se fosse cosi come posso mettere 100 numeri? perdonami ma non l'ho capita questa cosa

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    scusa se mi spiego di fretta ma è che sto lavorando al momento :P

    comunque in sostanza tieni una tabella nella quale archivi i tipi di oggetto esistenti.

    in questa tabella in un campo archivi serializzato un oggetto.
    questo oggetto sarà parte di una classe che creerai appositamente.
    Tra le proprietà di questa classe ci sarà un array contenente i valori liberi per il suddetto oggetto.

    tra i metodi di questa classe ci saranno quelli che controlleranno che il numero sia ancora libero o meno

    nel costruttore di questa classe farai popolare la proprietà contenete i numeri liberi in automatico con valori da 1 a 100 (che è quello che ti serve se non ho capito male).

    quando un utente effettua la sua selezione (ma puoi fare un controllo ancora prima quando fai apparire il form per effettuare la selezione) estrai dal db l'oggetto corrispondente a quello che l'utente vuole selezionare, lo deserializzi, applichi i metodi per controllare che i numeri richiesti siano liberi, applichi il metodo per applicare l'eliminazione dei numeri selezionati dall'utente, salvi i dati all'interno del db per indicare la selezione dell'utente e risalvi l'oggetto nel db riserializzandolo.

  7. #7
    mmm è tutto OOP, non sono ancora a quei livelli, volevo farlo inizialmente in procedurale e poi trasformalo, quindi se ho capito bene tu mi dici di fare cosi:

    tabella_oggetto
    id
    titolo
    testo
    numeri_disponibili

    ora su "numeri_disponibili" come posso mettere i numeri liberi che saranno da 1 a 100, tutti in un campo?

    perdonami ma non lo capisco ti ringrazio per la tua disponibilità, potresti aiutarmi con un esempio pratico?

    oppure non c'è un modo anche se meno performante e più lungo, ma con la stessa procedura? tipo nella query che avevo fatto prima c'era quasi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    per mettere i numeri disponibili tutti in un campo metti un array serializzandolo

    poi esegui questa routine:

    prima di creare il form estrai l'array e metti disponibili solo i numeri ancora presenti nell'array.

    quando l'utente invia il form per scegliere i numeri disponibili controlla che la tabella non sia in lock ed estrai di nuovo l'array, assicurati che i numeri siano ancora disponibili, se non lo sono restituisci errore all'utente per dirgli che i numeri sono stati presi, altrimenti fai un lock della tabella, aggiorna l'array, carica i dati dell'utente sulla sua tabella, fai un unlock della tabella degli oggetti e carica il nuovo array serializzato.

  9. #9
    Ma perche' oggetti serializzati ed altra roba complicata? Non basta una tabella con questi campi:
    codice:
    id_prodotto | numero
    ?

    Quando un utente "prenota" (non ho capito benissimo il sistema) l'oggetto con id 34 per i numeri da 10 a 15, inserisci 5 righe:
    codice:
    34 | 10
    34 | 11
    34 | 12
    34 | 13
    34 | 14
    34 | 15

  10. #10
    nickcv scusami davvero, tu mi hai aiutato molto, ma ancora non sono ai tuoi livelli, anche se non è performante mi puoi aiutare con la query di sopra, perchè di tutto quello che hai scritto tu non l'ho seguito molto, mentre sopra ero arrivata quasi alla soluzione, solo che faceva diversi cicli.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.