Visualizzazione risultati 1 fino 19 di 19

Discussione: Modificare valori tabella

  1. #1
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito Modificare valori tabella

    Ciao a tutti,

    vorrei poter modificare i valori salvati in una tabella nel database del mio sito ma non trovo tutorial o esempi che mi aiutino a comprendere il meccanismo.

    Non chiedo il codice bello e pronto, ma solo un piccolo esempio su cui studiare ed applicare al mio caso.

    Questa è la tabella



    La mia idea sarebbe quella di creare una pagina con pulsanti in grado di aumentare di 1,2,3, etc... i campi win,draw,loss,gf e gs.

    Mentre per il campo tot_pti dovrei inserire un valore che si addizioni a quello già presente.

    Successivamente dovrei moltiplicare il valore win per 3, addizionarlo al valore draw ed inserirlo nel campo pti.

    Per ultimo dovrei sottrarre il valore di gs al valore di gf ed inserirlo nel campo dif.

    In realtà le colonne dif e pti non servirebbero neanche, poichè posso inserire le operazioni nella pagina dove genera la tabella e avere i risultati direttamente li, solo che togliendo la colonna pti non avrei più un modo diretto per ordinare i valori prima dell'estrazione.

  2. #2
    Guest

    Predefinito

    Ehhh ci sono un pò di cose da fare, tu un pò te la cavi con il PHP?
    Se non ho capito male, ti serve una pagina, una mezza specie di pannello di controllo per te per gestire i risultati delle partite?aggiungere sottrarre aggiornare i dati.
    Innanzi tutto devi fare una pagina HTML ed una connessione con PHP al database poi creerai un campo input text nel tuo html con la possibilità di inserire i numeri 1,2,3,4 etc...al click di questo bottone aumenterai di quel valore il campo che ti serve...Ci sono un pò di cose da fare, inizia a buttare giù qualcosina, del tipo la pagina html con le input di inserimento e la connessione funzionante al Db poi ti aiuto se vuoi qui sul forum.
    Sinceramente se i calcoli sono sempre gli stessi cioè:

    Mentre per il campo tot_pti dovrei inserire un valore che si addizioni a quello già presente.

    Successivamente dovrei moltiplicare il valore win per 3, addizionarlo al valore draw ed inserirlo nel campo pti.

    Per ultimo dovrei sottrarre il valore di gs al valore di gf ed inserirlo nel campo dif.

    Se la procedura di calcolo è sempre quella puoi fare una sola query che ti fa tutto...
    Leggi qui intanto e creati una pagina html con una connessione al tuo DB, usa mysqli, al click del bottone ad inserimento del numero 1,2,3,4 etc...farai la connessione e l'update e poi tutti i calcoli, poi lo facciamo insieme..

    http://www.nusphere.com/kb/phpmanual...li-connect.htm

  3. #3
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    L'idea sarebbe, pian piano, di costruire una sorta di CMS che mi permetta di modificare le tabelle nel database senza dover modificare di volta in volta i dati nelle pagine e caricarle via ftp.

    Col PHP me la cavo abbastanza bene, tra manuali ed esempi ricavo sempre ciò di cui ho bisogno.

    Il mio problema, ora come ora, è che non conosco la sintassi per gestire i comandi o istruzioni con mysql.

    Questa è la connessione al db

    Codice PHP:
    mysql_connect('localhost', 'primoverofantacalcio');

    mysql_select_db ('my_primoverofantacalcio');

    $list = mysql_query(" SELECT * FROM `classifica` ORDER BY `pti` DESC ");
    e questo è il codice per estrarre i dati dalla tabella e generare la classifica

    Codice PHP:
    $conta = 1;

    while(
    $classifica=mysql_fetch_assoc($list)){

    (
    $conta % 2 == 0) ? $class = "alt" : $class = "norm";

    $diff=$classifica['gf']-$classifica['gs'];

    echo
    "<tr class=\"".$class."\">\n";
    echo
    "<td class=\"name\">".$classifica['name']."</td>\n";
    echo
    "<td >".$classifica['pti']."</td>\n";
    echo
    "<td >".$classifica['win']."</td>\n";
    echo
    "<td >".$classifica['draw']."</td>\n";
    echo
    "<td >".$classifica['loss']."</td>\n";
    echo
    "<td >".$classifica['gf']."</td>\n";
    echo
    "<td >".$classifica['gs']."</td>\n";
    if (
    $diff > "0"): echo "<td class=\"pos\">+" . $diff ."</td>";
    elseif (
    $diff < "0"): echo "<td class=\"neg\">" . $diff ."</td>";
    else: echo
    "<td class=\"equ\">±" . $diff ."</td>";
    endif;
    echo
    "<td >".$classifica['pti_tot']."</td>\n";
    echo
    "</tr>\n";

    $conta++;

    }
    e fin qui tutto bene.

    Lo step successivo è avere un clone di questa pagina, a cui avrò accesso solo io tramite login, dove oltre alla classifica ci saranno i bottoni per incrementare i valori e far eseguire le operazioni.

    Questa è una prova che ho fatto

    Codice HTML:
    <table>
            <form method="post" action="input.php">
            <tr>
              <td>Vittorie</td>
              <td><input type="text" name="win" size="20"></td>
            </tr>
            <tr>
              <td>Pareggi</td>
              <td><input type="text" name="draw" size="20"></td>
            </tr>
            <tr>
              <td>Sconfitte</td>
              <td><input type="text" name="loss" size="20"></td>
            </tr>
            <tr>
              <td>Gol Fatti</td>
              <td><input type="text" name="gf" size="20"></td>
            </tr>
            <tr>
              <td>Gol Subiti</td>
              <td><input type="text" name="gs" size="20"></td>
            </tr>
            <tr>
              <td>Punti Totali</td>
              <td><input type="text" name="pti_tot" size="20"></td>
            </tr>
            <tr>
              <td></td>
              <td align="right"><input type="submit" 
              name="submit" value="Sent"></td>
            </tr>
            </form>
            </table>
    Codice PHP:
    <?

    mysql_connect
    ('localhost', 'primoverofantacalcio');

    mysql_select_db ('my_primoverofantacalcio');

    $win = $_POST['win'];
    $draw = $_POST['draw'];
    $loss = $_POST['loss'];
    $gf = $_POST['gf'];
    $gs = $_POST['gs'];
    $pti_tot = $_POST['pti_tot'];


    //inserting data order
    $toinsert = "INSERT INTO classifica
    (win, draw, loss, gf, gs, pti_tot)
    VALUES
    ('
    $win',
    '
    $draw'
    '
    $loss'
    '
    $gf'
    '
    $gs'
    '
    $pti_tot')";

    //declare in the order variable
    $result = mysql_query($toinsert); //order executes
    if($result){
    echo(
    "<br>Inserimento avvenuto correttamente");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }
    ?>
    Questo è quello che per ora riesco a fare, ci si può lavorare sopra per arrivare al risultato che desidero?

  4. #4
    Guest

    Predefinito

    Io adesso sono al lavoro, se porti pazienza in giornata o in serata mi creo anche una tabellina per fare dei test, però se posso permettermi mysql è deprecato usiamo mysqli, e giacchè ci siamo facciamo dei prepare statment e tutto il dovuto, a vista d'occhio non metterei delle input text ma input number dato che comunque tu dovrai inserire dei numeri, se metti la input text dobbiamo gestire via PHP l'eccezione che non siano numeri(anche se a dire il vero andrebbe gestita anche se la input accetta solo numeri, però facciamo un passo alla volta).
    Comunque si riusciamo a fare tutto quello che vuoi, non c'è niente di difficile, però lo facciamo fatto bene, intanto usiamo mysqli...Io in giornata mi faccio una tabella come quella che hai messo ad inizio discussione poi creiamo la pagina che va ad inserire i dati e le select...Porta pazienza ti scrivo appena riesco comunque in serata prima o dopo cena sicuro...Ciao

  5. #5
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Non c'è problema, è giusto un progetto che sto portando avanti per imparare qualcosa.
    Per quest'anno sono solo prove, sono partito da pagine in puro html per poi renderle dinamiche con PHP una volta trovato un esauriente manuale su cui lavorare.
    Poi pian piano, tra esempi e tutorial ho iniziato ad usare i db in mysql, così da aver meno lavoro da fare per inserire dati o altro.

    L'idea, come detto, è di arrivare ad avere una sorta di cms costruito da me, così mentre lo costruisco imparo direttamente le meccaniche.

    Comunque grazie per il supporto, speravo proprio di trovare qualcuno disposto a spendere tempo per aiutare un neofita.

  6. #6
    Guest

    Predefinito

    Ciao senti io non ho capito una cosa, ahahah, ma te sti calcoli come li devi fare ?
    Nel senso io il fantacalcio non so neanche cos'è...scherzo lo so cos'è ma non ci ho mai giocato, cioè se uno vince una partita che si fa?
    Inserisci nella input win non so 1 giusto?
    E poi ?
    Non ho capito qui per esempio

    Mentre per il campo tot_pti dovrei inserire un valore che si addizioni a quello già presente.

    Ehh quale valore si deve addizionare, come si ricava sto valore?
    Quante caselle di input ci devono essere?
    Una?
    Cioè inserisci che uno ha vinto e poi fai i calcoli?
    Spiegami bene che te lo faccio dopo cena...Ho già fatto la tabella e la form..ma non so come devo fare le impostazioni dei punteggi... :) So troppo vecchio per il fantacalcio...Ahahaha
    Facciamo il caso che aumentiamo win di 1,2 o 3, come si fanno i calcoli, aumentiamo win di 1 poi per gli altri casi ci guardi tu....
    PS:Ma c'è un limite massimo o si può aumentare anche di 50?spiegami bene.

    Cioè facciamo conto che Vanze, che porello sta impicciato è ultimo, vince due partite contro Bec/STA, cosa farai?
    Inserisci due win nella record di Vanze e due Loss nel record di Bec/STA...giusto??E poi i calcoli come li fai?
    E poi dentro GF e GS che ci inserisci?fammi l'esempio pratico

    VANZE vince due partite contro Bec/STA.... :)
    Ultima modifica di fractalcosmo : 08-02-2016 alle ore 20.33.20

  7. #7
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Signori solo un osservazione! Tutto dipende dalla quantità di dati da estrarre da mysql, se si devono prelevare meno di trenta "pti" sì potrebbe creare una pagina dove fare visualizzare una tabella con tutti i campi e un modulo con metodo post con tutti i campi e specificare se aggiungiere nuovo utente (query INSERT INTO) o aggiornare dati (UPDATE) ps. con i dovuti controlli. Ad esempio io scelgo aggiorna dati invio un determinato pti e tutti i dati d'aggiornare (quindi oltre il controllo sul valore del contenuto arrivato dovrò fare una select su quella pti recuperare i dati e eseguire con php le operazioni richieste ,sommare valori o cambiare nome ecc. quando tutto questo è compiuto mando una query di Update). Io consiglierei anche una pagina che modifica i dati così come vengono inviati dal modulo (nel caso io abbia sbagliato un'operazione , quindi non dovuta al codice php .beh con la fretta capita).Che ne dite potrebbe andare come logica? Un'altra cosa quali sono i valori di tutti i campi? (diff è un intero con segno o una stringa VARCHAR ad esempio)
    Ultima modifica di darbula : 08-02-2016 alle ore 21.52.23

  8. #8
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Ora come ora non ho niente di automatizzato, di giornata in giornata inserisco a mano formazioni e punteggi in una pagina tipo questa (che sarebbe il "db" riferito all'ultima giornata giocata)

    Codice PHP:
    <?php

    // _tipo = 1 --> 4-4-2
    // _tipo = 2 --> 4-3-3
    // _tipo = 3 --> 3-4-3
    // _tipo = 4 --> 3-5-2
    // _tipo = 5 --> 4-5-1
    // _tipo = 6 --> 5-3-2


    //BECSTA FORMAZIONE

    $becsta_tipo = 2;
    $becsta_forma = array("TATARUSANU","ANTONELLI","ALBIOL","MORETTI","ZUKANOVIC","ALLAN","POGBA","GOMEZ A.","CALLEJON","HIGUAIN","MACCARONE","SEPE","MAICON","WIDMER","SODDIMO","FERNANDEZ M.","TONI","BALOTELLI");
    $becsta_voti = array(5.5,6,5.5,5.5,5.5,6.5,6,4.5,6.5,10,5.5,"","","","","","","");
    $becsta_mod = 1;
    $becsta_gol = 1;
    array_push($becsta_voti, $becsta_mod);

    //BERTO FORMAZIONE

    $berto_tipo = 1;
    $berto_forma = array("MARCHETTI","TONELLI","MANOLAS","SILVESTRE","AVELAR","MARCHISIO","RIGONI L.","SORIANO","BROZOVIC","TOTTI","DYBALA","BERISHA","ALONSO M.","DANILO","DE ROSSI","CRISETIG","DI NATALE","L. ADRIANO");
    $berto_voti = array(6.5,5.5,6.5,6,4.5,7,6,6,7,"---",9.5,"","","","","","---","---");
    $berto_mod = 1;
    $berto_gol = 0;
    array_push($berto_voti, $berto_mod);

    //BUMBE FORMAZIONE

    $bumbe_tipo = 6;
    $bumbe_forma = array("SZCZESNY","DE MAIO","GHOULAM","GOBBI","ZAPPACOSTA","BARZAGLI","PAROLO","PJANIC","KONDOGBIA","ILICIC","QUAGLIARELLA","DE SANCTIS","PERES B.","HEURTEAUX","BARRETO E.","CUADRADO","PINILLA","JOVETIC");
    $bumbe_voti = array(6,"---",6,5,"---",7,5,6,5.5,"---",6.5,"",4,"---","","",5.5,"");
    $bumbe_mod = 3;
    $bumbe_gol = 0;
    array_push($bumbe_voti, $bumbe_mod);

    //GIGI FORMAZIONE

    $gigi_tipo = 3;
    $gigi_forma = array("REINA","VRSALJKO","GLIK","EVRA","HAMSIK","MOUNIER","FLORENZI","LULIC","BACCA","DESTRO","BERARDI","CONSIGLI","ASTORI","MARIO RUI","BIRSA","FERNANDES B.","GABBIADINI","LJAJIC");
    $gigi_voti = array(6,5.5,5,"---",5.5,5.5,9.5,5.5,7,5.5,6.5,"",5.5,"","","","","");
    $gigi_mod = 0;
    $gigi_gol = 1;
    array_push($gigi_voti, $gigi_mod);

    //MILESI FORMAZIONE

    $milesi_tipo = 2;
    $milesi_forma = array("BUFFON","CHIRICHES","ROMAGNOLI A.","TELLES","LICHTSTEINER","BERTOLACCI","PERISIC","ANDERSON F.","DZEKO","PAVOLETTI","EDER","NETO","BURDISSO","BLANCHARD","MISSIROLI","KURTIC","SANSONE","DJORDJEVIC");
    $milesi_voti = array(6,"---",6.5,5,"---",6,10.5,5,5.5,5.5,5,"",6.5,6,"","","","");
    $milesi_mod = 1;
    $milesi_gol = 1;
    array_push($milesi_voti, $milesi_mod);

    //MITCH FORMAZIONE

    $mitch_tipo = 3;
    $mitch_forma = array("KARNEZIS","ACERBI","GONZALEZ","LETIZIA","VALERO B.","DUNCAN","QUAISON","PEROTTI","GILARDINO","MURIEL","BABACAR","ABBIATI","MUNOZ","BONUCCI","HALLFREDSSON","BASELI","MATOS","MANDZUKIC");
    $mitch_voti = array(5.5,5.5,6,6,6,6.5,6,10,"---",5.5,5,"","","","","",5.5,"");
    $mitch_mod = 0;
    $mitch_gol = 1;
    array_push($mitch_voti, $mitch_mod);

    //SOLDA FORMAZIONE

    $solda_tipo = 3;
    $solda_forma = array("PADELLI","RODRIGUEZ G.","A. SANDRO","MAKSIMOVIC","SAPONARA","CASTRO","VALDIFIORI","HONDA","KALINIC","MORATA","KEITA B.","BIZZARRI","MOISANDER","EDENILSON","CANDREVA","GRECO","MEGGIORINI","VAZQUEZ");
    $solda_voti = array(3.5,6.5,8,5,6,6.5,5,6,6,6,5.5,"","","","","","","");
    $solda_mod = 0;
    $solda_gol = 0;
    array_push($solda_voti, $solda_mod);

    //VANZE FORMAZIONE

    $vanze_tipo = 2;
    $vanze_forma = array("HANDANOVIC","MURILLO","LAZAAR","BASTA","CANNAVARO","HERNANES","CATALDI","FERNANDO","INSIGNE","ICARDI","BELOTTI","VIVIANO","GILBERTO","CASSANI","DONSAH","JANKOVIC","SALAH","BERNARDESCHI");
    $vanze_voti = array(3,8.5,4,6,"---","---",6,9.5,5.5,9.5,6,"",6,"",8,"","","");
    $vanze_mod = 0;
    $vanze_gol = 2;
    array_push($vanze_voti, $vanze_mod);

    ?>

    <div class="match_left">
    <?php include ("sel_tipo/becsta_left.php");?>
    <br/>
    <?php include ("sel_tipo/berto_left.php");?>
    <br/>
    <?php include ("sel_tipo/gigi_left.php");?>
    <br/>
    <?php include ("sel_tipo/bumbe_left.php");?>
    <br/>
    </div>

    <div class="match_right">
    <?php include ("sel_tipo/milesi_right.php");?>
    <br/>
    <?php include ("sel_tipo/solda_right.php");?>
    <br/>
    <?php include ("sel_tipo/mitch_right.php");?>
    <br/>
    <?php include ("sel_tipo/vanze_right.php");?>
    <br/>
    </div>
    che mi da un risultato come questo http://primoverofantacalcio.altervis...atch.php?id=24 tramite tabelle precompilate in base a formazione e posizionamento.

    Dopodiche modifico il file csv della classifica tramite un editor per csv

    Codice:
    "1","BEC/STA","9","8","6","42","30","35","1694.0"
    "2","BERTO","9","7","7","29","24","34","1619.5"
    "3","BUMBE","9","9","5","27","26","36","1601.0"
    "4","GIGI","6","9","8","27","27","27","1610.0"
    "5","MILESI","7","9","7","20","23","30","1548.5"
    "6","MITCH","5","12","6","24","26","27","1576.5"
    "7","SOLDA","4","13","6","25","27","25","1585.0"
    "8","VANZE","7","5","11","18","29","26","1526.0"
    accedo a phpmyadmin e importo il csv nella tabella sovrascrivendo i precedenti valori.

    Quello che sto chiedendo è, nella pagina dove ho la classifica, creare dei bottoni che una volta premuti mi incrementino i campi win, loss, draw,

    bottoni che incrementino (anche più di una volta) di uno 1 gf e/o gs (gol fatti e gol subiti) e un form dove inserire una cifra che verrà addizionata al campo pti_tot.

    Poi da questi dati, prenda il valore win, lo moltiplichi per 3 e lo addizioni a draw e lo inserisca nel campo pti.

    Tutto questo per ogni riga.

    Mentre diff non serve, mi basta estrarre nella pagina i valori gf e gs, sottraggo il secondo al primo e lo metto in un'altra variabile.

    Qui ad esempio, la classifica aggiornata all'ultima giornata:



    questa è la precedente



    Nell'ultima giornata, vanze ha vinto contro bumbe 2 a 0, quindi ho modificato il file csv in base al risultato ovvero
    • + 1 loss per bumbe
    • + 2 gs per bumbe
    • + 59.5 pti_tot per bumbe

    e
    • + 1 win per vanze
    • + 2 gf per vanze
    • + 72 pti_tot per vanze
    • + 3 pti per vanze


    e così anche per gli altri, in base i risultati;
    solo che ho dovuto fare un mucchio di passaggi, ciò che vorrei evitare di fare di volta in volta.
    Ultima modifica di primoverofantacalcio : 08-02-2016 alle ore 22.06.21

  9. #9
    Guest

    Predefinito

    Aspe, fammi capire, cioè stiamo aprendo un fantacalcio, calcola che io non so niente di fantacalcio, cioè quei voti sono i voti dei giocatori giusto?
    Cosa fanno cambiano nel corso del torneo?Credo di si....
    Cioè si fa tutto ma devo sapere con quale logica tu sei arrivato a dire che:

    + 1 win per vanze
    + 2 gf per vanze
    + 72 pti_tot per vanze
    + 3 pti per vanze

    72 punti....Come li calcoli quei punti lì?

    Cioè se il problema è solo fare la insert...la facciamo ti metto un codice con

    Vittorie
    Pareggi
    Sconfitte
    Gol Fatti
    Gol Subiti
    Punti Totali

    e in base ai valori che metti +1 o anche - si aggiornerà la tabella....Ma ti serve solo questo?Senza che fai con il file csv...Ma secondo me lo sai fare anche te a vedere le cose che hai fatto fin'ora....a sto punto...:)

    Se a te serve solamente evitare di aggiornare il csv ma scrivere via web i dati e poi inviarli, ma lo sai fare sicuro secondo me, fai una select del compagno che vuoi aggiornare recuperi i campi tipo il campo win etc...dentro la fecth in poche parole, recuperi il valori e gli aggiungi il valore che inserisci nella input e poi fai l'update, così anche per gli altri campi, cioè ricapitolando select * from classifica where name=VANZE ok e selezioni i campi, aggiungi i valori passati in post(che sono numeri) e fai l'update di quel record con i valori che hai aggiornato...È questo quello che devi fare?
    Ultima modifica di fractalcosmo : 08-02-2016 alle ore 22.31.20

  10. #10
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Se a te serve solamente evitare di aggiornare il csv ma scrivere via web i dati e poi inviarli, ma lo sai fare sicuro secondo me, fai una select del compagno che vuoi aggiornare recuperi i campi tipo il campo win etc...dentro la fecth in poche parole, recuperi il valori e gli aggiungi il valore che inserisci nella input e poi fai l'update, così anche per gli altri campi, cioè ricapitolando select * from classifica where name=VANZE ok e selezioni i campi, aggiungi i valori passati in post(che sono numeri) e fai l'update di quel record con i valori che hai aggiornato...È questo quello che devi fare?
    Esatto, io al momento ho solo bisogno di questo, tutto il resto era per mostrarti il motivo delle modifiche che faccio alla classifica di volta in volta.

    Non farti fregare dai codici che ho scritto, ne comprendo poco il meccanismo.

    Comunque, per capire

    Codice PHP:
    mysqli_query(" SELECT * from classifica WHERE name=VANZE ");
    seleziono la riga riferita a vanze

    poi potrei fare così

    ///estraggo i campi e li inserisco nelle variabili

    Codice PHP:
    $win = $classifica['win'];
    $draw = $classifica['draw'];
    $loss = $classifica['loss'];
    $gf = $classifica['gs'];
    $gs = $classifica['gs'];
    $pti_tot = $classifica['pti_tot'];

    ///query per incrementare i valori acquisiti (qui non so cosa fare)

    ....
    ....
    ....


    ///operazioni

    Codice PHP:
    $pti = $win*3+$draw;

    $pti_tot = $pti_tot+$pti_tot_new;

    ///query per UPDATE (anche qui non so cosa fare)

    ....
    ....
    ....

    c'è altro da fare ?

  11. #11
    Guest

    Predefinito

    La logica è proprio questa...che si fa?si recuperano tutti i valori che ci servono nel record dell'amico che andiamo ad aggiornare in questo caso VANZE, parliamo di numeri quindi PHP fa tutto da solo stringa+stringa se sono numeri addiziona, o sottrae(ma devono essere numeri) quindi recuperiamo i valori odierni aggiungiamo i valori che gli passiamo in POST e poi facciamo l'update

    UPDATE classifica SET WIN=WIN+1, GS=34(ESEMPIO) WHERE NAME=VANZE....

    Comunque dai adesso ti butto giù un pò di codice...però dato che inizi adesso a fare delle select, TI PREGO, impara subito l'OOP, te lo faccio con l'OOP di mysqli, devi usare mysqli per forza perchè mysql ormai non si usa più...
    Mezz'ora e ti posto il codice....Che poi porto fuori il cane ;) Ciao a dopo

    PS:; TI CHIEDO SOLO UNA COSA, mi dici che valore hanno i tuoi campi in tabella?cioè win è un INT o è un TEXT lo stesso per gli altri campi...io ho tutto in int tranne name che è text e pti_tot che è text.
    Ultima modifica di fractalcosmo : 08-02-2016 alle ore 23.03.35

  12. #12
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    PS:; TI CHIEDO SOLO UNA COSA, mi dici che valore hanno i tuoi campi in tabella?cioè win è un INT o è un TEXT lo stesso per gli altri campi...io ho tutto in int tranne name che è text e pti_tot che è text.


    li ho messi così da un esempio che ho trovato su youtube, i valori (20 e 50,2 sono a caso, so che servono ad indicare la lunghezza del dato, ma non so come "misurare" il dato appunto (pti_tot ad esempio non arriverà mai ad essere oltre 3000 devo quindi prenderlo così com'è ed indicare 4,1? ovvero 4 interi e 1 dopo la virgola?))

    Comunque fai con calma, io devo uscire e credo che fino a domattina non mi ricollego.

    Grazie mille per il tuo tempo :)

  13. #13
    Guest

    Predefinito

    Ma io lì ho messo un text e fatta la festa, gestisci dal php comunque è un numero...secondo me se metti INT forse lo prende, ma sinceramente non lo so con il . come si comporta comunque ho messo text, non avevo tempo a dire il vero di far delle prove...
    Se vuoi metti text anche tu altrimenti devi cambiare il penultimo bind in i e non s dopo la query di update

    Nel form ho messo che invio a pagina prove.php, tu metti la tua pagina ed in quella pagina ci metti il codice php
    Ovviamente è testato pochissimo ho fatto solo un update ma dovrebbe funzionare tu fai delle prove anche con valori negativi, ho permesso l'inserimento del - nella funzione javascript il keynum 46...

    LEGGI I COMMENTI:

    ESCO COl cane ciao a dopo

    Pagina html:
    Codice HTML

    Codice HTML:
    <body onload="pulisci()">
    <html> 
    <form method="post" action="prove.php" target="_blank">
        <table>
            <tr>
              <td>Nome Giocatore</td>
              <td><input type="text" name="name" id="name" size="10" onkeypress=""></td>
            </tr>                                          
            <tr>                                           
              <td>Vittorie</td>                            
              <td><input type="text" name="win" id="win" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td>Pareggi</td>
              <td><input type="text" name="draw" id="draw" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td>Sconfitte</td>
              <td><input type="text" name="loss" id="loss" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td>Gol Fatti</td>
              <td><input type="text" name="gf" id="gf" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td>Gol Subiti</td>
              <td><input type="text" name="gs" id="gs" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td>Punti Totali</td>
              <td><input type="text" name="pti_tot" id="pti_tot" size="10" onkeypress="return numbers(event)"></td>
            </tr>
            <tr>
              <td></td>
              <td align="right">
                  <input type="submit" name="submitValori" value="Aggiorna"></td>
            </tr>
        </table>
    </form>
    </html>
    </body>
    
    <script type="text/javascript">
        
        
    function numbers(e) {
        var keynum;
        var keychar;
        var numcheck;
    
        if (window.event){// IE
            keynum = e.keyCode;
        } else if (e.which){// Netscape/Firefox/Opera
            keynum = e.which;
        }
        
        //alert(' keynum ' + keynum);
        if ((keynum == 8) || (keynum == 9)|| (keynum == 46)|| (keynum == 45)) {
            return true;
        }
        keychar = String.fromCharCode(keynum);
        numcheck = /\d/;
        return numcheck.test(keychar);
    }    
        
    function pulisci(){
        
        document.getElementById('name').value='';
        document.getElementById('win').value='';
        document.getElementById('draw').value='';
        document.getElementById('loss').value='';
        document.getElementById('gf').value='';
        document.getElementById('gs').value='';
        document.getElementById('pti_tot').value='';
        
    }    
    </script>


    Pagina a cui invio il form cioè prove.php che tu metterai la tua

    Codice PHP:

    <?php

    /**
    * Lascia perdere questo include tu metti qui la tua connessione, fino a prendere l'oggetto $db, poi fai tutto uguale
    */
    include "model/connessione.php";

    $db = new connessione();
    $db = $db->apriConnessione();
    //----------------------------------------------------------------------------------------------
    /**
    * Tutti le input devono essere valorizzate quindi procediamo ai controlli, se non dobbiamo fare operazioni metteremo 0
    */
    if (trim($_POST["win"]) == ''){
    echo
    "Inserire Vittoria";
    exit;
    }
    if (
    trim($_POST["draw"]) == ''){
    echo
    "Inserire Draw";
    exit;
    }
    if (
    trim($_POST["loss"]) == ''){
    echo
    "Inserire Loss";
    exit;
    }
    if (
    trim($_POST["gf"]) == ''){
    echo
    "Inserire GF";
    exit;
    }
    if (
    trim($_POST["gs"]) == ''){
    echo
    "Inserire GS";
    exit;
    }
    if (
    trim($_POST["pti_tot"]) == ''){
    echo
    "Inserire Pti_Tot";
    exit;
    }
    if (
    trim($_POST["name"]) == ''){
    echo
    "Inserire Nome del Giocatore";
    exit;
    }

    //Recuperiamo i valori in post
    $winNuovi = $_POST['win'];
    $drawNuovi = $_POST['draw'];
    $lossNuovi = $_POST['loss'];
    $gfNuovi = $_POST['gf'];
    $gsNuovi = $_POST['gs'];
    $ptiTotaliNuovi = $_POST['pti_tot'];

    //I nomi sono in maiuscolo sul DB quindi strtoupper.
    $nome=strtoupper($_POST['name']);

    //Facciamo la prepare della query
    $querySelectGiocatore = $db->prepare("SELECT pti,name,win,draw,loss,gf,gs,diff,pti_tot FROM partite WHERE name=?");
    //Il bind del parametro che passiamo alla query con il ? è un text quindi usiamo la s e poi il nome del parametro
    //se avessimo due parametri in text del tipo where name=? and gf=? metteremo bind_param('si',$nome,$gf); i per gli int
    //leggere la guida
    $querySelectGiocatore -> bind_param('s',$nome);
    //Execute della query
    $querySelectGiocatore->execute();
    //Bind dei risultati, ovviamente questi sono i campi select che abbiamo definito, NB SELECT NOME CAMPI deve matchare con il bind result
    //se hai fatto select 5 campi dovrai avere il bind di 5 campi, ovviamente
    $querySelectGiocatore->bind_result($pti,$name,$win,$draw,$loss,$gf,$gs,$diff,$pti_tot);


    //Facciamo lo store_result per poi fare il num_rows, controlliamo che ci siano risultati cioè un record dalla select
    $querySelectGiocatore->store_result();
    $righe = $querySelectGiocatore->num_rows();

    //print $righe;
    if ($righe != 1){
    print
    'Query Select giocatore fallita controllare il nome Giocatore';
    exit;
    }

    //Facciamo la fetch usando il bind result
    while ($querySelectGiocatore->fetch()){

    //Questo è il record in base al nome inserito, commentiamo il print, se scommenti ed inserisci il nome del tuo giocatore
    //vedrai che il risultato sono i suoi valori del record.
    //print 'record di $_POST : ' .$pti .' ' .$name .' ' .$win .' ' .$draw .' ' .$loss .' ' .$gf .' ' .$gs .' ' .$diff .' ' .$pti_tot;

    //Impostiamo i calcoli
    $drawAggiornato = $draw+$drawNuovi;
    $winAggiornato = $win+$winNuovi;
    $ptiAggiornato = $winNuovi*3+$drawNuovi;
    $ptiTotaliAggiornato = $pti_tot+$ptiTotaliNuovi;
    $gfAggiornato = $gf+$gfNuovi;
    $gsAggiornato = $gs+$gsNuovi;
    $diffAggiornato = $gfNuovi-$gsNuovi;
    $lossAggiornato = $loss+$lossNuovi;


    //DOBBIAMO RIAPRIRE LA CONNESSIONE ALL'INTERNO DI UNA FETCH ALTRIMENTI VA IN FATAL ERROR.
    $db = new connessione();
    $db = $db->apriConnessione();

    //Prepariamo l'update dei valori
    $queryUpdate = $db->prepare('UPDATE partite SET pti=?, win=?, draw=?, loss=?, gf=?, gs=?, diff=?,pti_tot=? where name=?');
    //Il nostro bind param in base alle i o s se sono int o text
    $queryUpdate->bind_param('iiiiiiiss', $ptiAggiornato,$winAggiornato,$drawAggiornato,$lossAggiornato,$gfAggiornato,$gsAggiornato,$diffAggiornato,$ptiTotaliAggiornato,$nome);
    //Execute
    $aggiornamento = $queryUpdate->execute();

    //Ritorna un boleano quindi se è true ok altrimenti KO
    if ($aggiornamento==true){
    print
    'Aggiornamento avvenuto con successo';
    $db->close();
    exit;
    }
    else{
    print
    'Aggiornamento fallito';
    $db->close();
    exit;
    }

    }

    ?>
    PS:NON SO SE I CALCOLI SONO GIUSTI CONTROLLA I PTIAGGIORNATI....VA behh lì guardateli tu...Ciao

    pps:TI HO INSERITO ANCHE UN CONTROLLO PER LA PRIMA SELECT, CI VUOLE ANCHE QUELLO, CIOE' se il nome del giocatore non c'è...codice riaggiornato...dopo l'execute facciamo lo store_result poi il num_row se il num_rows non è 1 allora la query è fallita.Ciao
    Giacchè ci siamo e siamo anche un pò pignoli chiudiamo anche il DB no quando abbiamo finito...Comunque adesso dovrebbe andare bene, il più è fatto guardati bene i commenti, ma comunque la logica alla fine è sempre quella...

    UN PREPARE DELLA QUERY
    BIND DEI PARAMETRI
    EXECUTE
    BIND RISULTATI
    GESTIONE DI NESSUN RISULTATO
    FETCH
    RECUPERI I DATI
    CHIUDI CONNESSIONE.
    Ultima modifica di fractalcosmo : 09-02-2016 alle ore 01.41.27

  14. #14
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Ciao, mi son subito arenato a questo punto

    Codice PHP:
    include "model/connessione.php";

    $db = new connessione();
    $db = $db->apriConnessione();
    io ho modificato così

    Codice PHP:
    $servername = "localhost";
    $username = "root";
    $password = "prova";
    $dbname = "my_primoverofantacalcio";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
    die(
    "Connection failed: " . $conn->connect_error);
    }
    echo
    "Connected successfully";


    $db = new connessione();
    $db = $db->apriConnessione();
    ma mi da questo errore

    Fatal error: Class 'connessione' not found in C:\xampp\htdocs\fantacalciov3\prove.php on line 21
    P.S. lo sto provando in locale con xampp
    Ultima modifica di primoverofantacalcio : 09-02-2016 alle ore 17.02.15

  15. #15
    Guest

    Predefinito

    Primo però io che ho scritto?
    LEGGI I COMMENTI :)

    QUElla è la mia connessione, tu non hai la classe connessione e neanche il file di include al posto di quelle tre righe metti la tua connessione che ti ritorna $db cioè devi scrivere

    Codice PHP:

    $db
    = new mysqli('localhost', 'primoverofantacalcio', '', 'my_primoverofantacalcio') ;
    Questa è la connessione, poi guarda il codice ed inserisci come nome tabella la tua tabella che è classifiche io la tabella l'ho chiamata partite....

    E ricordati di cambiare in questo bind in base alle i o s se i parametri sono stringhe o int..

    Codice PHP:



    //Il penultimo S sarebbe ptiTotaliAggiornati che io ce l'ho in text nel DB tu hai messo decimal prova a mettere iiiiiiiis LEGGI LA GUIDA SOTTO ALTRIMENTI METTI TEXT E FATTA LA FESTA NEL CAMPO PTI_TOT
    $queryUpdate->bind_param('iiiiiiiss', $ptiAggiornato,$winAggiornato,$drawAggiornato,$lossAggiornato,$gfAggiornato,$gsAggiornato,$diffAggiornato,$ptiTotaliAggiornato,$nome);
    Anche quando rifai la connessione per la query di upload cancellerai le mie righe di connessione e metterai la tua che ti ho messo sopra.


    Guida al BIND:

    http://php.net/manual/en/mysqli-stmt.bind-param.php

    PROVA PERO' A LASCIARE S NEL BIND, perchè forse con decimal prende lo stesso la S...la d sarebbe per double s per string i per int...per decimal prova a lasciare con la S.Fai delle prove.

    Ciao fammi sapere
    Ultima modifica di fractalcosmo : 09-02-2016 alle ore 17.38.53

  16. #16
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Modificato tutto il necessario, ma adesso si ferma qui

    Codice PHP:
    //print $righe;
    if ($righe != 1){
    print
    'Query Select giocatore fallita controllare il nome Giocatore';
    exit;
    }

    P.S. L'errore me lo fa con tutti i nomi
    Ultima modifica di primoverofantacalcio : 09-02-2016 alle ore 18.53.07

  17. #17
    Guest

    Predefinito

    Aspetta provo a caricarlo online e lo testo....Io l'ho fatto in locale, comunque puoi commentare da store_result fino alla fine della graffe dell IF di righe != 1....Ma se ti da errore vuol dire che non trova la select....Tu hai messo il test no nel campo NAME?
    La connessione sicuro che è giusta?
    Cioè il codice è uguale ma si ferma lì?

    A me funziona anche online...

    http://fractalcosmo.altervista.org/MvcWebLog/prove.html

    Non fa la select si vede name non lo riconosce....dovresti fare dei var_dump..ma tu name ce l'hai in text come me...Siamo sicuri che la connessione è aperta si?

    Ps:c'è da invertire i tag html e body prima l'html poi il body, ma questo non c'entra con l'esecuzione del codice....

    La tabella che ho io è questa_




    e questa la struttura




    Ahhhhhhhhhhhhh MA FERMO FERMO.....ABBIAMO I DIFF DIVERSI IO HO DIFF TU NON CE L'HAI IN TABELLA :)
    Ci credo che va in errore la select... :P
    Dai che ci salti fuori da solo, lo so...
    Fammi sapere ciao

    La prima tabella in screen mi hai messo diff nell'ultimo screen invece hai tolto il campo, la query wee guarda che diff nun ce sta... :)
    Ultima modifica di fractalcosmo : 09-02-2016 alle ore 20.29.23

  18. #18
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Edit: Funziona !!!!!!!!!!!!

    Grazie mille per l'aiuto, ora provo ad applicarlo al sito online in una pagina riservata tramite login che ho già pronta.

    Grazie mille davvero!!!
    Ultima modifica di primoverofantacalcio : 09-02-2016 alle ore 21.19.42

  19. #19
    Guest

    Predefinito

    AHHH ECCO BENE ALLORA...si ADESSO LO DEVI PERSONALIZZARE...IL CONCETTO E I PASSAGGI SONO QUELLI ADESSO PUOI FARE TUTTE LE PROVE CHE VUOI E LE PERSONALIZZAZIONI...CIAU BENE mi fa piacere che ti funziona....puoi togliere diff ehh però lo devi togliere anche dalle select e dai bind...ovviamente...ciauuuu
    Ultima modifica di fractalcosmo : 09-02-2016 alle ore 22.28.52

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •