[PHP] cancellare/aggiornare record DB

  • Creatore Discussione Creatore Discussione ste80
  • Data di inizio Data di inizio

ste80

Nuovo Utente
25 Feb 2012
38
0
6
44
Brescia
Buonasera,
ho creato una form php che mi popola un db mysql, fino a qui nessun problema.
Visualizzo poi tutti i dati inseriti nel mio db, tutto ok, il problema mi sorge quando devo creare ora un link accanto al valore inserito che mi permette di cancellarlo e modificarlo.
Ho già creato i link nella tabella di visualizzazione per la cancellazione e l'aggiornamento (come si vede in figura) ma non so come comportarmi.
I dati che estraggo li suddivido in pagine e alterno i colori, ecco il codice:
PHP:
<html>
<head>
    <title>Orario</title>
</head>
<body>

<?php

// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente
$pag = @$_GET['pag'];
if (!$pag) $pag = 1;

include ("connessione.php");

//contaro le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM $tabella"));

//definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag -1) * $x_pag;

//Utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query = mysql_query("SELECT * FROM $tabella LIMIT $first, $x_pag");

echo "<br>";
echo "Sono presenti <b>$all_rows</b> inserimenti su <b>$all_pages</b> pagine";
echo "<br>";
echo "<br>";

//creo la parte della tabella con l'intestazione
    echo "
    <table border=1 cellpadding=1 cellspacing=0 width=100%>
    <tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straordinarie</th><th>Permesso</th><th>Ore permesso</th><th>ELIMINA</th><th>AGGIORNA</th>";

//intabello i dati che estraggo alternando i colori
$flag_colore=0;

while ($riga = mysql_fetch_row($query)){

      if($flag_colore==0){
          echo "<tr bgcolor=\"CCFFFF\">";
              $flag_colore=1;
      }
      else{
          echo "<tr bgcolor=\"E4E4E4\">";
              $flag_colore=0;
      }
echo "<td ALIGN='center'>$riga[1]</td><td ALIGN='center'>$riga[2]</td><td ALIGN='center'>$riga[3]</td><td ALIGN='center'>$riga[4]</td><td ALIGN='center'>$riga[5]</td><td ALIGN='center'>$riga[6]</td><td ALIGN='center'><a href=\"elimina.php\">Cancella</a></td><td ALIGN='center'><a href=\"aggiorna.php\">Aggiorna</a></td>";
        }
   
echo "</table>";

echo "<br>";

//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag-1) . "\">";
    echo "<-- Indietro</a>&nbsp";
  }
  echo " $pag di $all_pages ";
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag+1) . "\">";
    echo " Avanti --></a>";
  }
}

mysql_close($db);
?>

</body>
</html>

i link cancella è collegato ad elimina.php e Aggiorna ad aggiorna.php ma non riesco a fargli fare quello che voglio, cioè cliccando su cancella mi deve eliminare la riga e su aggiorna mi deve permette di rieditare i dati inseriti.
Allego anche un'immagine di come è il mio progetto.
Grazie
Immagine.png
 
se ciascuna riga fosse identificata da un ID univoco nel db,
sarebbe facile aggiungere l' ID, specifico di ciascuna riga, come parametro chiamando lo script php

HTML:
<td ALIGN='center'>
    <a href=\"elimina.php?IDdatrattare=<?php echo $id; ?>\">Cancella</a>
</td>
<td ALIGN='center'>
    <a href=\"aggiorna.php?IDdatrattare=<?php echo $id; ?>\">Aggiorna</a>
</td>";

nello script sarebbe altrettanto facile recuperare il parametro e compiere l'azione conseguente
PHP:
$id=$_GET['IDdatrattare'];
azione conseguente;

insomma potrò aver inserito qualche errore di sintassi, vista l'ora tarda
ma questa è la logica che devi seguire

se non avessi un ID, inventati qualcosa (univoco !) che lo possa sostituire
 
inanzi tutto grazie mille.
ok, più tardi ci provo e ti dico (il campo id univoco è già presente).
 
ho provato ma non va.... ho aggiunto
HTML:
<td ALIGN='center'>  <a href=\"elimina.php?id=<?php echo $id; ?>\">Cancella</a></td>
mi riporta errore:
Notice: Undefined variable: id in C:\xampp\htdocs\visualizza.php on line 53
e se clicco ugualmente su cancella mi riporta alla pagina elimina.php e mi da errore
Notice: Undefined index: id in C:\xampp\htdocs\elimina.php on line 10
Eliminazione dell' ID 0 eseguita

la pagina elimina.php è così composta
PHP:
<?php

include ("connessione.php");

$id=$_GET['id'];

$query = mysql_query ("DELETE FROM `$tabella` WHERE id = $id ");

echo " Eliminazione dell' ID <b>" . mysql_insert_id($db). "</b> eseguita <br>";

mysql_close($db);
?>

IDdatrattare sarebbe il mio id univoco che ho nel DB? non ci capisco più niente.... allego screen del mio db
db.png
 
non ci capisco più niente
calma, è semplice ....
basta usare la variabile giusta .... (il mio era solo un esempio)
PHP:
<?php
$riga[0]=3333;
$riga[1]=3333;
$riga[2]=3333;
$riga[3]=3333;
$riga[4]=3333;
$riga[5]=3333;
$riga[6]=3333;

echo "<table>";

echo "
<td ALIGN='center'>$riga[1]</td>
<td ALIGN='center'>$riga[2]</td>
<td ALIGN='center'>$riga[3]</td>
<td ALIGN='center'>$riga[4]</td>
<td ALIGN='center'>$riga[5]</td>
<td ALIGN='center'>$riga[6]</td>
<td ALIGN='center'>
    <a href=\"elimina.php?id=$riga[0]\">Cancella:$riga[0]</a>
</td>
<td ALIGN='center'>
    <a href=\"aggiorna.php?id=$riga[0]\">Aggiorna:$riga[0]</a>
</td>
";

echo "</table>";
?>
risultato
upload_2017-7-6_18-42-43.png


ps, Aggiorna:$riga[0] serve solo per controllo
poi può essere eliminato
 
Ultima modifica:
grandissimo, così facendo funziona! però vorrei che la pagina elimina.php riportasse al suo interno la voce eliminazione della data xx/xx/xxxx eseguito.
Riporto il codice
PHP:
<?php

//si connette al DB
include ("connessione.php");

//faccio la query di eliminazione
//provo a recuperare la data ma non ci riesco
$data=$_GET['data'];

$query = mysql_query ("DELETE FROM `$tabella` WHERE id = $id ");

echo " Eliminazione $data eseguita";
echo "<br>";

mysql_close($db);

?>
<br>
<a href="inserimento.php">Torna </a>
il record me lo cancella però mi da l'errore Notice: Undefined index: data
come posso risolvere? ho deciso che per questo giro la funzione elimina basta, l'aggiornamento non mi serve!
 
Ultima modifica:
Certo non passi da nessuna parte data. Devi andare a modificare cosi

HTML:
<a href=\"elimina.php?id=$riga[0]&data=$data[0]\">Cancella:$riga[0]</a>
 
Ottimo funziona tutto!!! siete stati fantastici, grazie mille.
Adesso vorrei aggiungere un modulo di ricerca per data, prima però ci provo io, al più inizio un nuovo post.
Grazie ancora ragazzi!!!
 
eccomi... ho provato ad inserire il modulo di cerca per data usando il BETWEEN sui dati nel mio DB ma mi riporta questi errori:
Notice: Undefined variable: riga in C:\xampp\htdocs\cerca.php on line 39
Warning
: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\cerca.php on line 39
Notice
: Undefined variable: riga in C:\xampp\htdocs\cerca.php on line 48
riporto lo script
PHP:
<html>
<head>
    <title>Cerca</title>
<strong>Ricerca per data:</strong>

        <form method="post" action="cerca.php">
    <td>Da: </td>
    <input type="date" name="da" size="40" maxlength="300">
    <td>A: </td>
    <input type="date" name="a" size="40" maxlength="300">
  
    <input type="submit" value="Cerca" />

  </form>


<?php

$da = @$_POST['da'];
$a = @$_POST['a'];


// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente
$pag = @$_GET['pag'];
if (!$pag) $pag = 1;

include ("connessione.php");


//contaro le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM `$tabella` WHERE $riga[1] BETWEEN $da AND $a "));

//definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag -1) * $x_pag;

//Utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query = mysql_query("SELECT * FROM `$tabella` WHERE $riga[1] BETWEEN $da AND $a LIMIT $first, $x_pag");

echo "<br>";

echo "I giorni lavorati tra il <b>$da</b> e il <b>$a</b> ";

echo "sono <b>$all_rows</b> visibili in <b>$all_pages</b> pagine";
echo "<br>";
echo "<br>";

//creo la parte della tabella con l'intestazione
    echo "
    <table border=1 cellpadding=0 cellspacing=0 width=50%>
    <tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th>";

//intabello i dati che estraggo alternando i colori
$flag_colore=0;

while ($riga = mysql_fetch_row($query)){

      if($flag_colore==0){
          echo "<tr bgcolor=\"CCFFFF\">";
              $flag_colore=1;
      }
      else{
          echo "<tr bgcolor=\"E4E4E4\">";
              $flag_colore=0;
      }
echo "<td ALIGN='center'>$riga[1]</td><td ALIGN='center'>$riga[2]</td><td ALIGN='center'>$riga[3]</td><td ALIGN='center'>$riga[4]</td><td ALIGN='center'>$riga[5]</td><td ALIGN='center'>$riga[6]</td>";
        }
  
echo "</table>";

echo "<br>";

//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag-1) . "\">";
    echo "<-- Indietro</a>&nbsp";
  }
  echo " $pag di $all_pages ";
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag+1) . "\">";
    echo " Avanti --></a>";
  }
}

mysql_close($db);
?>

</body>
</html>

Nella query ho usato SELECT * FROM `$tabella` WHERE $riga[1] BETWEEN $da AND $a poichè la variabile data non gle l'ho passata.....

Ho modificato anche la variabile $riga[1] con data... così facendo gli errori spariscono ma non mi estrae nulla non ho capito perchè....
 
Ultima modifica:
ho provato a riscriverlo,
non posso provarlo perché non ho mysql installato (e non ho voglia ....)

cerca di capire i passi logici che compie lo script e quando sei sicuro di averli capiti, vedi cosa devi aggiustare

se per caso ci fossero errori, ora tocca a te farlo funzionare, non scrivere "NON FUNZIONA" !!!!!
altrimenti da parte mia, termino le risposte

questo è il tuo codice aggiustato,
PHP:
<?php
session_start();

if ( empty($_POST['cerca']) and empty($_GET['pag']) )
{
    // ho appena avviato lo script php, devo visualizzare il form -----------------

    VisualizzaForm();
}
else
{
    if ( !empty($_POST['cerca']) )
    {
        // ho cliccato il bottone "cerca" -----------------------------------------------

        $da = $_POST['da'];
        $a  = $_POST['a'];

        include ("connessione.php");

        // conto le righe presenti all'interno della tabella
        $all_rows = mysql_num_rows(mysql_query("SELECT * FROM `$tabella` WHERE $riga[1] BETWEEN $da AND $a"));

        // Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
        $x_pag = 5;

        // definisco il numero totale di pagine
        $all_pages = ceil($all_rows / $x_pag);

        // salvo le variabili per il prossimo giro
        $_SESSION['da']        = $da;
        $_SESSION['a']         = $a;
        $_SESSION['all_rows']  = $all_rows;
        $_SESSION['x_pag']     = $x_pag;
        $_SESSION['all_pages'] = $all_pages;

        // avvio il primo giro
        header( $_SERVER['PHP_SELF'] . "?pag=1" );
        die;
    }
    else
    {
        // sto rientrando dalla pagina precedente ---------------------------------------

        // Recupero il numero della pagina corrente
        $pag = $_GET['pag'];

        // riprendo le variabili salvate
        $da        = $_SESSION['da'];
        $a         = $_SESSION['a'];
        $all_rows  = $_SESSION['all_rows'];
        $x_pag     = $_SESSION['x_pag'];
        $all_pages = $_SESSION['all_pages'];

        // Calcolo da quale record iniziare
        $first = ($pag - 1) * $x_pag;

        include ("connessione.php");

        //Utilizzando LIMIT per partire da $first e contare fino a $x_pag
        $query = mysql_query("SELECT * FROM `$tabella` WHERE $riga[1] BETWEEN $da AND $a LIMIT $first, $x_pag");

        VisualizzaForm();

        echo "<br />"
           . "I giorni lavorati tra il <b>$da</b> e il <b>$a</b> "
           . "sono <b>$all_rows</b> visibili in <b>$all_pages</b> pagine"
           . "<br /> <br />";

        //creo la parte della tabella con l'intestazione
        echo "<table border=1 cellpadding=0 cellspacing=0 width=50%>"
           . "<tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th>";

        //intabello i dati che estraggo alternando i colori
        $flag_colore=0;

        while ($riga = mysql_fetch_row($query))
        {
            if($flag_colore==0)
            {
                echo "<tr bgcolor=\"CCFFFF\">";
                $flag_colore=1;
            }
            else
            {
                echo "<tr bgcolor=\"E4E4E4\">";
                $flag_colore=0;
            }

            echo "<td ALIGN='center'>$riga[1]</td>"
               . "<td ALIGN='center'>$riga[2]</td>"
               . "<td ALIGN='center'>$riga[3]</td>"
               . "<td ALIGN='center'>$riga[4]</td>"
               . "<td ALIGN='center'>$riga[5]</td>"
               . "<td ALIGN='center'>$riga[6]</td>";
        }
 
        echo "</table>";
        echo "<br />";

        //visualizzo i link per andare avanti e indietro tra le diverse pagine
        if ($all_pages > 1)
        {
            if ($pag > 1)
            {
                echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
                echo "<-- Indietro</a>&nbsp";
            }

            echo " $pag di $all_pages ";

            if ($all_pages > $pag)
            {
                echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "\">";
                echo " Avanti --></a>";
            }
        }
    }
}

function VisualizzaForm()
{
?>

<html>
<head>
    <title>Cerca</title>
<body>
    <strong>Ricerca per data:</strong>

    <form method="post" action="cerca.php">
        <td>Da: </td>
        <input type="date" name="da" size="40" maxlength="300">
        <td>A: </td>
        <input type="date" name="a" size="40" maxlength="300">
 
        <input type="submit" name="cerca" value="Cerca" />

    </form>
</body>
</head>
</html>

<?php
}
?>
 
ok ok... be non mi riconosce la variabile riga.... Notice: Undefined variable: riga in C:\xampp\htdocs\cerca.php on line 22
ho provato a cambiare con data ma nulla... ma perchè non la riconosce??? non dovrebbe essere complicato fare una query che mi estrae i valori compresi fra due date.....
poi perchè devo usare le session()?
non capisco perchè il mio script, che ripropongo con alcune modifiche, mi riporta nessun dato eppure ho inserito dei dati di prova che dovrebbero essere estratti:
PHP:
<html>
<head>
    <title>Cerca</title>
        <p><strong>Ricerca per data:</strong></p>
        
       <a href="../inserimento.php">Torna</a>
        <br>
        <br>
        
        <form method="post" action="cerca.php">
    <td>Da: </td>
    <input type="date" name="da" size="40" maxlength="300">
    <td>A: </td>
    <input type="date" name="a" size="40" maxlength="300">
    
    <input type="submit" value="Cerca" />

  </form>


<?php

$da = @$_POST['da'];
$a = @$_POST['a'];


// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente
$pag = @$_GET['pag'];
if (!$pag) $pag = 1;

include ("connessione.php");

//controlla che sia valorizzato il campo data per la ricerca
if ($da == '' ){
    echo "<b>inserisci da!!!</b><br><br>";
    exit();
}

//contaro le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM `$tabella` WHERE data BETWEEN $da AND $a"));

//definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag -1) * $x_pag;

//Utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query = mysql_query("SELECT * FROM `$tabella` WHERE data BETWEEN $da AND $a LIMIT $first, $x_pag");

echo "<br>";


echo "I giorni lavorati tra il <b>$da</b> e il <b>$a</b> ";

echo "sono <b>$all_rows</b> visibili in <b>$all_pages</b> pagine";
echo "<br>";
echo "<br>";

//creo la parte della tabella con l'intestazione
    echo "
    <table border=1 cellpadding=0 cellspacing=0 width=50%>
    <tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th>";

//intabello i dati che estraggo alternando i colori
$flag_colore=0;

while ($riga = mysql_fetch_row($query)){

      if($flag_colore==0){
          echo "<tr bgcolor=\"CCFFFF\">";
              $flag_colore=1;
      } 
      else{
          echo "<tr bgcolor=\"E4E4E4\">";
              $flag_colore=0;
      }
echo "<td ALIGN='center'>$riga[1]</td><td ALIGN='center'>$riga[2]</td><td ALIGN='center'>$riga[3]</td><td ALIGN='center'>$riga[4]</td><td ALIGN='center'>$riga[5]</td><td ALIGN='center'>$riga[6]</td>";
        }
    
echo "</table>";

echo "<br>";

//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag-1) . "\">";
    echo "<-- Indietro</a>&nbsp";
  }
  echo " $pag di $all_pages ";
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag+1) . "\">";
    echo " Avanti --></a>";
  }
}

mysql_close($db);
?>

</body>
</html>
questo è il risultato di cerca.php:

Immagine.png


eppure ho inserito:
Immagine2.png
 
Ho provato ancora, ho inserito la ricerca direttamente nella pagina principale che volendo vedere è meglio che averla su una pagina differente ma non va.... secondo me sbaglio a inserire la query sql... posto uno screen:
Immagine.png


il codice che ho fatto è:
PHP:
<html>
<head>
    <title>Orario</title>
</head>
<body>


<?php

echo "<br>";
echo "estraggo da: $da";
echo "a: $a";

// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente
$pag = @$_GET['pag'];
if (!$pag) $pag = 1;

include ("connessione.php");

//contaro le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query('SELECT * FROM $tabella WHERE data BETWEEN $da and $a'));

//definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag -1) * $x_pag;

//Utilizzando LIMIT per partire da $first e contare fino a $x_pag, uso ORDER BY data DESC per ordinare in base al campo data
$query = mysql_query('SELECT * FROM $tabella WHERE data BETWEEN $da and $a ORDER BY data DESC LIMIT $first, $x_pag');

echo "<br>";
echo "Sono presenti <b>$all_rows</b> inserimenti su <b>$all_pages</b> pagine";
echo "<br>";
echo "<br>";

//creo la parte della tabella con l'intestazione
    echo "
    <table border=1 cellpadding=2 cellspacing=0 width=50%>
    <tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th><th>ELIMINA</th>";

//intabello i dati che estraggo alternando i colori
$flag_colore=0;

while ($riga = mysql_fetch_row($query)){

      if($flag_colore==0){
          echo "<tr bgcolor=\"CCFFFF\">";
              $flag_colore=1;
      } 
      else{
          echo "<tr bgcolor=\"E4E4E4\">";
              $flag_colore=0;
      }
echo "<td ALIGN='center'>$riga[1]</td><td ALIGN='center'>$riga[2]</td><td ALIGN='center'>$riga[3]</td><td ALIGN='center'>$riga[4]</td><td ALIGN='center'>$riga[5]</td><td ALIGN='center'>$riga[6]</td><td ALIGN='center'><a href=\"elimina.php?id=$riga[0]&data=$riga[1]\"><img src=\"del.png\"></a></td>";
        }

echo "</table>";

echo "<br>";

//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag-1) . "\">";
    echo "<-- Indietro</a>&nbsp";
  }
  echo " $pag di $all_pages ";
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag+1) . "\">";
    echo " Avanti --></a>";
  }
}
//faccio la somma del campo ore e ore_stra
$q = mysql_query('SELECT SUM(ore) AS somma_ore FROM programma WHERE data BETWEEN $da and $a');
$r = mysql_fetch_assoc($q);

echo "<br>";
echo "<br>";
echo "la somma delle ore e': &nbsp";
echo $r['somma_ore'];


$s = mysql_query('SELECT SUM(ore_stra) AS somma_orestra FROM programma WHERE data BETWEEN $da and $a');
$t = mysql_fetch_assoc($s);

echo "<br>";
echo "la somma delle straordinarie e': &nbsp";
echo $t['somma_orestra'];
//----------------------------------------------------------------------

mysql_close($db);
?>

</body>
</html>

il codice invece della mia pagina inserimento.php che poi è la mia principale è:
PHP:
<html>
    <head>
        <title>Inserimento</title>
</head>
    <body>
    <b>Inserisci orario:</b>
    <br>
    <br>
    <form method="post" action="inserimento.php">
      <table width="384" border="0">
          <tr>
            <td width="139">Data: </td>
            <td colspan="2"><input type="date" name="data" ></td>
          </tr>
          <tr>
              <td>Quando: </td>
              <td width="167"><select name="quando">
                <option value="Mattino">Mattino</option>
                <option value="Pomeriggio">Pomeriggio</option>
                <option value="Notte">Notte</option>
                <option value="Auto medica">Auto medica</option>
              </select>
              Ore:</td>
            <td width="64"><input name="ore" type="text" value="0" size="3">
            </td>
          </tr>
          <tr>
            <td>Ore Straordinarie: </td>
            <td colspan="2"><input name="ore_stra" type="text" value="0" size="3"></td>
        </tr>
        <tr>
            <td>Permesso retribuito: </td>
            <td><select name="permesso_SINO">
              <option value="SI">Si</option>
              <option value="NO" selected="selected">No</option>
            </select>
            Ore di permesso: </td>
           <td><input name="ore_perm" type="text" value="0" size="3">
          </td>
          </tr>
      </table>
    
      <br>
        <input type="submit" value="Archivia">
   </p>
    <form method="post" action="inserimento.php">
    <td>Da: </td>
    <input type="date" name="da" size="40" maxlength="300">
    <td>A: </td>
    <input type="date" name="a" size="40" maxlength="300">
    
    <input type="submit" value="Cerca" />
    </form>
           <hr>
    </body>
</html>

<?php

//classe di inserimento ore, prende in INPUT i dati della FORM precedente

//si connette al DB
include ("connessione.php");

    
    $data = @$_POST['data'];
    $quando = @$_POST['quando'];
    $ore = @$_POST['ore'];
    $ore_stra = @$_POST['ore_stra'];
    $permesso_SINO = @$_POST['permesso_SINO'];
    $ore_perm = @$_POST['ore_perm'];
    $da = @$_POST['da'];
    $a = @$_POST['a'];

//ciclo if che controlla che la data non sia vuota


if ($data == ""){
    echo "Inserisci la data...";
    include ("visualizza.php");
        exit();
}
//-----------------------------------------------   
    $query = mysql_query ("INSERT INTO $tabella (data, quando, ore, ore_stra, permesso_SINO, ore_perm) VALUES ('$data', '$quando', '$ore', '$ore_stra', '$permesso_SINO', '$ore_perm') ") or die (mysql.error());

//echo "<br>";

echo "inserimento orario del: <b>$data</b> avvenuto!";
//echo " - ID: <b>" . mysql_insert_id($db). "</b><br>";
//echo "<br>";

mysql_close($db);

include ("visualizza.php");

?>
Ho fatto mille prove, non capisco perché non funziona.....
 
Ciao, nel db mi sembra tu abbia "data" come 'varchar' cambiia il tipo in 'date'
 
ciao e grazie mille del consiglio.
Effettivamente avendo cambiato il formato nel DB non compaiono più gli errori, solo non mi estrae nulla.... come se non riconoscesse il formato... secondo me il problema sta proprio nel formato... adesso ho il campo 'data' nel DB in formato date.
Ma la query che lancio è scritta correttamente? ho cercato in tutte le guide su internet, a me pare giusta...
PHP:
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM $tabella WHERE data BETWEEN $da and $a"));
Ho anche provato a valorizzare le variabili $da $a senza passare dal form ma il risultato non cambia...
Sono bloccato.... non so come fare.
 
ok ok... be non mi riconosce la variabile riga....
poi perchè devo usare le session()?
non capisco perchè il mio script, che ripropongo con alcune modifiche, mi riporta nessun dato eppure ho inserito dei dati di prova che dovrebbero essere estratti
ok ok ho dedicato tempo inutilmente ....
 
come faccio?? comunque la data già è passata YYYY-MM-GG, se inizializzo le variabili
$da="2017-07-18";
$a="2017-07-26";
non mi estrae niente.
Riposto per l'ultima volta il codice del cerca.php
PHP:
<html>
<head>
    <title>Cerca</title>
<strong>Ricerca per data:</strong>

        <form method="post" action="cerca.php">
    <td>Da: </td>
    <input type="date" name="da" size="40" maxlength="300">
    <td>A: </td>
    <input type="date" name="a" size="40" maxlength="300">
    
    <input type="submit" value="Cerca" />

  </form>


<?php

$da = @$_POST['da'];
$a = @$_POST['a'];

//$da="2017-07-18";
//$a="2017-07-26";

echo "<br>";
echo "estraggo da: $da";
echo "a: $a";

// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente
$pag = @$_GET['pag'];
if (!$pag) $pag = 1;

include ("connessione.php");

//controlla che sia valorizzato il campo testo per la ricerca
if (@$da == '' ){
    echo "<b>inserisci un intervallo di date da ricercare!!!</b><br><br>";
    exit();
}

//contaro le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM $tabella WHERE data BETWEEN $da AND $a"));

//definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag -1) * $x_pag;

//Utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query = mysql_query("SELECT * FROM $tabella WHERE data BETWEEN $da AND $a LIMIT $first, $x_pag");

echo "<br>";


echo "ha trovato <b>$all_rows</b> giorni divisi in <b>$all_pages</b> pagine";
echo "<br>";
echo "<br>";

//creo la parte della tabella con l'intestazione
    echo "
    <table border=1 cellpadding=0 cellspacing=0 width=50%>
    <tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th>";

//intabello i dati che estraggo alternando i colori
$flag_colore=0;

while ($riga = mysql_fetch_row($query)){

      if($flag_colore==0){
          echo "<tr bgcolor=\"CCFFFF\">";
              $flag_colore=1;
      } 
      else{
          echo "<tr bgcolor=\"E4E4E4\">";
              $flag_colore=0;
      }
echo "<td ALIGN='center'>$riga[1]</td><td ALIGN='center'>$riga[2]</td><td ALIGN='center'>$riga[3]</td><td ALIGN='center'>$riga[4]</td><td ALIGN='center'>$riga[5]</td><td ALIGN='center'>$riga[6]</td>";
        }
    
echo "</table>";

echo "<br>";

//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag-1) . "\">";
    echo "<-- Indietro</a>&nbsp";
  }
  echo " $pag di $all_pages ";
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag+1) . "\">";
    echo " Avanti --></a>";
  }
}

//faccio la somma del campo ore e ore_stra
$q = mysql_query("SELECT SUM(ore) AS somma_ore FROM $tabella WHERE data BETWEEN $da AND $a");
$r = mysql_fetch_assoc($q);

echo "<br>";
echo "<br>";
echo "la somma delle ore e': &nbsp";
echo $r['somma_ore'];


$s = mysql_query("SELECT SUM(ore_stra) AS somma_orestra FROM $tabella WHERE data BETWEEN $da AND $a");
$t = mysql_fetch_assoc($s);

echo "<br>";
echo "la somma delle straordinarie e': &nbsp";
echo $t['somma_orestra'];
//----------------------------------------------------------------------

mysql_close($db);
?>

</body>
</html>
Niente ho finito le idee, rimarrà un'opera incompiuta.
Grazie comunque a tutti per la disponibilità.
 
Codice:
"SELECT * FROM $tabella WHERE data BETWEEN '$da' AND '$a'"
a parte gli ' rileggi il codice che hai postato, e anche le guide.. e tieni presente che mysql è deprecato
 

Discussioni simili