Non restituisce la prima riga del DB

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Ciao Ragazzi, vi espongo il problema,
quando effettuo una ricerca che coinvolga la restituzione di una sola riga come nel caso la ricerca del codice cliente non viene visualizzato nulla. La prima riga delle intestazioni appare quindi l'array non è vuoto ma la prima riga del risultato no.
Vi posto il codice magari riuscite a dirmi cosa sbaglio.
PHP:
<?php

 //recupero codice
$id = (int) $_POST['codcliente'];
$id2 = mysql_real_escape_string($_POST['prodotto']);
$id3 = mysql_real_escape_string($_POST['industry']);

if (empty($id) && empty($id2) && empty($id3)) {
    die("Selezionare un criterio di ricerca");
}
// creiamo la query su misura
$query = "SELECT * FROM ch WHERE 1";
if (isset($id) && $id > 0) {
    $query.= " && id = $id";
}
if (isset($id2) && !empty($id2)) {
    $query.= " && prodotto LIKE '$id2%'";
}
if (isset($id3) && !empty($id3)) {
    $query.= " && Industry LIKE '%$id3%'";
}
$count=0;
//$Emanimposta connessione
 $dbc = mysql_connect('localhost', 'root','root','CH_db')
 or die('Errore di connessione al db');
 $db = mysql_select_db('CH_db');


 //query al db
 $result=mysql_query($query);

    if(!empty($result)){

             $array= mysql_fetch_row ($result);

			 $numfield=mysql_num_fields($result);

			 if(empty($array[0])){
			  die ("Nessun Risultato Trovato");

			  }else{
              
			  echo "<table border=1><tr>";
			  echo "<th><b>Azienda</b></th>";
			  echo "<th><b>codice cliente</b></th>";
			  echo "<th><b>prodotto</b></th>";
			  echo "<th><b>scad contratto</b></th>";
			  echo "<th><b>referente</b></th>";
			  echo "<th><b>num referente</b></th>";
			  echo "<th><b>commerciale</b></th>";
			  echo "<th><b>limitazioni lib</b></th>";
			  echo "<th><b>note limitazione </th>";
			  echo "<th><b>scad. liberatoria</b></th>";
			  echo "<th><b>area</b></th>";
			  echo "<th><b>provincia</b></th>";
			  echo "<th><b>industry</b></th>";
			  echo  "</tr>";
             while ($array= mysql_fetch_row ($result)){
			 
			 
			 foreach ($array as $campo) {
                 
			     echo  "<td>$campo</td>";
			    }
			  echo "</tr>";			  
			  }
			  
			 echo "</table>";
             }





   }else{

              echo "Issues trying to fetch results. Check the error-->" . mysql_error();

            }



?>


Ho la vaga impressione che sia il ciclo While a fare le bizze.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
le intestazioni te le stampa perche sono fuori dal ciclo
probabilmente la query va in errore o cmq non trova risultati
aggiungi queste righe dopo l'esecuzione della query per stampare eventuali errori e query
PHP:
//query al db
$result = mysql_query($query);
// aggiungi
if (!$result) {
    echo "errore: $query<br/>" . mysql_error();
} else {
// altrimenti stampiamo solo la query
    echo $query;
}
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Ciao,
le intestazioni te le stampa perche sono fuori dal ciclo
probabilmente la query va in errore o cmq non trova risultati
aggiungi queste righe dopo l'esecuzione della query per stampare eventuali errori e query
PHP:
//query al db
$result = mysql_query($query);
// aggiungi
if (!$result) {
    echo "errore: $query<br/>" . mysql_error();
} else {
// altrimenti stampiamo solo la query
    echo $query;
}

Mi restituisce l'intestazione della tabella e questo
PHP:
SELECT * FROM ch WHERE 1=1 && id =
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
SELECT * FROM ch WHERE 1=1 && id =

qeusta query provoca un errore di sintassi : manca l'id

metti var_dump($_POST['codcliente']); a inizio pagina per vedere che dato arriva
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quindi sembrerebbe che non prenda $id = (int) $_POST['codcliente'];
prova a mettere una var-dump

PHP:
 //recupero codice
var_dump($_POST['codcliente']);//cosa ti restituisce?
$id = (int) $_POST['codcliente'];
$id2 = mysql_real_escape_string($_POST['prodotto']);
$id3 = mysql_real_escape_string($_POST['industry']);
//..............
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
scusa criric ho sbagliato io a postare la risposta l'id lo passa in maniera corretta ho scritto il post male ed ero fuori tempo per modificarlo. quello corretto è immediatamente prima della tua risposta.
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Ho provato a duplicare la prima riga del db e se faccio la ricerca per codice univoco esce soltanto un risultato. Confermando che il mio problema sia la visualizzazione dell'unica prima riga del risultato. E' incredibile sto impazzendo...
 
Ultima modifica:

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
Non capisco un po' di cose...

PHP:
              echo "<table border=1><tr>";
              echo "<th><b>Azienda</b></th>";
              echo "<th><b>codice cliente</b></th>";
              echo "<th><b>prodotto</b></th>";
              echo "<th><b>scad contratto</b></th>";
              echo "<th><b>referente</b></th>";
              echo "<th><b>num referente</b></th>";
              echo "<th><b>commerciale</b></th>";
              echo "<th><b>limitazioni lib</b></th>";
              echo "<th><b>note limitazione </th>";
              echo "<th><b>scad. liberatoria</b></th>";
              echo "<th><b>area</b></th>";
              echo "<th><b>provincia</b></th>";
              echo "<th><b>industry</b></th>";
              echo  "</tr>";
Non puoi metterlo direttamente come html??
Ma questa è una cavolata...



PHP:
  while ($array= mysql_fetch_row ($result)){
             
             
             foreach ($array as $campo) {
                 
                 echo  "<td>$campo</td>";
                }
              echo "</tr>";              
              }

Non apri il <tr>



Correggimi se sbaglio, ma mi pare che hai dichiarato 2 volte la stessa variabile.. $array= mysql_fetch_row ($result) e poi nel while

Ora prova a fare un print_r di $array cosi vediamo che ci tira fuori.

Fammi sapere!! :)

Ciao
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
hai provato a inserire direttamente nel SQL di phpmyadmin la query
Codice:
SELECT * FROM ch WHERE 1=1 && id = 10425790

ti restituisce qualcosa?
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
F107 ho fatto quello che mi hai detto a quanto pare l'array[0] esiste ma non viene intabellato:
PHP:
Array ( [0] => gigio srl [1] => 10422720 [2] => casalinghi [3] => 31/05/2012 [4] => mario rossi[5] => +39 06 6600090990 [6] => Diddi [7] => n [8] => n [9] => 02/04/2024 [10] => centro [11] => rm [12] => Utilities )

Criric il risultato della query c'è esiste ma facente parte dell'array[0] che non viene intabellato
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi sono permesso di dare una riordinatina, prova a vedere se funzia (mal che vada sei al punto di prima)
PHP:
<?php
//recupero codice
$id = (int) $_POST['codcliente'];
$id2 = mysql_real_escape_string($_POST['prodotto']);
$id3 = mysql_real_escape_string($_POST['industry']);
if (empty($id) && empty($id2) && empty($id3)) {
    die("Selezionare un criterio di ricerca");
}
// creiamo la query su misura
$query = "SELECT * FROM ch WHERE 1=1";
if (isset($id) && $id > 0) {
    $query.= " && id = $id";
}
if (isset($id2) && !empty($id2)) {
    $query.= " && prodotto LIKE '$id2%'";
}
if (isset($id3) && !empty($id3)) {
    $query.= " && Industry LIKE '%$id3%'";//è Industry o industry ?
}
var_dump($query);//restutuisce la query giusta? poi lo togli
//$Emanimposta connessione
$dbc = mysql_connect('localhost', 'root','root') or die('errore di connessione: ' . mysql_error());
$db = mysql_select_db('CH_db') or die('db non selezionabile: ' . mysql_error());
//query al db
$result=mysql_query($query) or die('query non valida: ' . mysql_error());
if(mysql_num_rows($result)==0){
	die ("nessun risultato trovato con i criteri impostati");
}else{
	echo "<table border=1><tr>";
    echo "<th><b>Azienda</b></th>";
    echo "<th><b>codice cliente</b></th>";
    echo "<th><b>prodotto</b></th>";
    echo "<th><b>scad contratto</b></th>";
    echo "<th><b>referente</b></th>";
    echo "<th><b>num referente</b></th>";
    echo "<th><b>commerciale</b></th>";
    echo "<th><b>limitazioni lib</b></th>";
    echo "<th><b>note limitazione</b></th>";
    echo "<th><b>scad. liberatoria</b></th>";
    echo "<th><b>area</b></th>";
    echo "<th><b>provincia</b></th>";
    echo "<th><b>industry</b></th>";
    echo  "</tr>";
	while($riga=mysql_fetch_array()){
		//qui devi verificare i nomi con quelli che hai nella tabella ch
		echo  "<tr>";
		echo "<td>".$riga['azienda']."</td>";
		echo "<td>".$riga['codcliente']."</td>";
		echo "<td>".$riga['prodotto']."</td>";
		echo "<td>".$riga['scadenza']."</td>";
		echo "<td>".$riga['referente']."</td>";
		echo "<td>".$riga['num_ref']."</td>";
		echo "<td>".$riga['commerciale']."</td>";
		echo "<td>".$riga['liitazioni']."</td>";
		echo "<td>".$riga['note_lim']."</td>";
		echo "<td>".$riga['scad_lib']."</td>";
		echo "<td>".$riga['area']."</td>";
		echo "<td>".$riga['provincia']."</td>";
		echo "<td>".$riga['industry']."</td>";
		echo  "</tr>";
	}
	echo  "</table>";
}
?>

poi appena puoi studiati le PDO le vecchie query (come sopra) sono in via di estinzione (ahime!!!)
al posto dei vari die i metterei dei rimendi a qualche pagina (soprattutto nei punti "Selezionare un criterio..." e "nessun risultato..." riinviando al form di ricerca
al posto di tanti echo guarda la sintassi heredoc
 
Ultima modifica:

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
Faccio una domanda forse sciocca...
Ma se guardi il sorgente della pagina vedi tutti i risultati o proprio non lo stampa il primo??

Sarei tentato di chiederti un esportazione del database cosi faccio le prove in locale :D
Comunque non mi convince il passaggio while / foreach
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Faccio una domanda forse sciocca...
Ma se guardi il sorgente della pagina vedi tutti i risultati o proprio non lo stampa il primo??

Sarei tentato di chiederti un esportazione del database cosi faccio le prove in locale :D
Comunque non mi convince il passaggio while / foreach

Non stampa il primo. Se posso dirti neanche a me convince quel passaggio.
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Grazie Borgo!
Ho provato lo script, un sacco di undefined index ma vabbè niente di irrimediabile, un sacco di campi vuoti.


Quello che pensavo visto che non intabella l'Array[0] puo' darsi che il ciclo while sia il problema? Solo che non capisco come.
 

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
Grazie Borgo!
Ho provato lo script, un sacco di undefined index ma vabbè niente di irrimediabile, un sacco di campi vuoti.


Quello che pensavo visto che non intabella l'Array[0] puo' darsi che il ciclo while sia il problema? Solo che non capisco come.

Attenzione manca un pezzetto qui!
PHP:
    while($riga=mysql_fetch_array()){

Se non erro... Dovrebbe essere

PHP:
while($riga=mysql_fetch_array($result)){
 

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
si si me ne ero accorto e corretto! :D In questo caso il risultato viene stampato correttamente. manca qualche campo ma viene stampato. solo vorrei sapere che cavolo di fine fà il primo array!
 
Discussioni simili
Autore Titolo Forum Risposte Data
G MariaDB non restituisce dei valori PHP 7
K SQL con between non restituisce i dati corretti MS Access 7
L Funzione non restituisce completamente un array PHP 2
D Se non trova un elemento in array restituisce il testo dell'elemento PHP 2
M Request.form non restituisce valori Classic ASP 5
felino Mac OS e Client Mail: Stato non in linea Mac e Software 1
I nome utente non esiste nel database PHP 1
M Drag and Drop non capisco le sequenze... Javascript 1
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
M Immagini non usate WordPress 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
G Numero zero null non deve visualizzare nulla PHP 0
F Paypal _xclick IPN non risponde PHP 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
E Alert non viene mostrato PHP 1
felino Hardisk WD SATA 1TB 3.5" non si avvia! Hardware 4
K Scrip non funzionante Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
zorro CREATE TABLE non funziona PHP 6
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
Sevenjeak Php8 non carica estenzioni PHP 0
R query DELETE non cancella i record PHP 1
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
G Non vedo frecce su forme Photoshop 2
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
P jquery refresh div non funziona Javascript 0
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
S Certificato SSL non funzionante Domini 0
zorro modulo di registrazione: funziona ma non sempre PHP 2
D Form contatti non funzionante HTML e CSS 0
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
M Non ho rinnovato il mio sito su Aruba... Domini 1
T IP INFO NON FUNZIONA PHP 0
Shyson Google search non trova il mio sito SEO e Posizionamento 1
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
P Data scraping in PHP non funziona PHP 4
otto9due $_FILE non passa i dati dal form PHP 1
keyascii Non è mai troppo tardi Presentati al Forum 0
N dati tabella non presi PHP 1
P Pagina modifica record che non funziona PHP 0
Shyson AUTO_INCREMENT non si aggiorna MySQL 2
Shyson Codice wp-login non funziona PHP 2
S WORDPRESS NON FA INSTALLARE PIU NULLA WordPress 9
Shyson Non mi fa accedere al sito WordPress 12
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
R INSERT INTO tabella non funziona Classic ASP 2
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
felino Conversione da MPG a MP4: audio non sincronizzato Windows e Software 1

Discussioni simili