[PHP] cancellare/aggiornare record DB

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
inanzi tutto grazie mille.
ok, più tardi ci provo e ti dico (il campo id univoco è già presente).
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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:

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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:

bubino8

Utente Attivo
28 Apr 2017
360
20
28
31
BZ
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>
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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!!!
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
}
?>
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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.....
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao, nel db mi sembra tu abbia "data" come 'varchar' cambiia il tipo in 'date'
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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.
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
prova a passare le date nel formato YYYY-MM-GG (anno-mese-giorno)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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 ....
 

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
Brescia
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à.
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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
Autore Titolo Forum Risposte Data
Cosina [PHP] Cancellare una riga da un file di testo in base al nome PHP 2
Cosina [PHP] Cancellare una riga da un file txt in base alla data PHP 1
L conferma prima di cancellare con javascript e php PHP 16
H cancellare avatar in codice PHP PHP 2
M [PHP] Cancellare singolo file da cartella su server PHP 3
A [PHP] Cancellare riga database a scelta dell'utente PHP 2
trattorino [PHP] sql aggiungere dato in una tabella senza cancellare contenuto PHP 6
D [PHP] CANCELLARE MAILPLAN PHP 2
Trapano [PHP] Cancellare file da una cartella.... PHP 5
K [PHP] Cancellare e Stampare tabella PHP 3
felino [PHP] Cancellare directory con file al suo interno PHP 2
A Cancellare record su più tabelle con PHP PHP 27
M Script php per cancellare file PHP 1
M [PHP] Cancellare file con unlink usando le wildcards? PHP 1
L php file di testo(db) cancellare una stringa Database 0
L php file di testo(db) cancellare una stringa PHP 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4

Discussioni simili