Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    modificare dati di una tabella mysql attraverso form php

    ciao, non so da dove partire ma tant'è

    Sto scrivendo un sito per manifestazioni sportive io ho una pagina in php dove un utente fa il login ed entra; una volta entrato ci sono due menu a tendina (select), uno che sceglie il girone, l'altro sceglie la giornata e in base alle scelte vengono buttati fuori i dati sottoforma di tabella e fin qua ci sono arrivato. vi posto anche il codice


    questo è il file principale

    codice:
    <?php
    echo '<div id="contenuti">';
    //una volta entrato e loggato avrò un doppio menù a tendina
    //devo scegliere Girone e Giornata che andranno passate nello script a fondo pagina
    ?>
    
    <form method='POST' action="index.php?page=risultati">
     <fieldset>
      <legend>Risultati Lega: si prega di scegliere Girone e Giornata</legend>
    
    Scegli Girone:
       <select name="girone">
       <option value=""></option>
       <option value="a">GIRONE A</option>
       <option value="b">GIRONE B</option>    
      </select>
    
    Scegli Giornata:
      <select name="giornata">
       <option value=""></option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
       <option value="4">4</option>
       <option value="5">5</option>
       <option value="6">6</option>
       <option value="7">7</option>
       <option value="8">8</option>
       <option value="9">9</option>
       <option value="10">10</option>
       <option value="11">11</option>
       <option value="12">12</option>
       <option value="13">13</option>
       <option value="14">14</option>    
      </select>
      <input type="submit" value="Scegli">
     </fieldset>
    </form> 
    
    <?php
    
    //se sono state scelte sia il girone che la giornata vado a selezionare i dati dal db
    if(isset($_POST['girone']) && isset($_POST['giornata']))
    {
    	//se si è autenticato l'admin mostra la versione modificabile
    	
    	if (($_SESSION["level"])==1)
    	{
    	$girone=$_POST['girone'];
    	$giornata=$_POST['giornata'];
    	$query = "SELECT Num_giornata, Sq_casa, Sq_ospite, Gol_casa, Gol_ospiti, Data 
    				FROM Calendario_"."$girone"." WHERE Num_giornata = "."$giornata";
    	$result = mysql_query($query);
    
    //richiamo la funzione estrai_dati che li estrae e li mette in una tabella. è qua che devo //inserire la versione modificata 
    	if ($result)
    	{
    		echo "Benvenuto Amministratore";
    		$g=strtoupper($girone);
    		echo "<h4>GIRONE "."$g";
    		echo "  ||  GIORNATA NUMERO  "."$giornata";
    		estrai_dati($result);
    	}
    	}
    	else
    	//se si è autenticati come utenti normali mostra la tabella normale
    	{
    	$girone=$_POST['girone'];
    	$giornata=$_POST['giornata'];
    	$query = "SELECT Num_giornata, Sq_casa, Sq_ospite, Gol_casa, Gol_ospiti, Data 
    				FROM Calendario_"."$girone"." WHERE Num_giornata = "."$giornata";
    	$result = mysql_query($query);
    
    //richiamo la funzione estrai_dati che li estrae e li mette in una tabella
    	if ($result)
    	{
    		echo "Benvenuto Utente Registrato";
    		$g=strtoupper($girone);
    		echo "<h4>GIRONE "."$g";
    		echo "  ||  GIORNATA NUMERO  "."$giornata";
    		estrai_dati($result);
    	}
    	}
    }
    
    echo '</div>';
    ?>

    mentre questo è la funzione estrai_dati (quella che pesca i dati dal db e li mette in tabella)

    codice:
    function estrai_dati($result) 
    {
    	echo "\n".'<table>'."\n";
    	// stampo riga di intestazione con i nomi dei campi
    	echo '<tr>'."\n";
    	for ($i=0; $i<mysql_num_fields($result); $i++ )
    		{
    		echo '<th>'.mysql_field_name($result,$i).'</th>'."\n";
    		}		
    	echo '</tr>'."\n";
    
    	// memorizzo i dati in un array associativo
    	$i=1;
    	while ($row = mysql_fetch_assoc($result))
    	{
    	// stampo le celle del risultato. La numerazione delle colonne e delle righe mi servirà nei fogli di stile
    
    	($i%2) ? $class = 'pari' : $class = 'dispari';
    	$i++;
    	echo '<tr>'."\n";
    	$c=1;
    	foreach ($row as $data)
    	{
    	echo '<td class = "'.$class.' '.'colonna'.$c.'">'.$data.'</td>'."\n";
    	$c++;
    	}
    
    	echo '</tr>'."\n";
    	}
    	echo '</table>'."\n";
    }
    Fin qua ci sono (più o meno). Quello che vorrei capire è creare oltre alla tabella, riuscire a visualizzare per ogni riga una form che mi permetta di inserire il risultato e salvarlo nel db.
    ho provato a vedere gli esempi fatti in classe ma non riesco a capire da dove iniziare.
    spero di essere stato chiaro

  2. #2
    Non ho letto tutto il tuo codice perchè è troppo lungo, comunque rispondo alla parte testuale della tua domanda:

    Una soluzione è quella di inserire in ogni form un identificativo che ti servirà per associare il campo che verrà compilato alla riga stessa.

    L'indentificativo puoi stamparlo a video con php sotto forma di campo:

    <input type="hidden" value="%idriga%" name="idriga">

    Il parametro "idriga" sarà poi a te disponibile quando processarai l'invio del form, così potrai associare il risultato al corrispondente elemento del database con quell'id.

  3. #3
    allora, ho provato a fare così.

    dalla pagina risultati.php vado a richiamare la funzione estrai_form contenuta sempre nel file myfunction.php.

    Rispetto alla funzione estrai_dati costruisce sempre una tabella solo che a ogni riga "stampa" un form con due select e un invio. Questi form fornisce i dati che andranno al file updatedb.php che farà la query di update. Posto tutto il codice

    pagina risultati.php

    Codice PHP:
    $girone=$_POST['girone'];
        
    $giornata=$_POST['giornata'];
        
    $query "SELECT Id_partita, Num_giornata, Sq_casa, Sq_ospite, Gol_casa, Gol_ospiti, Data 
                    FROM Calendario_"
    ."$girone"." WHERE Num_giornata = "."$giornata";
        
    $result mysql_query($query);

       
    //richiamo la funzione estrai_dati che li estrae e li mette in una tabella
        
    if ($result)
        {
            echo 
    "Benvenuto Amministratore";
            
    $g=strtoupper($girone);
            echo 
    "<h4>GIRONE "."$g";
            echo 
    "  ||  GIORNATA NUMERO  "."$giornata";
            
    estrai_form($result,$girone,$giornata); 
    questa è funzione estrai_form contenuta dentro il file myfunction.php, quella che in pratica crea la tabella con la form

    Codice PHP:
    function estrai_form($result,$girone,$giornata
    {
        echo 
    "\n".'<table>'."\n";
        
    // stampo riga di intestazione con i nomi dei campi
        
        
    echo '<tr>'."\n";
        for (
    $i=0$i<mysql_num_fields($result); $i++ )
            {
            echo 
    '<th>'.mysql_field_name($result,$i).'</th>'."\n";
            }        
        echo 
    '</tr>'."\n";
        
        
    // memorizzo i dati in un array associativo
        
    $i=1;
        
        while (
    $row mysql_fetch_assoc($result))
        {
        
    // stampo le celle del risultato. La numerazione delle colonne e delle righe mi servirà nei fogli di stile

        
    ($i%2) ? $class 'pari' $class 'dispari';
        
    $i++;
        echo 
    '<tr>'."\n";
        
        
    $c=1;
        
        foreach (
    $row as $data)
            {
            echo 
    '<td class = "'.$class.' '.'colonna'.$c.'">'.$data.'</td>'."\n";
            }
            
    $id_partita=$row['Id_partita'];
    echo 
    "<form method='POST' action='update.php'>";

    //Questi 2 mi servono a passare poi i valori giusti al file update.php
    [color=red]echo "<input type='hidden' value=".$id_partita." name='id_partita'>";
    echo 
    "<input type='hidden' value=".$girone." name='girone'>";[/color]


    echo 
    '<td class = "'.$class.' '.'colonna'.$c.'">';
    echo <<<EOD

      <select name="gol_casa">
       <option value=""></option>
       <option value="1">1</option>  
      </select>

    </td>
    <td>

      <select name="gol_ospiti">
       <option value=""></option>
       <option value="1">1</option>   
      </select>

    </td>
    EOD;
    echo 
    '<td class = "'.$class.' '.'colonna'.$c.'">';
    echo <<< EOD
        
        <input type="submit" value="Inserisci Risultato">
    </form> 
    </td>
    EOD;
          
       echo 
    '</tr>'."\n";
        }
        echo 
    '</table>'."\n";

    Questo è il file update.php richiamato dal form del file prima

    Codice PHP:
    <?php
    require_once ('config.php');
    //mi collego al database
    connect();
    $gol_casa=$_POST['gol_casa'];
    $gol_ospiti=$_POST['gol_ospiti'];
    $id_partita=$_POST['id_partita'];
    $girone=$_POST['girone'];

    $query "UPDATE calendario_".$girone." SET Gol_casa=".$gol_casa.", Gol_ospiti=".$gol_ospiti."WHERE Id_partita=".$id_partita;
    mysql_query($query);
    ?>
    Lasciando stare che nei due select ho messo solo un valore per accorciare, non mi da errori però non funge.

    Il procedimento può essere corretto? Cosa devo spostare o cambiare?

  4. #4
    era giusto,

    avevo sbagliato la sintassi della query update

    codice:
    $query = "UPDATE Calendario_$girone SET Gol_casa='$gol_casa', Gol_ospiti='$gol_ospiti' WHERE Id_partita='$id_partita'";

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.