Dubbio e problema su query con operatore LIKE

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Questo vuol dire che non hai mandato i dati post. O che in qualche modo quelli li comunque non sono settati.
Ora facciamo una delle ultime prove per rendere tutto un po' più chiaro:
PHP:
while($righi=mysql_fetch_array($result))
$barcodeart[$righi['Barcode']] = ...;    //creo un nuovo array dove salvo per ogni barcode, i dati.
//Qua inserisci:
var_dump($barcodeart);
$barcodeart_da_mostrare = array();
E Prova a cambiare il print_r di prima con var_dump (non dovrebbe cambiare nulla ma prova e vediamo che danno entrambi).
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ok, ho effettuato come dicevi te le modifiche e questo è quello che esce fuori :

PHP:
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
query eseguita
Resource id #3 
resource(3) of type (mysql result) 
OK RESULT
array(1) { [1920100084801]=> array(6) { ["Descrizione"]=> string(44) "COLLANA ARG LUNGA QUARZO GRIGIO CON PENDENTE" ["Vendita"]=> string(3) "555" ["UM"]=> string(2) "PZ" ["Quantita"]=> NULL ["Fornitore"]=> string(12) "DELLA ROVERE" ["Codice"]=> string(3) " OK" } } 
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
array(0) { }
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ok, ho effettuato come dicevi te le modifiche e questo è quello che esce fuori :

PHP:
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
query eseguita
Resource id #3 
resource(3) of type (mysql result) 
OK RESULT
array(1) { [1920100084801]=> array(6) { ["Descrizione"]=> string(44) "COLLANA ARG LUNGA QUARZO GRIGIO CON PENDENTE" ["Vendita"]=> string(3) "555" ["UM"]=> string(2) "PZ" ["Quantita"]=> NULL ["Fornitore"]=> string(12) "DELLA ROVERE" ["Codice"]=> string(3) " OK" } } 
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
array(0) { }

UP Longo aiutami pls :(
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
In questa riga:
PHP:
$barcodeart_da_mostrare[] = $_POST['barcodeart_new'];    //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
Il dato viene sempre inviato via post?

Dal tuo codice c'è bisogno che ci sia almeno un valore in $barcodeart_da_mostrare altrimenti non stampa niente.
Devi vedere perchè non viene ricevuto il dato dal form, è li il problema.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
quindi come posso ovviare a ciò?
Come si può fare per modificare il codice in maniera più pulita? A me serve solamente che io ho un campo di ricerca, inserisco un barcode, il barcode viene cercato e se trovato viene stampato immediatamente sotto nella stessa pagina... La stampa delle cose da cercare è immessa in campi di tipo input box... Perchè effettivamente sembra lungo e tortuoso in questa maniera... Chiaramente posso avere barcode uguali e quindi righe identiche...
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Si dovresti verificare il valore e se il campo nel form si chiama "barcodeart_new".
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Si dovresti verificare il valore e se il campo nel form si chiama "barcodeart_new".

uhm no l'id l'ho cambiato per fare il focus sull'inputbox... altrimenti non focalizzava java... è per quello?


EDIT:
aggiungo che se uso il BARCODE= $barcode va bene se modifico con i LIKE crea problemi
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ovviamente se cambi nel form devi cambiare anche nella pagina di ricezione dei dati.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Il dato lo riceve correttamente? Se si allora è un attimo inserire il like o altro.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Il dato lo riceve correttamente? Se si allora è un attimo inserire il like o altro.

si lo riceve bene, ma non stampa nulla...

PHP:
84801
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
query eseguita
Resource id #3 
resource(3) of type (mysql result) 
OK RESULT
array(1) { [1920100084801]=> array(6) { ["Descrizione"]=> string(44) "COLLANA ARG LUNGA QUARZO GRIGIO CON PENDENTE" ["Vendita"]=> string(3) "555" ["UM"]=> string(2) "PZ" ["Quantita"]=> NULL ["Fornitore"]=> string(12) "DELLA ROVERE" ["Codice"]=> string(3) " OK" } }
SELECT * FROM articoli WHERE Barcode LIKE '%84801%'
array(0) { }

Questo è il risultato... Ovviamente ci sono i vari var_dump che mi hai fatto mettere prima...

Prova a scrivere tu stesso 84801 su barcode in questa pagina :

http://laviadellanima.com/pdf/altervista2.php
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ok bene. Il tutto sta in quest'if:
PHP:
if(mysql_num_rows($query))//esiste
$barcodeart_da_mostrare[] = $_POST['barcodeart_new'];    //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
}
Controlla se entra in questo if e posta tutto il tuo codice modificato.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ok bene. Il tutto sta in quest'if:
PHP:
if(mysql_num_rows($query))//esiste
$barcodeart_da_mostrare[] = $_POST['barcodeart_new'];    //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
}
Controlla se entra in questo if e posta tutto il tuo codice modificato.

No... sembrerebbe che non ci entra... ho scritto delle parole a caso tramite echo e non le visualizzo... per cui non entra in quella if... Posto il codice per intero completo delle parole scritte per verificare l'if.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> 
<table>
<tr>
<td><input type="text" placeholder="Barcode" name="barcodeart_new" id="barcodeart" size="10" value=""></td> 
<td><input type="submit" class="visto" name="visto"></td>
</tr>
</table> 
<?php  
include('connect.php');  
if(isset($_POST['barcodeart_new']) && !empty($_POST['barcodeart_new'])){
	echo $_POST['barcodeart_new'];
    $query = "SELECT * FROM articoli WHERE Barcode LIKE '%" . mysql_real_escape_string($_POST['barcodeart_new']) . "%'"; 
echo $query;     //se i barcode sono interi, si possono evitare gli apici \'
}
else if(isset($_POST['barcodeart_vecchi'])&& !empty($_POST['barcodeart_vecchi']))
    $query = 'SELECT * FROM articoli WHERE 0 ';    //il WHERE 0 è una bruttura... se non funziona, si può cercar di far di meglio

if(isset($_POST['barcodeart_vecchi']))
    foreach($_POST['barcodeart_vecchi'] as $barcode)
        $query .= ' OR Barcode=\''.mysql_real_escape_string($barcode).'\' ';    //se i barcode sono interi, si possono evitare gli apici \'
if(isset($query))    {
    $result = mysql_query($query) or die('Query failed: ' . mysql_error() . "<br />");
	echo "query eseguita";
	print_r($result);
	}
?> 
<table> 
<?php
if(isset($result))
{
	var_dump($result);
	echo "OK RESULT"; 
$barcodeart_da_mostrare = array();
while($righi=mysql_fetch_array($result))
$barcodeart[$righi['Barcode']] = array('Descrizione'=>$righi['Descrizione'], 'Vendita'=>$righi['Vendita'],'UM'=>$righi['UM'],'Quantita'=>$righi['Quantita'],'Fornitore'=>$righi['Fornitore'],'Codice'=>$righi['Codice']);    //creo un nuovo array dove salvo per ogni barcode, i dati.
var_dump($barcodeart);
$barcodeart_da_mostrare = array();
if(isset($_POST['barcodeart_vecchi']))
$barcodeart_da_mostrare = $_POST['barcodeart_vecchi']; 
   //metto gli elementi vecchi realmente mostrati
if(isset($_POST['barcodeart_new'])&& !empty($_POST['barcodeart_new'])){
$query = "SELECT * FROM articoli WHERE Barcode LIKE '%" . mysql_real_escape_string($_POST['barcodeart_new']) . "%'"; 
echo $query;  
    //se $esiste == 0 non cè
if(mysql_num_rows($query))//esiste
echo "ok ok OK FANCULO";
$barcodeart_da_mostrare[] = $_POST['barcodeart_new'];    //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
}
var_dump($barcodeart_da_mostrare);
foreach($barcodeart_da_mostrare as $k)
var_dump($barcodeart_da_mostrare);
        echo '
        <tr> 
        <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'.$k.'"></td> 
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'.$barcodeart[$k]['Descrizione'].'"></td> 
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="quantita[]" id="quantita" size="3" value="1"></td> 
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'.$barcodeart[$k]['Vendita'].'" ></td> 
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td> 
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td> 
        <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td> 
				<td><input type="hidden" name="fornitore[]" id="fornitore" size="100" value="'.$barcodeart[$k]['Fornitore'].'"></td> 
        <td><input type="hidden" name="codice[]" id="codice" size="100" value="'.$barcodeart[$k]['Codice'].'"></td> 
		<td><input type="hidden" name="reparto[]" id="reparto" size="100" value="'.$barcodeart[$k]['Reparto'].'"></td> 
		<td><input type="hidden" name="UM[]" id="UM" size="100" value="'.$barcodeart[$k]['UM'].'"></td> 
        </tr> 
        ';
}
?>
<input type="submit" name="creapdf" onclick= "this.form.action='ddt.php'" value="creapdf">
<input type="submit" name="creapdf" onclick= "this.form.action='fattura.php'" value="creafattura">
<input type="submit" name="ddt" onclick= "this.form.action=' read_ddt.php'" value="ddt"><br /><br />
Seleziona la causale del DdT:<select name="causale" id="causale" >
   <option value="Option 1" selected></option>
   <option value="RESO">RESO  </option>
   <option value="RIAPRAZIONE">RIPARAZIONE</option>
   <option value="VENDITA">VENDITA</option>
   <option value="TRASFERIMENTO INTERNO">TRASFERIMENTO INTERNO</option>
</select><br /><br />
Inserisci il numero dei colli e l'aspetto:<input type="text" id="colli" name="colli" value="" size="40" /><br /><br />
Seleziona porto franco o porto assegnato:
<select name="porto" id="porto" >
   <option value="Option 1" selected></option>
   <option value="ASSEGNATO" >ASSEGNATO</option>
   <option value="FRANCO">FRANCO</option>
  </select><br /><br />
  Seleziona il vettore: <select name="vettore" id="vettore" >
  <option value="Option 1" selected></option>
   <option value="INTERNO">INTERNO  </option>
   <option value="A CARICO DESTINATARIO">CARICO DESTINATARIO</option>
   <option value="SDA">SDA</option>
  </select><br /><br />
Inserisci le eventuali note:<input type="text" id="note" name="note" value="NOTE:" />
</table> 
</form>
</body> 
</html>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Vuol dire che non trova risultati.

OVVIO!! Non viene eseguita la query. :hammer:
Dopo $query=... inserisci l'esecuzione della query
PHP:
$risultato = mysql_query($query)
E nella if devi considerare $risultato per eseguire mysql_num_rows in questo modo:
PHP:
if(mysql_num_rows($risultato))//esiste
...
}

Oppure non so se vuoi considerare la query precedente. In tal caso usa la variabile $result al posto di $risultato.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Vuol dire che non trova risultati.

OVVIO!! Non viene eseguita la query. :hammer:
Dopo $query=... inserisci l'esecuzione della query
PHP:
$risultato = mysql_query($query)
E nella if devi considerare $risultato per eseguire mysql_num_rows in questo modo:
PHP:
if(mysql_num_rows($risultato))//esiste
...
}

Oppure non so se vuoi considerare la query precedente. In tal caso usa la variabile $result al posto di $risultato.

Ho fatto come dici te, ed ho inserito $result considerando la query rpecedente... Entra nell'if ma non visualizza niente cmq... Posto codice:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> 
<table>
<tr>
<td><input type="text" placeholder="Barcode" name="barcodeart_new" id="barcodeart" size="10" value=""></td> 
<td><input type="submit" class="visto" name="visto"></td>
</tr>
</table> 
<?php  
include('connect.php');  
if(isset($_POST['barcodeart_new']) && !empty($_POST['barcodeart_new'])){
	echo $_POST['barcodeart_new'];
    $query = "SELECT * FROM articoli WHERE Barcode LIKE '%" . mysql_real_escape_string($_POST['barcodeart_new']) . "%'"; 
echo $query;     //se i barcode sono interi, si possono evitare gli apici \'
}
else if(isset($_POST['barcodeart_vecchi'])&& !empty($_POST['barcodeart_vecchi']))
    $query = 'SELECT * FROM articoli WHERE 0 ';    //il WHERE 0 è una bruttura... se non funziona, si può cercar di far di meglio

if(isset($_POST['barcodeart_vecchi']))
    foreach($_POST['barcodeart_vecchi'] as $barcode)
        $query .= ' OR Barcode=\''.mysql_real_escape_string($barcode).'\' ';    //se i barcode sono interi, si possono evitare gli apici \'
if(isset($query))    {
    $result = mysql_query($query) or die('Query failed: ' . mysql_error() . "<br />");
	echo "query eseguita";
	print_r($result);
	}
?> 
<table> 
<?php
if(isset($result))
{
	var_dump($result);
	echo "OK RESULT"; 
$barcodeart_da_mostrare = array();
while($righi=mysql_fetch_array($result))
$barcodeart[$righi['Barcode']] = array('Descrizione'=>$righi['Descrizione'], 'Vendita'=>$righi['Vendita'],'UM'=>$righi['UM'],'Quantita'=>$righi['Quantita'],'Fornitore'=>$righi['Fornitore'],'Codice'=>$righi['Codice']);    //creo un nuovo array dove salvo per ogni barcode, i dati.
var_dump($barcodeart);
$barcodeart_da_mostrare = array();
if(isset($_POST['barcodeart_vecchi']))
$barcodeart_da_mostrare = $_POST['barcodeart_vecchi']; 
   //metto gli elementi vecchi realmente mostrati
if(isset($_POST['barcodeart_new'])&& !empty($_POST['barcodeart_new'])){
$query = "SELECT * FROM articoli WHERE Barcode LIKE '%" . mysql_real_escape_string($_POST['barcodeart_new']) . "%'"; 
echo $query;  
$result=mysql_query($query);
    //se $esiste == 0 non cè
if(mysql_num_rows($result))//esiste
echo "ok ok OK FANCULO";
$barcodeart_da_mostrare[] = $_POST['barcodeart_new'];    //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
}
var_dump($barcodeart_da_mostrare);
foreach($barcodeart_da_mostrare as $k)
var_dump($barcodeart_da_mostrare);
        echo '
        <tr> 
        <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'.$k.'"></td> 
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'.$barcodeart[$k]['Descrizione'].'"></td> 
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="quantita[]" id="quantita" size="3" value="1"></td> 
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'.$barcodeart[$k]['Vendita'].'" ></td> 
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td> 
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td> 
        <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td> 
				<td><input type="hidden" name="fornitore[]" id="fornitore" size="100" value="'.$barcodeart[$k]['Fornitore'].'"></td> 
        <td><input type="hidden" name="codice[]" id="codice" size="100" value="'.$barcodeart[$k]['Codice'].'"></td> 
		<td><input type="hidden" name="reparto[]" id="reparto" size="100" value="'.$barcodeart[$k]['Reparto'].'"></td> 
		<td><input type="hidden" name="UM[]" id="UM" size="100" value="'.$barcodeart[$k]['UM'].'"></td> 
        </tr> 
        ';
}
?>
<input type="submit" name="creapdf" onclick= "this.form.action='ddt.php'" value="creapdf">
<input type="submit" name="creapdf" onclick= "this.form.action='fattura.php'" value="creafattura">
<input type="submit" name="ddt" onclick= "this.form.action=' read_ddt.php'" value="ddt"><br /><br />
Seleziona la causale del DdT:<select name="causale" id="causale" >
   <option value="Option 1" selected></option>
   <option value="RESO">RESO  </option>
   <option value="RIAPRAZIONE">RIPARAZIONE</option>
   <option value="VENDITA">VENDITA</option>
   <option value="TRASFERIMENTO INTERNO">TRASFERIMENTO INTERNO</option>
</select><br /><br />
Inserisci il numero dei colli e l'aspetto:<input type="text" id="colli" name="colli" value="" size="40" /><br /><br />
Seleziona porto franco o porto assegnato:
<select name="porto" id="porto" >
   <option value="Option 1" selected></option>
   <option value="ASSEGNATO" >ASSEGNATO</option>
   <option value="FRANCO">FRANCO</option>
  </select><br /><br />
  Seleziona il vettore: <select name="vettore" id="vettore" >
  <option value="Option 1" selected></option>
   <option value="INTERNO">INTERNO  </option>
   <option value="A CARICO DESTINATARIO">CARICO DESTINATARIO</option>
   <option value="SDA">SDA</option>
  </select><br /><br />
Inserisci le eventuali note:<input type="text" id="note" name="note" value="NOTE:" />
</table> 
</form>
</body> 
</html>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Puoi togliere il var_dump nel foreach altrimenti dovresti aggiungere una parentesi graffa.
Stessa cosa nell'if. Manca una parentesi graffa che includa le due righe di codice.
Sicuro che vuoi considerare $result e non $risultato? (dopo aver aggiunto l'esecuzione).
 
Discussioni simili
Autore Titolo Forum Risposte Data
E DUBBIO da principiante IP Cam e Videosorveglianza 0
D Dubbio intestazione dominio Domini 0
J Un piccolo dubbio su Mailchimp Posta Elettronica 1
S Dubbio su Git Programmazione 0
Z PayPal dubbio PHP 0
S Dubbio sulla desaturazione parziale in photoshop Photoshop 0
T Dubbio su costante ROOT, che rappresenti la base directory del sito PHP 4
stefanomessina [MySQL] Dubbio sulle PROCEDURE MySQL 0
G Cambio server dubbio ns Server Dedicati e VPS 3
M [PHP] Dubbio controllo IF PHP 15
paloppa [PHP] Dubbio print variabile PHP 27
paloppa [PHP] Dubbio valore variabile PHP 16
paloppa [PHP] Invio mail da form dubbio PHP 17
B Dubbio compressione gzip su server di giga.it Hosting 1
federicofacchini Aiutatemi con questo dubbio sui video YouTube e Facebook Social Media Marketing 1
asevenx [PHP] Dubbio teorico sui metodi e costruttore OOP PHP 1
otto9due [PHP] Dubbio esistenzaile: Regex email e stampa valori trovati.. PHP 5
P dubbio concettuale progettazione database MySQL 3
M Dubbio su risoluzione immagini Tumblr via Flickr HTML e CSS 6
D Dubbio per creare un sito in php PHP 9
C Dubbio creazione oggetti Javascript 1
F Dubbio su una funzione personalizzata PHP 3
V Installazione pulita windows 8 su notebook: dubbio partizioni Windows e Software 1
L Dubbio Array PHP 1
felino [C#] String format: qualche dubbio! C/C++ 1
felino [Jquery] Dubbio sul tag meta refresh aggiunto dinamicamente jQuery 6
R dubbio su sito Discussioni Varie 2
P Gestione bottini+ dubbio atroce PHP 9
borgo italia dubbio Discussioni Varie 0
P Dubbio su come inserire date e year in phpmyadmin PHP 5
P Dubbio su indirizzi ip Adsl e Connettività 6
S Dubbio front controller PHP 0
A dubbio enctype="multipart/form-data" HTML e CSS 1
borgo italia dubbio sul require/include PHP 2
A Dubbio su return funzione PHP 3
X dubbio licenza template Joomla 0
dahype dubbio sulla progettazione del DB Database 0
borgo italia dubbio sull'invio di allegati da form PHP 1
Roland Dubbio indicizzazione da google SEO e Posizionamento 2
I Grosso dubbio per sito browser game - giochi online SEO e Posizionamento 1
casaoncase dubbio aggregatori feed SEO e Posizionamento 0
emanuelevt Piccolo Dubbio HTML e CSS 2
S [OOP + transazioni] Dubbio implementativo PHP 2
neo996sps Dubbio su PHP e scrittura query PHP 2
F dubbio autenticazione windows reti lan Reti LAN e Wireless 4
D dubbio su get_object_vars PHP 2
W dubbio mia rete lan wireless Reti LAN e Wireless 11
P Dubbio su web 3.0 HTML e CSS 1
R dubbio su prezzi pubblicità Discussioni Varie 5
L dubbio compressione bmp Flash 1

Discussioni simili