[PHP] cancellare/aggiornare record DB

ste80

Nuovo Utente
25 Feb 2012
38
0
6
41
Brescia
provato il tuo suggerimento ma ancora niente, non so dove sbaglio o non so per quale arcano motivo non mi estrae i dati (in quell'arco di date ho inserito tre record....):
Immagine.png

be pazienza, ho risolto in un modo molto spartano, ogni fine mese elimino la tabella e la ricreo perdendo i dati passati.... o meglio, li salvo in formato testo ma non sono più presenti nel mio programma, così facendo non uso la query con funzione between... e che ti devo dire.... :(
Grazie comunque per avermi seguito e date dritte molto utili.
 

marino51

Utente Attivo
28 Feb 2013
3.046
192
63
Lombardia
mi rincresce che tu abbandoni ed io non ho snobbato il to script riscrivendolo,
ma consentimi una spiegazione un po' più approfondita,

----------
dimenticando per un momento lo script, iniziamo dalla logica,

si devono compiere 3 attività distinte
1) raccogliere le date per estrarre i record dal db con un form
2) ottenute e verificate le date, calcolare i parametri della paginazione e gestire la prima pagina
3) gestire la paginazione

così ho letto nello script che hai pubblicato, riprendendo lo stesso, ho semplificato,
1) raccogliere le date per estrarre i record dal db con un form
2) ottenute e verificate le date, calcolare i parametri della paginazione
3) gestire la paginazione

queste attività ci dicono che dovremmo creare 3 script semplificando la logica di controllo
oppure ne possiamo creare 1 solo però gestendo correttamente la sequenza delle attività

PHP:
if ( empty($_POST['cerca']) and empty($_GET['pag']) )
{
    // ho appena avviato lo script php, devo visualizzare il form -----------------------
    .....
}
else
{
    if ( !empty($_POST['cerca']) )
    {
        // ho cliccato il bottone "cerca" -----------------------------------------------
        .....
    }
    else
    {
        // sto rientrando dalla pagina precedente ---------------------------------------
        .....
    }
}


----------
quando uno script (html, php, asp.net, ....) viene eseguito, produce un output HTML
questo HTML viene inviato al client ed il server "DIMENTICA TUTTO", non trattiene nessun valore ....

quindi se bisogna far "dialogare" degli script, (semplificando) lo si può fare con le variabili
$_POST e $_GET che ritornano i valori del form e inseriti nel URL,
$_SESSION impostando i valori nello script che li genera in modo da mantenerli disponibili alla sessione di lavoro specifica

questa situazione vale sia nel caso di 3 script, sia nel caso di uno script unico con le 3 attività


----------
perchè non ho cercato l'errore nello script che hai pubblicato ?
perchè mi sembra manchi la logica di controllo
quindi ho ripreso lo script pubblicato e con copia incolla ho strutturato la logica
(non curandomi di qualche errore "ortografico")


----------
gli effetti visivi nel funzionamento dello script unico come lo hai / l' ho impostato,

quando viene eseguito per la prima volta, si ottiene il form,
upload_2017-7-9_11-33-1.png

cliccando il bottone (con o senza date) la seconda attività non produce risultato visivo ma richiama

la paginazione che gestisce la visualizzazione dei records
upload_2017-7-9_11-33-57.png

upload_2017-7-9_11-34-57.png


inserendo delle date, viene ristretto il campo di azione della ricerca

come vedi lo script funziona, ed i valori vengono passati alle diverse attività con $_SESSION

prova a leggere lo script e cerca di capire la logica ed il funzionamento, è un buon esempio per costruirne altri
in particolare creando uno script unico, si può riutilizzare parte del codice (vedi function VisualizzaForm )

se hai dubbi, domande o ti servano chiarimenti, chiedi !
at salut

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'];  if ( empty($da) ) $da="1970-01-01";
        $a  = $_POST['a'];   if ( empty($a)  ) $a ="9999-01-01";

        include ("connessione.php");

        // conto le righe presenti all'interno della tabella
        $all_rows = mysql_num_rows(mysql_query( "SELECT * FROM `".$tabella."` WHERE data 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( 'Location: '.basename($_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 data 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 = $query->fetch())
        {
            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
}
?>

ps
ho usato una tabella esistente nel mio db per le prove,
quindi i dati visualizzati non corrispondono ai tuoi ma non mi sembra fondamentale

quando usi "select *" e fai riferimento al dato con "$riga[1]" ricorda che se una persona dovesse cambiare la struttura della tabella (cosa possibile in un'organizzazione), i tuoi script perdono il posizionamento, con visualizzazioni errate
 

Allegati

  • upload_2017-7-9_11-39-54.png
    upload_2017-7-9_11-39-54.png
    11,8 KB · Visite: 113
Ultima modifica:

ste80

Nuovo Utente
25 Feb 2012
38
0
6
41
Brescia
aaaaaaaaaaaaaaaaaa..... sei un grande!!!!!!!!!!!!!!
i dati mi pare che li estragga!!!!!!! hai ragione, mai mollare;)
ho dovuto sistemare
PHP:
//intabello i dati che estraggo alternando i colori
        $flag_colore=0;

        while ($riga = mysql_fetch_row($query))
perchè mi dava un errore ma poco importa, adesso voglio far apparire i risultati e sistemare il tutto! vedo una luce..... (e detto così....) oggi sul tardi o al massimo domani sistemo il tutto.
Per adesso grazie infinite, sei stato una manna dal celo!
 
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
Couting95 inserire dati da un file di testo in una tabella in php PHP 0
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 0
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 0
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4

Discussioni simili