OnClick() per scorrere campi di una tabella MariaDB

di il
6 risposte

OnClick() per scorrere campi di una tabella MariaDB

Salve a tutti. Mi chiamo Edoardo e questa è la prima volta che faccio una domanda in questo forum.
Inoltre sono abbastanza neofita in javascript. Per questo chideo aiuto a voi.

Ho un database MariaDB con una tabella e i suoi campi. Questi campi sono quelli che si vedono nel primo file (access.jpg).
Io li ho riprodotti in un ambiente Windows, MariaDB,PHP, SQL.(secondo file "form.jpg"). Il problema sono i pulsanti di navigazione cerchiati in verde.

In pratica devo riprodurre i due pulsanti cerchiati in verde in modo che - con un "onClick()" - visualizzino i successivi campi della tabella che ho riprodotto nella form del secondo file.
In pratica devo trasformare la pagina che vedete nel file "access.jpg" qua sotto,
access.jpg
access.jpg

.......................................................................................................................................................................................................................
form.jpg
form.jpg

, nella pagina "form.jpg" , sempre qua sopra

I pulsanti cerchiati di verde in "access.jpg" fanno avanzare o indietreggiare il numero di "CODICE ARTICOLO" , anch'esso cerchiato in verde e tutti gli altri campi ( quadrati in rosso). .

Devo ottenere la stessa cosa nel file "form.jpg" con i due pulsanti cerchiati in blu.

La FORM dove c'è "Codice Articolo" inizia così:
<form action="" method="post"><!-- inizio <form numero 3>  -->

              <div class="form-group mx-auto">
                     <label for="exampleInputName"><H6 style="color:#c69500"><strong>Codice Articolo</strong></H6></label>
                     <input type="text" name="cod_art" class="form-control form-control-sm" required
                                   value="<?php echo $cod_art ?> " title="cod_art" aria-describedby="emailHelp">
               </div>

               <div class="form-group mx-auto">
                     <label for="exampleInputName"><H6 style="color:#c69500"><strong>Descrizione Articolo</strong></H6></label>
                            <input type="text" name="descrizione_art" class="form-control form-control-sm" required
                                   value="<?php echo $descrizione_articolo ?> " title="cod_art" aria-describedby="emailHelp">
                </div>
                ecc. ecc.
Io pensavo a qualcosa tipo
function forward(){
	document.getElementById('cod_art')......E NON SO PIU' ANDARE AVANTI
 }
E poi come dovrei fare per gli altri campi della form?

Grazie infinite.

6 Risposte

  • Re: OnClick() per scorrere campi di una tabella MariaDB

    Innanzitutto, non stai scorrendo i campi della tabella, ma i record: conoscere la differenza tra campi e record direi che è fondamentale.

    L'esposizione è un po' confusa: in pratica, vuoi realizzare una pagina Web che ti consenta di visualizzare i dati di un record includendo due pulsanti che ti permettano di andare al precedente o al successivo?

    Se l'obiettivo è questo, JavaScript non ti serve a nulla, a prima vista: è sufficiente che tu parametrizzi la chiamata alla pagina PHP indicando nei parametri dell'indirizzo (URL) l'ID univoco del record che vuoi visualizzare; quando recuperi i dati, invece che quell'unico record, dovresti recuperarli tutti e individuare così qual è il valore dell'ID precedente e successivo, riportando i link relativi alla pagina stessa con gli ID dei due articoli all'interno del markup HTML, in modo che all'utente basti fare clic per richiamare le pagine collegate.

    Onestamente, l'approccio precedente/successivo potrebbe aver senso su Access in quanto trattasi di una applicazione desktop che, recuperando tutti i dati e mettendoli in una cache, convenientemente ti fa navigare da ogni record al precedente e/o al successivo. In un contesto Web però, non mi pare efficace, poiché in questo modo sei costretto sempre a recuperare tutti i dati o a determinare con query separate qual è l'ID del record precedente o successivo, facendo quindi interrogazioni inutili sulla base dati.

    Meglio predisporre una griglia con un elenco e magari inserire un link che permetta di aprire una pagina separata, magari da visualizzare in un nuovo tab, passando l'ID del record nell'indirizzo e visualizzando solo il dettaglio, senza quel tipo di navigazione (passare a un altro record è facile quando cliccare su un altro elemento all'interno della suddetta griglia).

    In breve, cercherei di reingegnerizzare il tutto sfruttando meglio il paradigma Web evitando così di replicare forzatamente elementi dell'interfaccia di Access che non sono ottimali in quel contesto.

    Ciao!
  • Re: OnClick() per scorrere campi di una tabella MariaDB

    Ciao e grazie per la risposta.
    Ci ho ragionato un po' sopra e probabilmente hai ragione. Devo cambiare approccio al problema.
    Ti farò sapere.
    per ora grazie ancora
  • Re: OnClick() per scorrere campi di una tabella MariaDB

    Gentilmente mi potresti spiegare un po meglio questa parte:
    Se l'obiettivo è questo, JavaScript non ti serve a nulla, a prima vista: è sufficiente che tu parametrizzi la chiamata alla pagina PHP indicando nei parametri dell'indirizzo (URL) l'ID univoco del record che vuoi visualizzare; quando recuperi i dati, invece che quell'unico record, dovresti recuperarli tutti e individuare così qual è il valore dell'ID precedente e successivo, riportando i link relativi alla pagina stessa con gli ID dei due articoli all'interno del markup HTML, in modo che all'utente basti fare clic per richiamare le pagine collegate.
    E se hai voglia e tempo anche questa:
    Meglio predisporre una griglia con un elenco e magari inserire un link che permetta di aprire una pagina separata, magari da visualizzare in un nuovo tab, passando l'ID del record nell'indirizzo e visualizzando solo il dettaglio, senza quel tipo di navigazione (passare a un altro record è facile quando cliccare su un altro elemento all'interno della suddetta griglia).
    Te ne sarei molto grato....magari con un esempio piccolo piccolo...
    Grazie ancora
  • Re: OnClick() per scorrere campi di una tabella MariaDB

    edo64 ha scritto:


    Gentilmente mi potresti spiegare un po meglio questa parte [...]
    Dimmi cosa non hai capito bene, altrimenti te la riscrivo uguale...
  • Re: OnClick() per scorrere campi di una tabella MariaDB

    Si hai ragione.
    Intanto ti posso dire che ho cambiato approccio:
    Nome database: mansaci2
    Tabella in questione: anagrafica_articoli
    La pagina su cui sto lavorando si chiama "elenco-motori.php"
    Ho fatto una query sulla tabella "anagrafica_articoli" per filtrare solo i motori ( tra tutti gli articoli della tabella).
    La query è questa:
    SELECT cod_articolo,Codice_gimar, descrizione_articolo,kW_motore,taglia_motore, giri_motore,forma_motore,tensione_motore,frequenza_motore,corrente_motore, cos_fi_motore, classe_isolamento_motore, cuscinetto_LO_motore, cuscinetto_LA_motore,note_articolo,peso,sottoscorta 
    FROM `anagrafica_articoli` 
    WHERE (Codice_gimar LIKE 'RM%' AND descrizione_articolo LIKE 'MOT%') OR (kW_motore LIKE '%')
    Con questa query - che ho chiamato $SQ1 in PHP - ottengo solo i motori e i dati che mi servono. "cod_articolo" è la PRIMAY KEY
    -----------------
    Qui ho cambiato approccio. Invece di riprodurre fedelmente la pagina Access (vedi sopra), ho messo tutti i dati in una tabella.

    Quindi ho scritto :
    $rs1 = mysqli_query ($mysqli , $SQ1);
    dove $mysqli è la connessione al database.

    Poi ho inizializzato le variabili:
     <?PHP while ($row = $RS1->fetch_array (MYSQLI_ASSOC))
    					{
                            $data = date ("d-m-Y" , strtotime ($data));
                            $id_motore = mysqli_real_escape_string ($mysqli , $row['cod_articolo']);
                            $targhetta = mysqli_real_escape_string ($mysqli , $row['Codice_gimar']);
                            //$cod_art = mysqli_real_escape_string ($mysqli , $row['cod_art']);
                            $descrizione= mysqli_real_escape_string ($mysqli , $row['descrizione_articolo']);
                            $kW = mysqli_real_escape_string ($mysqli , $row['kW_motore']);
                            $taglia = mysqli_real_escape_string ($mysqli , $row['taglia_motore']);
                            $RPM = mysqli_real_escape_string ($mysqli , $row['giri_motore']);
                            $tipo = mysqli_real_escape_string ($mysqli , $row['forma_motore']);
                            $Volt = mysqli_real_escape_string ($mysqli , $row['tensione_motore']);
                            $Hz = mysqli_real_escape_string ($mysqli , $row['frequenza_motore']);
                            $Ampere = mysqli_real_escape_string ($mysqli , $row['corrente_motore']);
                            $Cosfi= mysqli_real_escape_string ($mysqli , $row['cos_fi_motore']);
                            $isolamento = mysqli_real_escape_string($mysqli , $row['classe_isolamento_motore']);
                            $cuscinetto_lo = mysqli_real_escape_string($mysqli , $row['cuscinetto_LO_motore']);
                            $cuscinetto_la = mysqli_real_escape_string($mysqli , $row['cuscinetto_LA_motore']);
                            $Peso = mysqli_real_escape_string($mysqli , $row['peso']);
                            $sottoscorta = mysqli_real_escape_string($mysqli , $row['sottoscorta']);
                            $note = mysqli_real_escape_string($mysqli , $row['note_articolo']);
    
    	?>
    Poi ho messo ogni variabile in una cella della tabella (in fondo ad ogni record c'è una icona per modificare i dati del motore, perchè la tabella è dentro al ciclo WHILE) :
    <tr>
                                    <td><?php echo $data; ?></td>
    				<td><?php echo $targhetta; ?></td>
                                    <td><?php //echo $cod_art; ?></td>
                                    <td><?php echo $descrizione; ?></td>
                                    <td><?php echo $kW; ?></td>
                                    <td><?php echo $taglia; ?></td>
                                    <td><?php echo $RPM; ?></td>
                                    <td><?php echo $tipo; ?></td>
    				<td><?php echo $Volt; ?></td>
                                    <td><?php echo $Hz;; ?></td>
    				<td><?php echo $Ampere; ?></td>
                                    <td><?php echo $Cosfi ?></td>
                                    <td><?php echo $isolamento; ?></td>
    				<td><?php echo $cuscinetto_lo; ?></td>
    				<td><?php echo $cuscinetto_la; ?></td>
    				<td><?php echo $Peso; ?></td>
                                    <td><?php echo $sottoscorta; ?></td>
                                    <td><?php echo $note; ?></td>
    				<td style="text-align:center;">
    					<a href="modifica_motori.php?id_controllo=<?php echo $id_motore; ?>">
    							<i class="fa fa-file-o"></i>
    					</a></td>
    	</tr> 			
    	<?php
    		} //parentesi di chiusura del ciclo WHILE
    	?>
    Infine un bottone per aggiungere i motori:
    <div class="container">
                <a class="btn btn-primary mx-auto" role="button" href="aggiungi_motore.php">aggiungi motore</a>
            </div>
    In questo modo però la tabella continua a crescere in veticale.
    Comq faccio a mettere in fondo pulsanti con "1" , "2", "3", ecc.....in modo che cliccando sul "2" - per esempio - si possa cambiare pagina?
  • Re: OnClick() per scorrere campi di una tabella MariaDB

    edo64 ha scritto:


    Comq faccio a mettere in fondo pulsanti con "1" , "2", "3", ecc.....in modo che cliccando sul "2" - per esempio - si possa cambiare pagina?
    Aggiungi un parametro alla pagina che indichi appunto il numero selezionato, e usa gli operatori SQL specifici (es. TOP, LIMIT, ecc.) per eseguire la query in modo che restituisca al massimo il numero di record per la pagina corrente, saltando quelli delle pagine precedenti.

    In generale, se imposti una dimensione per pagina $RowsPerPage = 20, ad esempio, dovrai prendere al massimo un numero di record equivalente a $RowsPerPage saltando i primi N record (ossia saltando i primi N = ($PageNumber - 1) * $RowsPerPage record).

    Ciao!
Devi accedere o registrarti per scrivere nel forum
6 risposte