Aiutino su PHP e MySQL [Checkbox]

anayra

Nuovo Utente
19 Nov 2015
1
0
0
Premetto che sono nuovo nel campo del Php e MySQL, quindi non linciatemi se faccio questa domanda abbastanza semplice.
Stavo lavorando ad un progetto per un'amico che mi ha chiesto se riuscissi a creare un sito che interfacciandosi con il database estrapoli dei dati (Numero di coppia, Cognome e Nome) inserendoli in una tabella, e a sua volta aggiorni un dato (Top).




Questa è la tabella che mi ritrovo (Ho messo solo 4 dati di prova), ho pensato che per aggiornare il dato "Top" che avrà solamente 0 e 1 mi sarebbe convenuto utilizzare una Checkbox dato che restituisce un valore Booleano, quindi perfetto nel mio caso, il problema sorge qui: Come posso far eseguire la query d'update per quella checkbox?

(In poche parole io ho un ciclo che mi scrive tutti gli elementi del database in tabella, e al posto del top mi mostra una checkbox che io dovrei utilizzare per restituire un valore al database che poi mi servirà per utilizzarlo in un'altra pagina).

blocco2.php [Misto tra PHP e HTML]

PHP:
<?php
$blocco = "BLOCCO 2";
$categoria = ". . .";
$giudice = "COGNOME NOME";
?>

<!DOCTYPE html>
<html>
<head>
  <link href="css/tables.css" rel="stylesheet" type="text/css">
  <link href="css/admin.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor=#000000 text=#ffffff><center>
  <font color=#FFDB00 size="5"><b><?php echo $blocco ?></b></font><br><br>
  <font color=#FFDB00 size="3"><b>CATEGORIA</b> <?php echo $categoria ?></font><br>
  <font color=#FFDB00 size="2"><b>GIUDICE</b> <?php echo $giudice ?></font><br><br>
<?php
session_start();
$conn = new mysqli("localhost", "username", "password", "my_database");

// Check connection
if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}

$sql = "SELECT * FROM iscritti ORDER BY coppia ASC";
$result = $conn->query($sql);

echo "<table>
        <tr>
          <th><b><font size=4>Coppia</th>
          <th><b><font size=4>Cognome</th>
          <th><b><font size=4>Nome</th>
          <th><b><font size=4>Top</th>
        </tr>";

while($row = mysqli_fetch_array($result))
{
  echo "<tr>";
  echo "<td><center><font size=2>" . $row['coppia'] . "</td>";
  echo "<td><center><font size=2>" . $row['cognome'] . "</td>";
  echo "<td><center><font size=2>" . $row['nome'] . "</td>";
  echo '<td><center><input type="checkbox" name="check[]" value=1"></td>';
  echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>
<br>
</center></body></html>
Girando per il web ho visto che bisogna utilizzare un tasto submit, o utilizzare un codice in Javascript (Che io sconosco completamente), quindi opterei per il tasto submit a fondo pagina, ma non saprei proprio come strutturarlo.
La query che ho pensato è:
UPDATE iscritti SET top=VALORE_CHECKBOX WHERE cognome=COGNOME_CORRISPONDENTE AND nome=NOME_CORRISPONDENTE

Io devo sostituire VALORE_CHECKBOX, COGNOME_CORRISPONDENTE e NOME_CORRISPONDENTE, solo che utilizzando un ciclo, non so proprio come fare (L'avrò già detto una decina di volte).

Qualcuno che mi sappia aiutare ( E che abbia capito il mio problema? D: )
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
immagino che nelle tabella iscritti ci sia un campo id primarykey autoncrement, se non c'è dovresti metterlo
quindi mi baso come se ci fosse
PHP:
<!-- <html><head> ...... -->
<?php
//dati per connessione
if(isset($_POST['modifica'])){
	foreach($_POST['check'] as $id => $valore){
		$query="UPDATE iscritti SET top='$valore' WHERE id= $id";
		//mysqli_query .......
		// e un ritorno automatico all tabella vedi il js sotto
	}
	echo "record aggiornati, tra 3 secondi torno alla tabella";
?>
<script language="JavaScript" type="text/javascript">
<!--  
window.setTimeout ("location.href=('<?php echo $_SERVER['PHP_SELF'];?>')", 3000);//3000 = 3 secondi, se vuoi più o meno
 -->
</script>	
<?php
}
?>
<!-- quello che ci vuole -->
<?php
//....
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<table>
        <tr>
          <th><b><font size=4>Coppia</th>
          <th><b><font size=4>Cognome</th>
          <th><b><font size=4>Nome</th>
          <th><b><font size=4>Top</th>
        </tr>";

while($row = mysqli_fetch_array($result))
{
  $id=$row['id'];//o come si chiama il tuo campo id del record
  echo "<tr>";
  echo "<td><center><font size=2>" . $row['coppia'] . "</td>";
  echo "<td><center><font size=2>" . $row['cognome'] . "</td>";
  echo "<td><center><font size=2>" . $row['nome'] . "</td>";
  echo '<td><center><input type="checkbox" name="check[$id]" value='1'"></td>';//se metti l'id sai a cosa si riferisce
  echo "</tr>";
}
echo "<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td><input name='modifica' type='button' value='modifica'></td>";
echo "</table>";
echo "</form>";
//.......
?>
fai delle prove perchè io non l'ho provato
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao dimenticavo
vedo che usi html5: <!DOCTYPE html>
ora i tag <font> <center> non sono supportati da html5, devi usare i css, che comunque sono da usare anche in html4