Query automatica al caricamento pagina

  • Creatore Discussione Creatore Discussione zerobit
  • Data di inizio Data di inizio

zerobit

Utente Attivo
10 Mar 2012
35
0
0
Ciao ragazzi , spero possiate darmi una mano

Devo eseguire una query al caricamento pagina , ma mi dà errore alla riga mysql_fetch_array , riuscite a capire il perchè ?

PHP:
<?
$chiave=$_REQUEST['chiave'];  
top();
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file xxxx.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file xxxx.php");
$query = "SELECT latte, panna, FROM prodotti WHERE lista='parmalat'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
{
$testo = $row['latte'];
$audio = $row['panna'];
?>




.
 
Ciao ragazzi , spero possiate darmi una mano

Devo eseguire una query al caricamento pagina , ma mi dà errore alla riga mysql_fetch_array , riuscite a capire il perchè ?

PHP:
<?
$chiave=$_REQUEST['chiave'];  
top();
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file xxxx.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file xxxx.php");
$query = "SELECT latte, panna, FROM prodotti WHERE lista='parmalat'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
{
$testo = $row['latte'];
$audio = $row['panna'];
?>
.


Ciao, posta l'errore, per vedere cosa dice, magari capiamo
 
C'è una virgola in piu

SELECT latte, panna,
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\TEST.php on line 168

Questa è la riga 168

168 $row = mysql_fetch_array($result);


criric

C'è una virgola in più

SELECT latte, panna,

No , le virgole vanno bene deve estrarre dalla colonna latte e dalla colonna panna , anzi aggiungerei anche ID .




Un'altra cosa e se la LISTA della TABELLA PRODOTTI non contiene più parmalat come faccio a dirgli di andare a valsoia ( il record successivo ) ?

Devo creare un'altra query ?
 
Ultima modifica:
No , le virgole vanno bene

non puoi finire con una virgola se no va in errore

ofai

SELECT latte, panna

o

SELECT latte, panna,id
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\TEST.php on line 168

Questa è la riga 168

168 $row = mysql_fetch_array($result);




No , le virgole vanno bene deve estrarre dalla colonna latte e dalla colonna panna , anzi aggiungerei anche ID .




Un'altra cosa e se la LISTA della TABELLA PRODOTTI non contiene più parmalat come faccio a dirgli di andare a valsoia ( il record successivo ) ?

Devo creare un'altra query ?


Ciao, non serve creare query, all'interno di esse c'è una parola
se la utilizzi hai la possibilità di rendere tutto dinamico

Ciao
 
Che stupido che sono , avevi ragione tu , era quella virgola a causare l'errore ...

Grazie mille criric !


Ciao, non serve creare query, all'interno di esse c'è una parola
where
se la utilizzi hai la possibilità di rendere tutto dinamico


SELECT latte, panna FROM prodotti WHERE lista='parmalat'";

Estrai LATTE , PANNA dalla tabella PRODOTTI a condizione che nella LISTA vi sia parmalat se non c'è non prende niente , mentre vorrei che in un caso del genere andasse a prendere il record successivo

Quindi se parmalat non c'è più come fa ad andare a valsoia con WHERE ?

:crying:
 
Che stupido che sono , avevi ragione tu , era quella virgola a causare l'errore ...

Grazie mille criric !





SELECT latte, panna FROM prodotti WHERE lista='parmalat'";

Estrai LATTE , PANNA dalla tabella PRODOTTI a condizione che nella LISTA vi sia parmalat se non c'è non prende niente , mentre vorrei che in un caso del genere andasse a prendere il record successivo

Quindi se parmalat non c'è più come fa ad andare a valsoia con WHERE ?

:crying:


Scusami non avevo guardato bene la query :incazz2:
vorrei chiederti, per la ricerca dai già delle indicazioni, oppure è libera
nel senso, l'utente clicca su parmalat ed essendo vuota passa alla successiva, questo vuoi fare

Ciao :confused:
 
Scusami non avevo guardato bene la query
vorrei chiederti, per la ricerca dai già delle indicazioni, oppure è libera
nel senso, l'utente clicca su parmalat ed essendo vuota passa alla successiva, questo vuoi fare

Ciao

No la pagina si apre con un redirect e mostra i risultati , se i dati su parmalat NELLA COLONNA lista del db non ci sono , passa al record successivo ( della stessa colonna )

Vorrei automatizzare la cosa evitando di inserire più query nel codice
 
alessandro1997

Beh, dovrebbe bastare limitare il numero di risultati a 1:


Ottima idea Alessandro1997 !


Però c'è un inghippo

Ipotizziamo che nella colonna LISTA ci siano 5 record

li chiameremo

A
B
C
D
E


Se A non c'è passa al record B
Se B non c'è passa al record C
Se C c'è ( beccato ) mostra i risultati e FERMATI !


Se uso LIMIT posso limitare la visualizzazione dei risultati , un poco per volta , ma non ottengo il risultato sperato

Sono ancora in alto mare ... :crying:


Rimango in ascolto comunque nel caso venissero fuori altre idee ....


Ciao e ancora grazie per le risposte che ho ricevuto
 
Ultima modifica:
Già, mi ero scordato. Nel tuo caso potresti provare così:
Codice:
SELECT latte, panna, lista FROM prodotti ORDER BY FIELD(lista, 'Parmalat', 'lista1', 'lista2') ASC LIMIT 1
Devi inserire manualmente i valori per cui vuoi ordinare.
 
Ciao

Già, mi ero scordato. Nel tuo caso potresti provare così:
Codice:

SELECT latte, panna, lista FROM prodotti ORDER BY FIELD(lista, 'Parmalat', 'lista1', 'lista2') ASC LIMIT 1


Ho provato a modificare in questo modo ....

PHP:
$query = "SELECT latte, panna FROM prodotti ORDER BY FIELD(lista, 'parmalat', 'valsoia', 'nestlè') ASC LIMIT 1";

... ma stranamente restituisce un risultato casuale , ( anche se sempre uguale )

Risultato che per'altro non ha nessuna attinenza con la query inviata , insomma fa come gli pare ...
 
Ultima modifica:
Ciao,
non mi è molto chiaro ....

potresti provare anche cosi

PHP:
$query = "SELECT latte, panna FROM prodotti WHERE lista IN ('parmalat', 'valsoia', 'nestlè') ORDER BY lista ASC LIMIT 1";

Dvrebbe restituirti il primo elemento disponibile di lista in ordine alfabetico A-Z

o puoi ordinare in altro modo ORDER BY id DESC // ultimo inserito

ripeto che non mi è molto chiara la tabella che hai e quello che ci vuoi fare

vado per tentativi
 
Ciao criric , purtroppo segnala un errore

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\TEST.php on line 170


non mi è molto chiaro ....

Per abbreviare ... lo scenario del rompicapo è questo

Tabella PRODOTTI con due campi

1° campo = LATTE

2° campo = PANNA

Nella colonna che appartiene al campo LATTE ci sono 5 record

1° record = A
2° record = B
3° record = C
4° record = D
5° record = E

Tramite link o redirect si arriva alla pagina che mostra i risultati che non sono fissi ma variabili per modifica / aggiornamento / cancellazione

Ora il problema e che nei risultati deve mostrare un solo record del campo LATTE , non tutti !

Quindi abbiamo :

Se il record A non c'è mostra il record B
Se B non c'è passa al record C
Se C c'è mostra il risultato e FERMATI non andare oltre !


Credo comunque che sarebbe meglio cambiare direzione , a questo punto vorrei assegnare le query a delle variabili per poterle gestire meglio , cosa ne pensate ?
 
Ultima modifica:
Ciao

L'errore che ti segnala probabilmente è dovuto ad un errore di sintassi nella query

molto utile stampare a video query ed errori mysql

PHP:
$res = mysql_query($query);

if(!$res) {
   echo $query . "<br/>" . mysql_error();
}

Vediamo se ho capito, la tua tabella è piu o meno cosi?
zerobit.png
 
Esatto !

Ora dal campo LATTE come ho già detto , non deve mostrare tutti i risultati , ma :

Se il record A non c'è mostra il record B ( E BASTA )
Se B non c'è passa al record C
Se C c'è mostra il risultato e FERMATI non andare oltre e NON cercare altri record !

Ciao :byebye:
 
PHP:
$query = "SELECT latte, panna FROM prodotti WHERE latte IN ('A', 'B', 'C','D','E') ORDER BY latte ASC LIMIT 1";

se ti segnala errori come detto prima stampa query e errore mysql
 
Ottimo criric !


Ringrazio i partecipanti alla discussione

Grazie infinite per l'aiuto che mi avete dato
 
Ultima modifica:

Discussioni simili