- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Estrarre da Cartella una determinata 'via'
-
Estrarre da Cartella una determinata 'via'
Cari amici,
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 BYvia
ASC LIMIT $offset, $no_of_records_per_page";
Potetei cortesemente fornirmi una soluzione?
Grazie. Cordiali saluti
LewisAllego 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 BYvia
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>
-
Ciao,
come invii il valore di via da una pagina all'altra?
Perché $_POST['via'] lo puoi recuperare tramite un modulo HTML con POST come metodo. Invece dovresti passare via nell'url e recuperare tale valore tramite $_GET['via'] nella successiva pagina.
Es.
Sei su "pagina1.php" e clicchi sul link che ha href uguale a "pagina2.php?via=via"
Dentro "pagina2.php" recuperi il valore di "via" tramite $_GET['via'] e lo utilizzi nella query (magari valida/sanitizza il contenuto prima di utilizzarlo nella query).
-
Grazie flaviors200 per la pronta risposta.
Purtroppo le mie conoscenze di PHP sono pochissime.
Potresti cortesemente inserire nel mio codice i tuoi consigli?
Ti ringrazio. Sono un insegnante a digiuno su questo linguaggio.
Saluti
Lewis
-
Sostituisci
[PHP]
$via = $_POST['via'];
[/PHP]con
[PHP]
$via = $_GET['via'];
[/PHP]e prova a chiamare la pagina pannello3.php?via=nome-via
Al posto di "nome-via" metti una stringa, quello che ti pare basta che sia qualcosa presente nel db.
-
Ciao Flavio, grazie.
Ho aggiornato il codice secondo le tue indicazioni. NON FUNZIONAPremetto che nella tabella ho dei records con TRE 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: 3SELECT COUNT(*) FROM clienti WHERE Via LIKE '%poligono%'
Totale records: 6SELECT COUNT(*) FROM clienti WHERE Via LIKE '%torino%'
Totale records: 2SELECT 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 '%%' )
........................................Per non creare ulteriori errori ho eliminato i Link --> FIRST - LAST che non mi servono,,,,
Cosa mi consigli?
Grazie. Saluti
Lewis
-
@Lewis34 said:
Cosa mi consigli?
LewisDi rileggere meglio la soluzione che ti ho postato, se ti da ancora questo 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 '%%' )vuol dire che non hai modificato il codice come suggerito.
Devi usare $_GET e non $_POST
Se vuoi portarti questa variabile anche nelle successive pagine salvala in $via e includila nell'URL
[PHP]pannello3.php?via=<?php echo $via;?>&pageno=<?php echo $pageno;?>[/PHP]
-
Ciao.
ho provato .... Devi usare $_GET e non $_POST ....
Non funziona|Dove devo inserire la scritta
pannello3.php?via=<?php echo $via;?>&pageno=<?php echo $pageno;?>
In quale posizione del codice devo inserirla?
Scusami. Spiegalo ad un bambino di 10 anni che non conosce la materia.
Ti ringrazio. Ciao
Lewis
-
Questa è la riga di NEXT
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>puoi cortesemente correggerla secondo le tue indicazioni?
Ti ringrazio
Lewis
-
@Lewis34 said:
Questa è la riga di NEXT
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>puoi cortesemente correggerla secondo le tue indicazioni?
Ti ringrazio
LewisQuando posti codice usa i tag PHP (ultimo pulsante partendo da destra seconda riga editor)
[PHP]
<a href="<?php if ($pageno >= $total_pages){ echo '#'; } else { echo "?via=".$via."&pageno=".($pageno + 1); } ?>">Next</a>
[/PHP]
-
Ciao Flaviors200,
ho inserito il tuo codice ma quando clicco su NEXT appare questo errore:[PHP]
Notice: Undefined index: via in C:\xampp\htdocs\3\pannello3.php on line 46
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%%'[/QUOTE]
[/PHP]La riga 46 si riferisce a:
[PHP]$via = $_POST['via'];[/PHP]Se tolgo questa riga il programma all'avvio dà questo errore:
[PHP]Notice: Undefined variable: via in C:\xampp\htdocs\3\pannello3.php on line 54
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%%'
[/PHP]e nella riga con SELECT COUNT di controllo non appare più il contenuto della variabile.
Sto pensando ad un comando che all'inizio del programma memorizzi la variabile in maniera stabile
in tutta la durata dei cambi della paginazione.Scusami, io non ci capisco nulla.
-
Il listato
[PHP]
<html>
<head>
<title>Rubrica</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<?phpif (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();
}$via = $_POST['via'];
// $total_pages_sql = "SELECT COUNT(*) FROM clienti";
echo "<center> ";
$total_pages_sql = "SELECT COUNT(*) FROM clienti WHERE Via LIKE '%$via%'";
echo $total_pages_sql;
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];echo "<br />";
echo "<br />";echo "Totale records: " . $total_rows;
echo "<br />";
echo "<br />";$total_pages = ceil($total_rows / $no_of_records_per_page);
{
$sql = "SELECT * FROM clienti WHERE Via LIKE '%$via%' ORDER BYvia
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">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 "?via=".$via."&pageno=".($pageno + 1); } ?>">Next</a>
</li>
</ul>
<br><br>
</body>
</html><?php } ?>
[/PHP]
-
@flaviors200 said:
Sostituisci
[PHP]
$via = $_POST['via'];
[/PHP]con
[PHP]
$via = $_GET['via'];
[/PHP]Scusa ma cosa c'è di così difficile da capire nelle righe che ti avevo scritto l'altro ieri?
Continui a utilizzare $_POST anziché $_GET come ti ho suggerito (e come ti hanno suggerito su altri forum
-
Ho cambiato in $_GET e continua a darmi errore sulla riga del $_GET.
Se credi ti mando il contenuto della Tabella clienti e così puoi verificarlo di persona.
-
Ti da errore quando la variabile non è inizializzata
Cambia la riga che ti da errore con questa
[PHP]
$via = $_GET['via'] ?? '';
[/PHP]oppure se usi ancora PHP 5
[PHP]
$via = isset($_GET['via']) ? $_GET['via'] : '';
[/PHP]
-
Grazie Flaviors200,
ora tutto OK!Saluti
Lewis