MySql in un popup

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Ciao a tutti,
ho un problema di questo genere:
uno script php legge e mostra i dati di un database. Se lo script viene eseguito in una normale pagina del browser tutto funziona correttamente (accesso a Mysql, ricerca e display dei dati)
Se provo a far eseguire lo script dall interno di una popup window ho un messaggio d'errore.
Il popup si apre e al suo interno compare
Codice:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /media/hdb1/foo/Gestione/libri/printer1.php on line

Il codice per l'accesso ai dati nel DB è il seguente

Codice:
...
$db = mysqli_connect($db_host,$db_user, $db_password) or die('Connessione a MySql fallita. Controllare i dati di configurazione: ' . mysqli_connect_error($db));
mysqli_select_db($db,$db_name) or die('Selezione del DB fallita. Controllare il nome del DataBase: ' . mysqli_error($db));

$result = mysqli_query($db,"SELECT * FROM $db_table WHERE $option LIKE \"%$cerca%\"  ORDER BY $sort LIMIT 0,1000");
$num_rows = mysqli_num_rows($result);
....

Lo script che attiva il popup viene attivato in questo modo

Codice:
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
	newwindow=window.open(url,'name','height=300,width=400');
	if (window.focus) {newwindow.focus()}
	return false;
}

// -->
</script>

..........

<form method='post' name='alfa' action='printer1.php'  onSubmit="return popitup('printer1.php')" >
<input type = 'hidden' name = 'opzione' value = "<?php echo $option; ?>" />
<input type = 'hidden' name = 'testo' value = "<?php echo $cerca; ?>" />
<input class = 'input' value = 'Print' type = 'submit'/>
</form>



Qualche idea?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova a sostituire questa riga:
PHP:
$result = mysqli_query($db,"SELECT * FROM $db_table WHERE $option LIKE \"%$cerca%\"  ORDER BY $sort LIMIT 0,1000");
Con questa:
PHP:
$result = mysqli_query($db,"SELECT * FROM $db_table WHERE $option LIKE \"%$cerca%\"  ORDER BY $sort LIMIT 0,1000") or die(mysqli_error($db));
E vedi quale errore ti restituisce.
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Ecco cosa mi sono empre dimenticato di fare!!! mettere "or die....."
grazie per avermelo ricordato.
Cmq l'errore che ricevo è il seguente

Codice:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE "%%" ORDER BY LIMIT 0,1000' at line 1

Ho visto il problema, non riceve la variabile $cerca. Come posso sopperire a ciò?

Grazie ancora per il "die"
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Eccolo:

'testo' e 'opzione' sono passati a questo script dal form di cui al primo post di questo thread

Codice:
.....
$cerca = trim($_POST['testo']);
$option = trim($_POST['opzione']);

switch ($option){
    case 'cognome': $sort = 'titolo'; break;
    case 'titolo': $sort = 'titolo'; break;
    case 'originale': $sort = 'cognome'; break;
    case 'genere': $sort = 'cognome'; break;
    case 'edizioni': $sort = 'edizioni'; break;
    case 'ISBN': $option = 'isbn'; $sort = 'isbn'; break;
}


$db_host = 'xxxx';
$db_user = 'xxxxxxxxxxx';
$db_password = 'xxxxxxx';
$db_name = 'books';
$db_table ='libreria';


$db = mysqli_connect($db_host,$db_user, $db_password) or die('Connessione a MySql fallita. Controllare i dati di configurazione: ' . mysqli_connect_error($db));
mysqli_select_db($db,$db_name) or die('Selezione del DB fallita. Controllare il nome del DataBase: ' . mysqli_error($db));

$result = mysqli_query($db,"SELECT * FROM $db_table WHERE $option LIKE \"%$cerca%\"  ORDER BY $sort LIMIT 0,1000") or die(mysqli_error($db));
$num_rows = mysqli_num_rows($result);
if ($num_rows <= 0 )
{die('<b class="die">'.ucwords($cerca).'  <---doesnt exist</b><br /><br /><br /><br /><br />');}
$i = 1;
while ($row = mysqli_fetch_array($result))
{ 
...
}

segue l'elaborazione dei dati lrtti
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
L'unica soluzione è usare GET. Modifica il form così:
HTML:
<form method='get' name='alfa' action='printer1.php'  onSubmit="return popitup('printer1.php')" >
<input type = 'hidden' name = 'opzione' value = "<?php echo $option; ?>" />
<input type = 'hidden' name = 'testo' value = "<?php echo $cerca; ?>" />
<input class = 'input' value = 'Print' type = 'submit'/>
</form>
E queste due righe:
PHP:
$cerca = trim($_POST['testo']);
$option = trim($_POST['opzione']);
Così:
PHP:
$cerca = trim($_GET['testo']);
$option = trim($_GET['opzione']);
Assicurati di non visualizzare la barra degli indirizzi nel popup.
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Grazie, ora vado a vedere come togliere la barra degli indirizzi dal popup poi provo e ti farò sapere
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Dopo aver googlato un pò ho modificato la funzione che apre il popup in questo modo
Codice:
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
	newwindow=window.open(url,'name','height=300,width=400,[COLOR="red"]directories=no,location=no,menubar=no,toolbar=no[/COLOR]');
	if (window.focus) {newwindow.focus()}
	return false;
}

// -->
</script>
ho modificato i codici come mi hai suggerito ma ovviamente non funziona e la barra degli indirizzi è sempre lì minacciosa.
Altre ricerche su google e ho scoperto che, se è vero, non è possibile disabilitare tale barra. va detto che sostanzialmente si riferivano a IE7 e 8, ma non funziona neppure in Firefox, Opera, Chrome.
Qualche idea?

Dimenticavo... uso linux, non Windows
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Devo fare pubblica ammenda.
Le indicazioni che mi hai dato vanno benissimo. Se forzo i dati i dati nel file printer1.php il popup mostra correttamente i dati di MySql.
Nel fare prove/misure/tentativi ho sicuramente introdotto un errore per cui il get/post non funzionano correttamente.
Sto indagando.

Grazie infinite per la'iuto e scusami ancora per il tempo che ti ho fatto perdere
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Ahemmm... eccomi ancora qua perchè il problema non è risolto.
Ho corretto l'errore che mi ha portato fuori strada, ora se non uso il popup è tutto OK, ma se provo ad indirizzare lo stesso script nel popup i dati del form non vengono ricevuti dallo script.

Queste solo le prime tre linee di printer1.php e vengono visualizzate solo i 4 trattini :(
Codice:
<?php
$cerca = trim($_GET['testo']);
$option = trim($_GET['opzione']);
echo $cerca." ---- ".$option;
.....
 

paparucino

Nuovo Utente
8 Mag 2011
10
0
1
Ho provato ma non funziona, però cercando negli angoli più oscuri della rete ho trovato una noticina con la soluzione.
Praticamente il form deve essere costruito come qua sotto (in rosso le varianti rispetto al mio originale):

Codice:
<form method='POST' name='alfa' action='printer1.php'[B][COLOR="red"] target='nuovapagina'[/COLOR][/B]>
<input type = 'hidden' name = 'opzione' value = "<?php echo $option; ?>" />
<input type = 'hidden' name = 'testo' value = "<?php echo $cerca; ?>" />
<input class = 'input' value = 'Print' type = 'submit' [B][COLOR="red"]onClick="window.open('','nuovapagina','width=200,height=200');"[/COLOR][/B]/>
</form>

In questo modo funziona come un violino e sono molto felice. :D

Ancora grazie infinite per l'aiuto
 
Discussioni simili
Autore Titolo Forum Risposte Data
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0
S Cancellare una riga MYSQL PHP 1
L Ricerca valore mysql e incremento PHP 73
G database mysql contengono informazioni ? MySQL 0
G Testo in mysql format 3 MySQL 0

Discussioni simili