• User Attivo

    Problemi inserimento dati database....

    Ciao

    Allora io ho un problema, sto realizzando un portale sul campionato di basket in cui gioco, vorrei
    gestire un database con inserimento delle partite e relativi tabellini etc etc...

    La struttura del database per il problema in questione è Giocatore(id,nome,cognome,....)
    Partecipazione(id_giocatore,id_partita,p
    unti_realizzati) Partita(id,....)

    Allora questo è il problema: effettuando l'inserimento dei tabellini dei giocatori io vorrei ottenere
    una situazione di questo tipo, clicco sulla partita di cui inserire i tabellini dei giocatori che vi
    hanno partecipato e mi viene fuori una schermata con tutti i giocatori della rosa della squadra
    con accanto un checkbox... e fino a qui sono riuscito a farlo anche grazie all'aiuto dei ragazzi del
    forum... Sotto trovate il codice utilizzato per visualizzare il checkbox... adesso vorrei andare
    in una altra pagina in cui compaiono solo i giocatori selezionati ed accanto ad ogni giocatore mettere
    una area testuale di dimensione 2 su cui scrivere i punti realizzati, quindi salvare il tutto sulla tabella
    partrciapazione del database...

    I miei principali problemi sono nel passare l'array giocatori creato con la checkbox alla pagina successiva,
    forse sbaglio la sintassi, ho cercato in molti liberi ma non trovo niente riguardo al passare un array
    sfruttando il metodo post.... poi in realtÃ_ non ancora ben chiaro come inserire una parte di codice html
    nel php, basta che scrivo il codice fra virgolette?

    Vi prego di aiutarmi, sono un neofita del php, ho iniziato a programmare la settimana scorsa e senza il
    vostro aiuto non riesco ad andare avanti...

    PHP:

    //create a query
    $sql = "SELECT giocatore.Id as id, giocatore.Nome as nome, giocatore.Cognome as cognome
    FROM
    squadra,giocatore
    WHERE
    squadra.CodiceFip = giocatore.CodiceFip and squadra.Denominazione = 'Basket Manciano'";

    $result = mysql_query($sql);

    $table = "<table border="1">\n";
    $i = 0;
    while ($row = mysql_fetch_array($result))
    {
    $table .= "<tr>\n";
    $table .= "<td>\n" . $row['nome'] . "</td>\n";
    $table .= "<td>\n" . $row['cognome'] . "</td>\n";
    $table .= "<td>\n<input name="giocatori*" type="checkbox" value=$row['id']></td>\n";
    $table .= "</tr>\n";
    $i++;
    }
    $table .= "</table>\n";
    echo $table;


    Ciao e grazie


  • Super User

    ti confesso che non ho capito molto di quello che ti serve.

    purtroppo parto per una settimana di ferie e non potrò seguire questa discussione ma sono certo che qualcuno lo farà 🙂

    però... anche questo qualcuno penso che avrà qualche difficoltà a proporre una soluzione.

    potresti magari cominciare ad esporre il tutto dall'inizio.
    forse, rivedendo il problema alla fonte si riesce a cavare una piccola analisi che evita qualche problema e così arrivare prima alla soluzione 😄


  • User

    isidoro sei riuscito poi nel tuo intento?anche a me servirebbe una cosa del genre per una squadra di calcetto...se potessi aiutarmi...grazie


  • User Attivo

    nell'input della checkbox, al posto di "giocatori*" scrivi "$row['id']" e poi nella pagina successiva fai un ciclo che ti controlla se la checkbox è TRUE o FALSE, e in caso sia TRUE vai a prendere i dati nel database tramite l'id. Se non sai programmare, la cosa è difficile, ma, se sai programmare, puoi partire dalla mia idea per sviluppare il codice.
    Ciao 😉


  • User

    per quanto mi riguarda non sono programmatore...
    quindi è un po' arabo per me...

    io nello specifico ho una tabella con:

    id - cognome - nome - goals - vittorie - pareggi - sconfitte


  • User Attivo

    @fantagalla said:

    per quanto mi riguarda non sono programmatore...
    quindi è un po' arabo per me...
    comicia a modificare la parte che ti ho detto e passami il link della pagina, almeno controllo che vada bene.. poi vedo se riesco a scrivere il codice (forse per domani sera)..ciao


  • User

    io non ho quella parte di codice..ho 2 pagine, inserisci.php e modulo.htm..

    inserisci.php
    [PHP]<?
    include("config.inc.php");
    $db = mysql_connect($host, $username);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($database, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    // 1. Crea la tabella temporanea
    $query = "CREATE TABLE tmp_calcetto (
    id INT (5) UNSIGNED not null,
    goals INT (5) UNSIGNED not null,
    vittorie INT (5) UNSIGNED not null,
    pareggi INT (5) UNSIGNED not null,
    sconfitte INT (5) UNSIGNED not null)";

    if (mysql_query($query, $db))
    echo "Creazione tabella temporanea eseguita correttamente";
    else
    echo "Errore durante creazione tabella temporanea";

    // 2. Inserisci in questa tabella tutte le coppie ID/Goal ricavate dall'invio del modulo
    $query = "INSERT INTO tmp_calcetto (id, goals, vittorie, pareggi, sconfitte) VALUES
    (1, '{$_POST['goals1']}', '{$_POST['vittorie1']}', '{$_POST['pareggi1']}', '{$_POST['sconfitte1']}'),
    (2, '{$_POST['goals2']}', '{$_POST['vittorie2']}', '{$_POST['pareggi2']}', '{$_POST['sconfitte2']}'),
    (3, '{$_POST['goals3']}', '{$_POST['vittorie3']}', '{$_POST['pareggi3']}', '{$_POST['sconfitte3']}'),
    (4, '{$_POST['goals4']}', '{$_POST['vittorie4']}', '{$_POST['pareggi4']}', '{$_POST['sconfitte4']}'),
    (5, '{$_POST['goals5']}', '{$_POST['vittorie5']}', '{$_POST['pareggi5']}', '{$_POST['sconfitte5']}'),
    (6, '{$_POST['goals6']}', '{$_POST['vittorie6']}', '{$_POST['pareggi6']}', '{$_POST['sconfitte6']}'),
    (7, '{$_POST['goals7']}', '{$_POST['vittorie7']}', '{$_POST['pareggi7']}', '{$_POST['sconfitte7']}'),
    (8, '{$_POST['goals8']}', '{$_POST['vittorie8']}', '{$_POST['pareggi8']}', '{$_POST['sconfitte8']}'),
    (9, '{$_POST['goals9']}', '{$_POST['vittorie9']}', '{$_POST['pareggi9']}', '{$_POST['sconfitte9']}'),
    (10, '{$_POST['goals10']}', '{$_POST['vittorie10']}', '{$_POST['pareggi10']}', '{$_POST['sconfitte10']}'),
    (11, '{$_POST['goals11']}', '{$_POST['vittorie11']}', '{$_POST['pareggi11']}', '{$_POST['sconfitte11']}')
    ";

    if (mysql_query($query, $db))
    echo "Creazione tabella temporanea eseguita correttamente";
    else
    echo "Errore durante creazione tabella temporanea";

    // 3. Effettua l'aggiornamento
    $query = "UPDATE calcetto, tmp_calcetto
    SET calcetto.vittorie = calcetto.vittorie + tmp_calcetto.vittorie,
    calcetto.pareggi = calcetto.pareggi + tmp_calcetto.pareggi,
    calcetto.sconfitte = calcetto.sconfitte + tmp_calcetto.sconfitte,
    calcetto.goals = calcetto.goals + tmp_calcetto.goals
    WHERE calcetto.id = tmp_calcetto.id";

    if (mysql_query($query, $db))
    echo "Creazione tabella temporanea eseguita correttamente";
    else
    echo "Errore durante creazione tabella temporanea";

    // 4. Distruggi la tabella temporanea
    $query = "DROP TABLE tmp_calcetto";

    if (mysql_query ($query, $db))
    echo ("Inserimento riuscito!");
    else
    echo ("Errore nell'inserimento :-(");

    if (mysql_query ($query, $db))
    echo ("Eliminazione tabella temporanea non riuscita");
    ?>[/PHP]

    modulo.htm

    [HTML]<html>
    <head>
    <meta name="robots" content="noindex">
    <meta http-equiv="Content-Language" content="it">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Modulo inserimento statistiche giocatori calcetto</title>
    </head>
    <body>
    <FORM METHOD="post" ACTION="inserisci.php">
    <table border="1" width="100%" style="border-collapse: collapse" id="table1">
    <tr>
    <td width="15%" align="center"><b>COGNOME</b></td>
    <td width="15%" align="center"><b>NOME</b></td>
    <td width="15%" align="center"><b>GOALS</b></td>
    <td width="15%" align="center"><b>VITTORIE</b></td>
    <td width="15%" align="center"><b>PAREGGI</b></td>
    <td width="15%" align="center"><b>SCONFITTE</b></td>
    </tr>
    <tr>
    <td width="15%">NASTARI</td>
    <td width="15%">Raffaele</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals1" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie1" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi1" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte1" size="5"></td>
    </tr>
    <tr>
    <td width="15%">COVA</td>
    <td width="15%">Simone</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals2" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie2" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi2" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte2" size="5"></td>
    </tr>
    <tr>
    <td width="15%">GIACOMETTI</td>
    <td width="15%">Maurizio</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals3" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie3" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi3" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte3" size="5"></td>
    </tr>
    <tr>
    <td width="15%">POMATI</td>
    <td width="15%">Davide</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals4" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie4" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi4" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte4" size="5"></td>
    </tr>
    <tr>
    <td width="15%">CERESA</td>
    <td width="15%">Francesco</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals5" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie5" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi5" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte5" size="5"></td>
    </tr>
    <tr>
    <td width="15%">GIOIA</td>
    <td width="15%">Daniele</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals6" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie6" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi6" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte6" size="5"></td>
    </tr>
    <tr>
    <td width="15%">AVVISATO</td>
    <td width="15%">Francesco</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals7" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie7" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi7" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte7" size="5"></td>
    </tr>
    <tr>
    <td width="15%">TERRANOVA</td>
    <td width="15%">Marco</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals8" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie8" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi8" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte8" size="5"></td>
    </tr>
    <tr>
    <td width="15%">TURRI</td>
    <td width="15%">Matteo</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals9" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie9" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi9" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte9" size="5"></td>
    </tr>
    <tr>
    <td width="15%">...</td>
    <td width="15%">...</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals10" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie10" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi10" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte10" size="5"></td>
    </tr>
    <tr>
    <td width="15%">...</td>
    <td width="15%">...</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals11" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="vittorie11" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="pareggi11" size="5"></td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="sconfitte11" size="5"></td>
    </tr>
    </table>
    <INPUT TYPE="submit" VALUE="Inserisci">
    </p>
    </FORM>
    </body>
    </html>[/HTML]

    e volevo utilizzare i pulsanti radio per selezionare pareggio, vittoria o sconfitta invece di dover mettere la cifra 1 nella casella di testo..
    inoltre volevo ricavare i giocatori dal database con un ciclo invece di doverli scrivere a mano nella pagina modulo e nella pagina inserisci


  • User Attivo

    modifica modulo.htm in questo modo:
    [php]
    <html>
    <head>
    <meta name="robots" content="noindex">
    <meta http-equiv="Content-Language" content="it">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Modulo inserimento statistiche giocatori calcetto</title>
    </head>
    <body>
    <FORM METHOD="post" ACTION="inserisci.php">
    <table border="1" width="100%" style="border-collapse: collapse" id="table1">
    <tr>
    <td width="15%" align="center"><b>COGNOME</b></td>
    <td width="15%" align="center"><b>NOME</b></td>
    <td width="15%" align="center"><b>GOALS</b></td>
    <td width="15%" align="center"><b>VITTORIE</b></td>
    <td width="15%" align="center"><b>PAREGGI</b></td>
    <td width="15%" align="center"><b>SCONFITTE</b></td>
    </tr>
    <?
    include("config.inc.php");
    $db = mysql_connect($host, $username);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($database, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query="SELECT * FROM calcetto ORDER BY cognome DESC";
    $result = mysql_query($query, $db);

    while ($row = mysql_fetch_array($result))
    {
    extract($row)
    echo"
    <tr>
    <td width="15%">$cognome</td>
    <td width="15%">$nome</td>
    <td width="15%" align="center"> <INPUT TYPE="text" NAME="goals1" size="5"></td>
    <td width="15%" align="center"> <input type="checkbox" name="vittorie$id"></td>
    <td width="15%" align="center"> <input type="checkbox" name="pareggi$id"></td>
    <td width="15%" align="center"> <input type="checkbox" name="sconfitte$id"></td>
    </tr>
    ";
    }
    ?>
    </table>
    <INPUT TYPE="submit" VALUE="Inserisci">
    </p>
    </FORM>
    </body>
    </html>
    [/php] adesso mettilo online e passami il link!! se non me lo passi diventa difficile, devo controllare se vanno bene i nomi delle checkbox..
    ciao


  • User

    mi da errore inserimento dati nella tabella temporanea...

    non ti posso dare il link altrimenti mi incasineresti i dati presenti nel database, lo sto già utilizzando


  • User Attivo

    ho dimenticato il punto e virgola ( ; ) dopo extract($row).. mettilo.. cmq a me serve il link della pagina modulo.htm per controllare il mio codice, se non schiaccio INVIO al database non succede niente.. se non mi passi il link non posso vedere dove sbaglio..

    EDIT:
    non schiacciare invio neanche te, perchè non ho ancora messo a posto il codice dell'altra pagina.. prima devo vedere se funge questo


  • User

    UN'ALTRA SOLUZONE è:

    modulo.php
    [php]<FORM METHOD="post" ACTION="inserisci.php">
    <table border="1" width="100%" style="border-collapse: collapse" id="table1">
    <tr>
    <td width="15%" align="center"><b>COGNOME</b></td>
    <td width="15%" align="center"><b>NOME</b></td>
    <td width="15%" align="center"><b>GOALS</b></td>
    <td width="15%" align="center"><b>VITTORIA</b></td>
    <td width="15%" align="center"><b>PAREGGIO</b></td>
    <td width="15%" align="center"><b>SCONFITTA</b></td>
    </tr>
    <?php
    include("config.inc.php");
    $db = mysql_connect($host, $username);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($database, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "SELECT cognome, nome FROM calcetto ORDER BY id";

    $result = mysql_query ($query, $db);

    $i = 0;
    while ($line = mysql_fetch_array ($result))
    {
    $i++;
    echo '<tr>';
    echo '<td width="15%">' . $line['cognome'] . '</td>';
    echo '<td width="15%">' . $line['nome'] . '</td>';
    echo '<td width="15%" align="center"> <INPUT TYPE="text" NAME="goals' . $i . '" size="5"></td>';
    echo '<td width="15%" align="center">';
    echo '<INPUT TYPE="radio" NAME="result' . $i . '" VALUE="4"></td>';
    echo '<td width="15%" align="center">';
    echo '<INPUT TYPE="radio" NAME="result' . $i . '" VALUE="2"></td>';
    echo '<td width="15%" align="center">';
    echo '<INPUT TYPE="radio" NAME="result' . $i . '" VALUE="1"></td>';
    echo '</tr>';
    }
    ?>
    </table> <INPUT TYPE="submit" VALUE="Inserisci"> </p> </FORM> [/php]

    inserisci.php
    [php]<?
    include("config.inc.php");
    $db = mysql_connect($host, $username);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($database, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    // 1. Crea la tabella temporanea
    $query = "CREATE TABLE tmp_calcetto (
    id INT (5) UNSIGNED not null,
    goals INT (5) UNSIGNED not null,
    vittorie INT (5) UNSIGNED not null,
    pareggi INT (5) UNSIGNED not null,
    sconfitte INT (5) UNSIGNED not null)";

    if (mysql_query($query, $db))
    echo "Creazione tabella temporanea eseguita correttamente";
    else
    echo "Errore durante creazione tabella temporanea";

    // 2. Inizia la costruzione della query di inserimento...
    $query = "INSERT INTO tmp_calcetto (id, goals, vittorie, pareggi, sconfitte) VALUES ";
    $i = 0;
    while (!isset ($_POST['goals' . ++$i]))
    {
    $values = '(' . $i . ', ' . $_POST['goals' . $i] . ', ';
    switch ($_POST['result' . $i])
    {
    case '4': $values .= '1, 0, 0), '; break;
    case '2': $values .= '0, 1, 0), '; break;
    case '1': $values .= '0, 0, 1), '; break;
    }
    $query .= $values;
    }

    // ... poi elimina l'ultima virgola di troppo e la esegue
    $query = substr ($query, 0, strlen ($query) - 2);

    if (mysql_query($query, $db))
    echo "Inserimento dati in tabella temporanea eseguito correttamente";
    else
    echo "Errore durante inserimento dati nella tabella temporanea<br>Query: " . $query . "<br>Errore: " . mysql_error();

    // 3. Effettua l'aggiornamento
    $query = "UPDATE calcetto, tmp_calcetto
    SET calcetto.vittorie = calcetto.vittorie + tmp_calcetto.vittorie,
    calcetto.pareggi = calcetto.pareggi + tmp_calcetto.pareggi,
    calcetto.sconfitte = calcetto.sconfitte + tmp_calcetto.sconfitte,
    calcetto.goals = calcetto.goals + tmp_calcetto.goals
    WHERE calcetto.id = tmp_calcetto.id";

    if (mysql_query($query, $db))
    echo "Aggiornamento del database eseguito correttamente";
    else
    echo "Errore durante aggiornamento del database";

    // 4. Distruggi la tabella temporanea
    $query = "DROP TABLE tmp_calcetto";

    if (mysql_query ($query, $db))
    echo ("Operazione completata!");
    else
    echo ("Eliminazione della tabella temporanea non riuscita :-(");
    ?> [/php]

    però mi da questo errore:
    Query: INSERT INTO tmp_calcetto (id, goals, vittorie, pareggi, sconfitte) VALUE
    Errore: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    forse manca una parentesi in questa riga:

    [php]$values = '(' . $i . ', ' . $_POST['goals' . $i] . ', ';[/php]


  • User Attivo

    no, è giusta quella riga lì.. la parentesi la mette dopo.. non riesco a capire che errore è.. 😞


  • User

    io non vedo dove chiude la parentesi...comunque...un'altra cosa che mi chiedevo è se si può aggiungere un boc alla fin dove casomai inserire un nuovo giocatore se non è presente nel database...


  • User Attivo

    @fantagalla said:

    io non vedo dove chiude la parentesi..
    la parentesi la chiude qua (il ".=" è per concatenare stringhe..):
    [php]
    switch ($_POST['result' . $i])
    {
    case '4': $values .= '1, 0, 0), '; break;
    case '2': $values .= '0, 1, 0), '; break;
    case '1': $values .= '0, 0, 1), '; break;
    }
    [/php]