Estrarre da Cartella una determinata 'via'

di il
5 risposte

Estrarre da Cartella una determinata 'via'

Desidero estrarre dalla cartella 'Clienti' una determinata 'via'.
Tutto sembra funzionare, ma quando visualizzo i records della 'via' ,
dopo la paginazione di 10 records per pagina,
cliccando su NEXT mi appare il seguente errore,
mentre la paginazione funziona regolarmente:
.......................
Notice: Undefined index: via in C:\xampp\htdocs\3\pannello3.php on line 40
.......................

La riga incriminata è la seguente:
.........................
$via = $_POST['via'];
..........................

se tolgo questa riga mi appare chiaramente il seguente errore
............................
Notice: Undefined variable: via in C:\xampp\htdocs\3\pannello3.php on line 49
................................
Questa la riga con --> Undefined variable: via

$sql = "SELECT * FROM clienti WHERE Via LIKE '%$via%' ORDER BY `via` ASC LIMIT $offset, $no_of_records_per_page";


Potete cortesemente fornirmi una soluzione?
Grazie. Cordiali saluti
Lewis

-----
Allego lo script
---------

<html>
<head>
<title>Rubrica</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

</head>
<body>
<?php

if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page;



$conn=mysqli_connect("localhost","root","","utenti");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
die();
}

$total_pages_sql = "SELECT COUNT(*) FROM clienti";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);


$via = $_POST['via'];
{

$sql = "SELECT * FROM clienti WHERE Via LIKE '%$via%' ORDER BY `via` ASC LIMIT $offset, $no_of_records_per_page";


$res_data = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($res_data)){

{
echo "<center> ";
echo $row['nome'] . "<br> " . $row['settore'] . "<br> " . $row['via']. "<br>" . $row['telefono']. "<br> ";
echo "<br />";
}
}
mysqli_close($conn);
?>

<p align="center">testo centrato in HTML</p>


<ul class="pagination">
<li><a href="?pageno=1">Primo</a></li>
<li><a href="?pageno=1">First</a></li>
<li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
</li>
<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
</li>
<li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>


<br><br>
</body>
</html>

5 Risposte

  • Re: Estrarre da Cartella una determinata 'via'

    Undefined index: indica indice indefinito (array non esistente poiché usi $_POST che significa invia quel dato con il metodo POST la prassi normale un form html) non puoi conoscere a priori la via se prima non estrai tale valore dalla tabella clienti dal campo via.
    Dovrai recuperare la/le via/vie se esiste tramite query mysql... con la clausola where.
  • Re: Estrarre da Cartella una determinata 'via'

    Per cortesia come si fa?
    Grazie
  • Re: Estrarre da Cartella una determinata 'via'

    Ciao Hormus ti chiedo un po' di pazienza,

    Premetto di avere una tabella con dei records che hanno QUATTRO vie diverse:
    - cuore (3 records)
    - poligono (6 records)
    - torino (2 records)
    - pascoli (40 records)

    Per verificare il contenuto della variable
    ho inserito un Echo di controllo dopo la stringa
    ...............

    $total_pages_sql = "SELECT COUNT(*) FROM clienti WHERE Via LIKE '%$via%'";

    ............................
    Visualizzazione perfetta:

    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%cuore%'
    Totale records: 3
    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%poligono%'
    Totale records: 6
    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%torino%'
    Totale records: 2
    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%pascoli%'
    Totale records: 40

    ...............................
    La paginazione funziona correttamente.....
    Quando richiedo la via 'pascoli' nella prima pagina il risultato è giusto:
    ..............................


    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%pascoli%'
    Totale records: 40

    ................................
    quando vado su NEXT appare il seguente errore:
    ...............................

    Notice: Undefined index: via in C:\xampp\htdocs\3\pannello3.php on line 46 (la riga --> $via = $_POST['via'];
    SELECT COUNT(*) FROM clienti WHERE Via LIKE '%%' (mentre in questa manca il contenuto della variabile '%%' )

    ........................................
    Cosa mi consigli?
    Tieni presente che sono un autodidatta alle prime armi.
    Grazie. Saluti
    Lewis
  • Re: Estrarre da Cartella una determinata 'via'

    Allora stai sbagliando non puoi passare una variabile $_POST alla prossima pagina senza usare una form HTML con metodo POST oppure inviarla in php tramite codice, stai usando pageno nella url, aggiungi anche via nella url oppure inserisci tramite codice php nel tuo caso specifico (precedente e prossima) https://www.php.net/manual/en/context.http.ph primo esempio per il body della richiesta (POST).
  • Re: Estrarre da Cartella una determinata 'via'

    Grazie Hormus,
    potresti inserire nel mio codice le modifiche da te consigliate?
    Ti ringrazio
    Lewis
Devi accedere o registrarti per scrivere nel forum
5 risposte