- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi inserimento dati database....
-
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
-
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
-
isidoro sei riuscito poi nel tuo intento?anche a me servirebbe una cosa del genre per una squadra di calcetto...se potessi aiutarmi...grazie
-
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
-
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
-
@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
-
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
-
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
-
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
-
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
-
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 1forse manca una parentesi in questa riga:
[php]$values = '(' . $i . ', ' . $_POST['goals' . $i] . ', ';[/php]
-
no, è giusta quella riga lì.. la parentesi la mette dopo.. non riesco a capire che errore è..
-
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...
-
@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]