Estrarre da Cartella una determinata 'via'

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
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:.........................
PHP:
$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
PHP:
$sql = "SELECT * FROM clienti WHERE Via LIKE '%$via%' ORDER BY `via` ASC LIMIT $offset, $no_of_records_per_page";
Potetei cortesemente fornirmi una soluzione?
Grazie. Cordiali saluti
Lewis
-----
Allego lo script
PHP:
<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>
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
intanto dovresti modificare così, per contare i clienti che poi selezionerai
altrimenti conti tutti i clienti e poi se selezioni solo una parte
PHP:
$via = $_POST['via'];

$total_pages_sql = "SELECT COUNT(*) FROM clienti WHERE Via LIKE '%$via%'";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
{
    $sql = "SELECT * FROM clienti WHERE Via LIKE '%$via%' ORDER BY `via` ASC LIMIT $offset, $no_of_records_per_page";

poi metti un valore fisso al posto di $_POST e verifica che lo script funzioni estraendo solo i clienti di quella via e paginando correttamente

se tutto funziona, deve essere gestito il contenuto di $_POST, ovvero bisogna capire da dove arriva e se lo script segue una logica corretta (vedi valore fisso per le prove)

fatti vivo dopo le prove
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@Lewis34
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strumenti

box inserisci.png


Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!
Grazie


Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
Grazie Marino 51, purtroppo sono a totale digiuno sul linguaggio PHP.
Potresti correggermi le righe sbagliate?
Grazie
Lewis
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non mi sembra così semplice consigliarti delle variazioni senza sapere come funzionano gli script che stai usando,
ti ho proposto di fare una prova in modo che potessimo capire entrambi qualche cosa di più,
se riesci a fare la prova che ti ho suggerito possiamo proseguire altrimenti lascio che sia qualcun altro a darti supporto
 

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
Ciao Marino, grazie per la tua pazienza.
Ho aggiornato il codice secondo le tue indicazioni.
Premetto 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
...............
PHP:
$total_pages_sql = "SELECT COUNT(*) FROM clienti WHERE Via LIKE '%$via%'";

............................
Visualizzazione perfetta:
PHP:
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%cuore%'

Totale records: 3
PHP:
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%poligono%'

Totale records: 6
PHP:
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%torino%'

Totale records: 2
PHP:
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:
..............................
PHP:
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%pascoli%'

Totale records: 40
................................
quando vado su NEXT appare il seguente errore:
...............................
PHP:
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 elimiminato i Link --> FIRST - LAST che non mi servono,,,,
Cosa mi consigli?
Grazie. Saluti
Lewis
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@Lewis34
Ti ho chiesto di usare gli appositi tag per postrare il codice e visto che non mi hai nemmeno preso in considerazione chiudo
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
prova così, probabilmente (se funziona), sono possibili solo avanti e indietro
PHP:
<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'];
    $via    = $_GET['via'];
}
else
{
    $pageno = 1;
    $via    = "";
}

$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page;

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

if ( !empty($_POST['via']) ) $via = $_POST['via'];

$txt = ( (!empty($via)) ? " WHERE Via LIKE '%".$via."%'" : "" );

$total_pages_sql = "SELECT COUNT(*) FROM clienti".$txt;
$result          = mysqli_query($conn,$total_pages_sql);

$total_rows      = mysqli_fetch_array($result)[0];
$total_pages     = ceil($total_rows / $no_of_records_per_page);

$sql = "SELECT * FROM clienti".$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 "?via=".$via."&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>
  <li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
<br /><br />
</body>
</html>
 

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
PHP:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\3\pannello3.php on line 43
Deve essere così
PHP:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\3\pannello3.php on line 43
 
Ultima modifica di un moderatore:

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
Ti funziona perchè digiti ---> http://localhost./3/pannello3.php
anche se non è esatto perché visualizza tutti i records presenti
senza alcun filtro della via richiesta con il Form

Se invii la richiesta dal Form selezionando una determinata via
questo il messaggio di errore:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\3\pannello3.php on line 43

Se vedi il codice inviato a Marino, con alcuni miei comment,i forse si può risalire all'errore
Penso sia utile inserire nel Link NEXT un richiamo alla variabile --> $via = $_POST['via'];
Non conosco la sintassi per provarlo.

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
NON è mai una bella risposta se non dici perché !
hai scritto che la paginazione funzionava, senza via, deve funzionare ancora
Penso sia utile inserire nel Link NEXT un richiamo alla variabile --> $via = $_POST['via'];
questa é la linea contenuta nel codice che ti ho inviato
PHP:
    <a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?via=".$via."&pageno=".($pageno + 1); } ?>">Next</a>
ciò che chiedi é già presente

ho concluso
 

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
Dopo inserita la stringa ottengo questa risposta
Notice: Undefined index: via in C:\xampp\htdocs\3\pannello3.php on line 55
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%%'
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Dopo inserita la stringa ottengo questa risposta
Notice: Undefined index: via in C:\xampp\htdocs\3\pannello3.php on line 55
SELECT COUNT(*) FROM clienti WHERE Via LIKE '%%'
mi dispiace, ma NON stai usando il codice come l'ho scritto io
ciò che hai postato non deriva dal mio codice
 

Lewis34

Nuovo Utente
6 Mar 2020
8
0
1
Ciao Marino 51,
oggi buone notizie... finalmente!
Hai ragione tu, la colpa è mia!
Il problema era proprio nella riga del NEXT
Ho rivisto anche quella del PREV riadattandola a quanto da te suggerito per il NEXT.
Ti voglio ringraziare per avermi aiutato ad uscire dal 'coma farmacologico del PHP'
Un grazie anche a Max 1 per avermi supportato e sopportato in questa avventura per me estremamente tecnologica.
Un caro saluto dal vostro amico
Lewis
 
Discussioni simili
Autore Titolo Forum Risposte Data
F estrarre dati da una cartella PHP 9
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
M Estrarre valore con SELECT COUNT PHP 0
D Estrarre database con link esterno Database 10
S Raggruppare ed estrarre data più recente MySQL 6
F Estrarre ultima foto da cartelle PHP 2
R Estrarre valori duplicati più volte PHP 0
C Estrarre dati stringa Sql Database 1
L estrarre valori max tra più tabelle MySQL 2
J estrarre url dei file video da youtube "get_video_info" PHP 6
M Estrarre dati da un database PHP 2
M Estrarre valori MAX da un db con una left join MySQL 8
M Estrarre dati da una select HTML PHP 3
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 11
R [PHP] Estrarre id utente loggato.? PHP 4
S [PHP] Estrarre elementi array su più variabili PHP 5
S [PHP] Estrarre dati tabella in diversi array PHP 2
P [MS ACCESS] Estrarre più somme da una query MS Access 4
trattorino estrarre titolo video facebook in php PHP 0
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
N [PHP] Estrarre singolo valore da array PHP 4
trattorino [PHP] sql estrarre in base all'ultima visita PHP 4
P [Visual Basic] access sql estrarre id vendite x cli e articolo con data maggiore del recordset Visual Basic 2
Jensen [PHP] Estrarre prossimi 4 lunedì PHP 4
trattorino [PHP] estrarre dati singoli PHP 1
G [PHP] estrarre data da timeline yyyy-dd-gg hh:mm:ss PHP 4
Z Estrarre dati da un DB Mysql PHP 4
I database mysql estrarre due tabelle Database 2
S [PHP] Estrarre dati colonna in una stringa PHP 6
S [PHP] estrarre dati sito web protetto con username e password PHP 13
Merlina3377 [PHP] estrarre solo un determinato id da tanti con REGEXP O LIKE PHP 1
Gigi87 estrarre i dati da un forum o social network Presentati al Forum 1
trattorino Estrarre Nome Utente jquery div php PHP 9
trattorino [Javascript] estrarre id link yt Javascript 1
S [PHP] estrarre le email da un elenco di url PHP 21
T4MAR4 [PHP] estrarre tag da un testo PHP 3
T [PHP] Estrarre stringa PHP 3
G [PHP] ESTRARRE DA DB VALORE MASSIMO E MINIMO IN UN INTERVALLO IMPOSTABILE A PIACERE PHP 56
bubino8 [PHP] Estrarre dominio No Sottodomini PHP 10
L [PHP] Estrarre dati da sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
gandalf1959 Estrarre da un db mysql le mail, eliminando le doppie PHP 6
giancadeejay [PHP] Estrarre solo record dell'utente connesso PHP 4
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9

Discussioni simili