Aiuto struttura tabella mysql nel DB

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
Buongiorno, sto organizzando un fantacalcio online (qualcuno di voi conoscerà sicuramente il famoso gioco) con php e mysql. Avevo bisogno di un vostro consiglio perchè non trovo la soluzione migliore. Per ogni giornata del campionato ho una tabella con 22 giocatori e rispettivo voto che si incrociano con i nomi delle squadre. In seguito viene eseguito il totale dei voti per ogni squadra.
Detto questo, è più giusto mettere come campi numero giocatore, nome gioc squadra 1, voto gioc squadra 1,nome gioc squadra2, voto gioc squadra 2..(in questa maniera potrei utilizzare il sum di mysql, ma all'iscrizione di ogni squadra dovrei modificare le colonne delle tabelle tramite alter) OPPURE mettere come campi nome squadra, nome gioc1, voto gioc1, nome gioc 2, voto gioc2...in questa maniera non potrei usare sum perchè i voti della stessa squadra sarebbero "in orizzontale", ma non altererei mai più la tabella...
Spero di essermi spiegato, grazie per l'attenzione.
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Non ti sei spiegato... :cool:

Tabelle necessarie:

SQUADRA
-id
-squadra

GIOCATORI
-id
-giocatore

GIORNATE
-id
-data

VOTI
-idgiornata
-idsquadra
-idgiocatore
-voto

Spero possa esserti di aiuto a risolvere il problema...
 

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
---è simile a quello che ho fatto io...ma l'update automatico dei voti (li prendo da una pagina internet pubblica cercando il nome) in questa maniera risulta abbastanza lungo perchè per ogni giocatore è necessario un update ed all'aumentare del numero delle squadre potrebbe sforare il timeout della pagina php...è per questo che pensavo di aggiungere una colonna ogni squadra mentre ogni riga sarà riservata al primo giocatore, la seconda riga al secondo giocatore...eccetera...in questa maniera devo sempre fare al massimo 18 update (che è il numero di giocatori presentati in una formazione comprensivo dei panchinari..)
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
ok, stai lavorando un DB relazionale quindi attento a replicare ogni volta un campo, potrebbe andarti bene all'inizio ma poi col tempo ti ritroveresti un DB lento lento nelle query.

Non riesco a capire bene come fai a reperire le info che necessiti dalla pagina remota (preg_match?) e come è formata la pagina (se me la indichi potrei aiutarti meglio).

Cmq per prima cosa è meglio che ti salvi la pagina in locale e da li la analizzi una volta che hai finito la elimini.

Per ovviare al problema del timeout prova con

system('/usr/bin/php path/dello/script.php');

facendo così in teoria non incorri nel timeout perchè fai girare lo script in background. (sempre che l'hosting su cui stai implementi il php in maniera CGI).

ciao
 

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
dunque....con php utilizzo file_get_contents con il quale reperisco l'html, poi utilizzo str_pos per reperire giocatore e relativo voto....la pagina è quella della gazzetta ufficiale...http://magic.gazzetta.it/magiccampionato/09-10/free/statistiche/?98e3c4b503...io ho fatto una tabella per ogni giornata dando ad ogni squadra tre colonne per ogni tabella...(id, ruoloid, votoid)...sono consapevole che è una soluzione non ottima, ma mi viene comodo quando poi faccio la query per calcolare il totale di giornata...che ne pensi? grazie per le risposte...
ps: il mio hosting è uno dei peggiori dal punto di vista della flessibilità (aruba), ma anche il fattore economico ha la sua importanza....0:)
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Spero di aver capito male quando ho letto che fai una tabella nuova per ogni giornata... :cool:

Sorvolando su questo per fare il grab delle pagine mi permetto di consigliarti questa classe: http://sourceforge.net/projects/simplehtmldom/

La metti nella stessa cartella dove esegui il codice (o dove ti piace di più) e la richiami nel tuo script.

Sotto ti posto il codice per estrarre tutte le info di cui hai bisogno (sei fortunato che sono in giornata ... 0:))

include('simple_html_dom.php');

$content = file_get_html('http://magic.gazzetta.it/magiccampionato/09-10/free/statistiche/?98e3c4b503...io');

$tmpGiornata = $content->find('div[class=freeTableTitle]',0)->find('span[class=giornata]',0)->innertext;

$giornata = trim(str_replace('Giornata','',$tmpGiornata)); //qui esce il numero di giornata

//echo $giornata."\n";

unset($tmpGiornata); //svuoti la variabile non si sa mai

$tmpGiornata = $content->find('div[class=freeTable]',0)->find('table',0);

foreach($tmpGiornata->find('tr') as $tr) {

$arr['giornata'] = $giornata;
$arr[$n]['codice'] = $tr->find('td',0)->innertext;
$arr[$n]['giocatore'] = $tr->find('td',1)->innertext;
$arr[$n]['squadra'] = $tr->find('td',2)->innertext;
$arr[$n]['voto'] = $tr->find('td',3)->innertext;
$arr[$n]['gol'] = $tr->find('td',4)->innertext;
$arr[$n]['rig'] = $tr->find('td',5)->innertext;
$arr[$n]['amm'] = $tr->find('td',6)->innertext;
$arr[$n]['esp'] = $tr->find('td',7)->innertext;
$arr[$n]['ax'] = $tr->find('td',8)->innertext;
$arr[$n]['pm'] = $tr->find('td',9)->innertext;

$n++;

}

//print_r($arr);

Provato ed eseguito correttamente in una manciata di secondi

come risultato otterrai un array simile a questo

[1] => Array
(
[codice] => 101
[giocatore] => ABBIATI Christian
[squadra] => MIL
[voto] => 0,00
[gol] => 0
[rig] => 0
[amm] => 0
[esp] => 0
[ax] => 0
[pm] => 0,00
)

[2] => Array
(
[codice] => 102
[giocatore] => AMELIA Marco
[squadra] => GEN
[voto] => 6,00
[gol] => 1
[rig] => 0
[amm] => 0
[esp] => 0
[ax] => 0
[pm] => 5,00
)
per tutti i giocatori che compongono la tabella

Poi con i dati riempi le tabelle del db

Per sapere il totale di giornata basterà eseguire

select sum(tb.voto) as totale from db.voti tb where idgiornata = id-della-tabella-giornata and idsquadra = id-della-tabella-squadra

Se vuoi anche la media scrivi sum(tb.voto) as totale, avg(tb.voto) as media ecc. ecc.

Se proprio vogliamo fare i "seri" crea anche il campo anno nella tabella giornate (id,giornata,anno).

Come ogni lavoro progetta bene la partenza perchè se fai una partenza così così il seguito sarà un disastro. Te lo dico per esperienza e notti insonne :cool:.

Se hai bisogno siamo qui ciao
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Per correttezza ho provato ad eseguire il codice anche per altri link e con tabella simile (portieri, difersori ecc.) e l'array è esatto quindi lo puoi utilizzare tranquillamente su tutte le tabelle, fai sempre delle prove prima.

ciao
 

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
Ok, quello che dici tu è perfetto ( a parte la somma che non è così semplice perché ci sono titolari e riserve e non tutti portano punti alla somma finale, ma è un dettaglio), ma non risolve il motivo per cui ho cambiato strada, cioè il timeout...in questa maniera ho un update se ho ben capito per ogni giocatore...e con l'aumentare delle squadre puó essere un problema...
Inoltre, da ignorante ti chiedo: c'è così tanta differenza a livello di prestazioni tra 1 tabella per tutte le giornate e 38 tabelle una per ogni giornata...ripeto che ho aumentato il numero per ovviare al timeout e fare meno update...grazie, ciao
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Scusami te se non riesco a capire la storia degli update, con il metodo che ti ho indicato hai solo inserimenti. Se non vuoi avere una cronistoria dei dati puoi sempre usare truncate su voti per svuotare la tabella.
Credimi che se ci pensi bene stai facendo un lavoro veramente macchinoso, poi ognuno è libero di procedere come meglio crede. Stai lavorando con un database relazionale e una volta inseriti i dati per mezzo delle query te li giri come vuoi.

Non riesco a capire dove sta il problema di timeout, come fai ad avere timeout su uno script de genere, forse è meglio che posti il codice della pagine che ti provoca il timeout.

Ciao.
 

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
...aspetta mi spiego meglio...nel fantacalcio ogni squadra ha un gruppo di giocatori. Ogni giornata ogni squadra decide di schierarne un sottoinsieme alcuni titolari ed alcune riserve...la cosiddetta consegna della formazione prima dell'inizio della partita. Questo corrisponde ad un insert multiplo nella tabella voti nel tuo schema...nel momento in cui vengono pubblicati i voti, allora l'inserimento degli stessi corrisponde ad un update perchè i record della formazione ci sono già...e questo a quanto ne so io non può essere multiplo, ma uno ogni riga...
A questo punto all'aumentare delle squadre diventerebbe proibitivo l'update...spero di raseremo spiegato...
 

bwasizi

Nuovo Utente
21 Ago 2009
15
0
0
Ciao, ho risolto utilizzando la tua struttura e mettendo un campo formazione nella tabella squadre...in questo modo posso utilizzare l'insert....quindi GRAZIE e scusa per il disturbo...:cool::cool::cool:
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Aiuto struttura Database MySQL MySQL 0
Y Aiuto per rappresentazione grafica di struttura Categorie sottocategorie - 3 livelli PHP 1
D struttura sito flash (era: aiuto!!) Flash 6
P Aiuto per rendere un Bot Telegram Privato PHP 0
M Un aiuto da chi ha apple Mac e Software 0
P Richiesta di aiuto Presentati al Forum 1
A Aiuto per pagina php PHP 0
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
I Aiuto php Dependent Lookup PHP 0
R Aiuto con le query MS Access 2
M AIUTO ESERCIZIO JAVA Javascript 1
G Aiuto con htaccess e rewriterule PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
M Aiuto con inserimento immagini WordPress 6
D aiuto schermata photoshop Photoshop 0
L Aiuto per programma web php/mySQL PHP 2
A Aiuto php colore diverso PHP 10
L Aiuto creazione menu mancante WordPress 0
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Insert into select - Aiuto MySQL 0
I Aiuto bash linux Programmazione 1
F Aiuto java script Javascript 2
R Cerco aiuto Offerte e Richieste di Lavoro e/o Collaborazione 7
I Aiuto query MySQL 8
G Aiuto HTML, collegamento con un bottone a una <div> di un' altra pagna HTML e CSS 5
R Aiuto sito html Offerte e Richieste di Lavoro e/o Collaborazione 3
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
G Mi dite come faccio? Aiuto photoshop ? Photoshop 1
C prestashop paragamento contrassegno aiuto modulo E-Commerce 0
Michelebozzo [PHP] Rimuovere pubblicazione nome pagina ... aiuto! PHP 7
Caldus richiesta aiuto Mac e Software 0
R [Javascript] Aiuto su questo script Javascript 2
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
Giacomo92 [HTML] AIUTO!! Regular Expression :( Offerte e Richieste di Lavoro e/o Collaborazione 15
T Aiuto per php7 e mysqli PHP 3
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
K [Java] aiuto switch case Java 1
E salve tutti spero si essere di aiuto e di trovare aiuto Presentati al Forum 2
D [MS Access] aiuto non riesco a capire MS Access 6
P [PHP] Browser game, aiuto a tempo libero. Offerte e Richieste di Lavoro e/o Collaborazione 0
wildcity9 aiuto per sbloccare account instagram bannati Social Media Marketing 0
A Aiuto per configurare il banner di Iubenda su un sito in html HTML e CSS 0
I Aiuto Firma App Sviluppo app per Android 0
C [PHP] Chiedo un aiuto, Array multidimensionale. PHP 3
H [Javascript] aiuto favore Javascript 1
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
N [PHP] Aiuto PHP 1
M [PHP] Aiuto su inner join PHP 10
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Giatenx Ho bisogno di aiuto Annunci servizi di Social Media Marketing 1

Discussioni simili