Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET

elpirata

Utente Attivo
18 Mar 2009
263
7
18
Buonasera a tutti,
ho una card-block realizzata con bootstrap e poi popolata com php, mysql.

Questa


Questo invece il codice utilizzato per generarla
PHP:
<?php
$sqlrev = "SELECT * FROM commesse WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) and DAY(dtscrev) >= DAY(NOW())ORDER BY id_com ASC"; //RICAVO I RECORD DEL MESE CORRENTE CON DATA REVISIONE NON ANCORA SCADUTA
$rsrev = $mysqli->query($sqlrev);
$cntrev = mysqli_num_rows($rsrev);

$sqlrevsc = "SELECT * FROM commesse WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'"; // RICAVO I RECORD CON DATA REVISIONE SCADUTA ED ESCLUDO IL CONTEGGIO DEI NON VALORIZZATI
$rsrevsc = $mysqli->query($sqlrevsc);
$cntrevsc = mysqli_num_rows($rsrevsc);
?>

<!--APRO UNA ROW COMPOSTA PER LA GESTIONE SCADENZE REVISIONI-->
<div class="container-home">
    <div class="row">
          <div class="col-sm-4">
                <div class="card">
                  <div class="card-block">
                        <div class="alert alert-success-home" role="alert"><h2><b>Monitoraggio revisione ministeriali Scadute e in scadenza</b></h2></div>
                        <ul class="list-group">
                            <li class="list-group-item justify-content-between">Veicoli con scadenza revisione questo mese (non ancora scaduta)<a href="index.php?page=scadenza_revisione&tipo=daeseguire"><span class="badge-home badge-default badge-pill"><?= $cntrev ?></span></a></li>
                        </ul>
                        <ul class="list-group">
                            <li class="list-group-item justify-content-between">Veicoli con data revisione scaduta: <a href="index.php?page=scadenza_revisione&tipo=scadute"><span class="badge-home badge-default badge-pill"><?= $cntrevsc ?></span></a></li>
                        </ul>
                  </div>
                </div>
            </div>
    </div><!--Chiudo la riga scadenza revisioni-->
Il problema è che non riesco a realizzare una pagina di visualizzazione o meglio una pagina che mostri i dati passati tramite GET all'utente in virtù del link che clicca, ho provato a scrivere una cosa del genere, ma tralasciando il pessimo aspetto grafico, l'unica cosa che mi viene restituito sono le intestazioni delle colonne, naturalmente senza i dati.

PHP:
<?php

$veicolo='UNDEF';
$targa='UNDEF';
$cliente='UNDEF';
$tel='UNDEF';
$dtscrev='UNDEF';
$where='';

//var_dump($_GET['tipo']);
//exit;

if(isset($_GET['tipo']))$tipo = trim(strip_tags(stripslashes($_GET['tipo'])));
else echo 'Attenzione è stato riscontrato un errore contattare amministratore';

if ($tipo == "daeseguire"){
        $where = "YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) AND DAY(dtscrev) >= DAY(NOW())";
}elseif($tipo == "scadute"){
        $where = "dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'";
}


$query = "SELECT * FROM commesse $where ORDER BY dtscrev ASC";
$oggetto =$mysqli->query($query);

echo "<table><tr>";
echo "<th>Veicolo</th><th>Targa</th><th>Cliente</th><th>Telefono</th><th>Data Scadenza Revisione</th>";
echo "</tr>";


while($scorri_oggetto=$oggetto->fetch_assoc()){
?>

<th><?php printf($scorri_oggetto['veicolo']);?></th>
<th><?php printf($scorri_oggetto['targa']);?></th>
<th><?php printf($scorri_oggetto['cliente']);?></th>
<th><?php printf($scorri_oggetto['tel']);?></th>
<th><?php printf($scorri_oggetto['dtscrev']);?></th>
<?php
}
echo "</table>";
?>

Confido in un vostro supporto e ringrazio anticipatamente
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Passo 1 prova a effettuare la stessa query su phpmyadmin se c'è errore te lo mostra.
Comunque in $where ti manca la clausola 'WHERE ' e ovviamente questa clausola dovrà essere usata solo se è il parametro GET valido, si traduce nel cercare $where
PHP:
if(!empty($where)) {
//effettuo la query
echo $where."\n"; //WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) and DAY(dtscrev) >= DAY(NOW())ORDER BY id_com ASC o
//WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'
$query = "SELECT * FROM commesse $where ORDER BY dtscrev ASC";
//tutto il resto del codice se è vero
}
 
Ultima modifica:

elpirata

Utente Attivo
18 Mar 2009
263
7
18
Passo 1 prova a effettuare la stessa query su phpmyadmin se c'è errore te lo mostra.
Ciao,
scusa il mio essere impreparato, ma non ho compreso la risposta. Per quanto riguarda le query posso assicurarti che funzionano, perchè già testate. Il mio problema è che non sono capace di passare tramite GET e formattare i dati presenti nella pagina home.php alla pagina scadenza_revisione.php
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Ho modificato il messaggio precedente se non è chiaro aspetto tua risposta... figurati.
 

elpirata

Utente Attivo
18 Mar 2009
263
7
18
Passo 1 prova a effettuare la stessa query su phpmyadmin se c'è errore te lo mostra.
Comunque in $where ti manca la clausola 'WHERE ' e ovviamente questa clausola dovrà essere usata solo se è il parametro GET valido, si traduce nel cercare $where
PHP:
if(!empty($where)) {
//effettuo la query
echo $where."\n"; //WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) and DAY(dtscrev) >= DAY(NOW())ORDER BY id_com ASC o
//WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'
$query = "SELECT * FROM commesse $where ORDER BY dtscrev ASC";
//tutto il resto del codice se è vero
}
Grazie al tuo supporto sono riuscito a risolvere, adesso sembra funzionare tutto correttamente.
 
Ultima modifica:

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Per qualche motivo le variabili in questo tuo script sono interpretate come stringhe (il colore rosso) riscrivo e comunque quando vuoi usare il backslash a meno che non sia l'escape per il backslash dovrà essere circondato da apici doppi... "\r\n" altrimenti '\r\n' stampa \r\n invece tu vuoi a capo.
 
Ultima modifica:
  • Like
Reactions: elpirata