[PHP] cancellare/aggiornare record DB

ste80

Nuovo Utente
25 Feb 2012
38
0
6
43
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.203
207
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: 174
Ultima modifica:

ste80

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