visualizzare una opzione di un campo mysql

  • Creatore Discussione Creatore Discussione gaia
  • Data di inizio Data di inizio

gaia

Nuovo Utente
9 Feb 2010
29
0
0
Ho una tabella Mysql fatta nel modo seguente

tabellaA


id | name | value


1 |data | [{"name":null,"value":"","target":null,"alias":""," required":1,"showNull":0}]

2 |tipologia | [{"name":"privato","value":1,"target":null,"alias": "","required":1,"showNull":0}

3 |tempo di lavoro |[{"name":null,"value":"30,60,120,180,","target":null,"alias":"","required":1,"showNull ":0}]

debbo visualizzare SOLO il valore del tempo di lavoro, quello segnato in rosso.

Qualcuno saprebbe scrivermi la striga.
Grazie infinite a chiunque risponda.
 
Ultima modifica:
ciao
scusa ma non ho capito bene i campi sono/si chiamano (e quello che vuoi fare esattamente)
id
name
value
1
2
3
oppure
id
name
value
data
tipologia
tempo di lavoro
?
nel primo caso per estrarre solo il valore del campo 3
Codice:
SELECT 3 FROM TabellaA
nel secondo
Codice:
SELECT tempo di lavoro FROM TabellaA
però non è mai bene scrivere i nomi con gli spazi.
se il nome è tempo di lavoro dovresti modificarlo (es) tempo_di_lavoro
 
Intanto,grazie 1000 per aver risposto.
Hai ragione, ovviamente, sugli spazi "tempo di lavoro".
I campi sono
id| name|value
E se volessi visualizzare il tempo di lavoro dovrei utilizzare l'istruzione

SELECT 3 FROM TabellaA

Ok, a questo già c'ero arrivata.

Il problema è che non voglio visualizzare tutto della riga 3 ma solo quello in rosso

[table="width: 500, class: grid"]
[tr]
[td]id[/td]
[td]name[/td]
[td]value[/td]
[/tr]
[tr]
[td]3[/td]
[td]tempo di lavoro [/td]
[td][{"name":null,"value":"30,60,120,180,","target":null,"alias":"","required":1,"showNul l ":0}][/td]
[/tr]
[/table]

e quindo solo una parte del campo value della riga 3


Grazie
Gaia
 
Mi da questo errore:
mysql_query() expects parameter 2 to be resource, string given in... percorso files on line 25

rivedendo il file in Dreamweaver corrisponde alla parte in blu indicata dall freccia


$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'","',1) FROM tabellaA

where name='tempo di lavoro'

"); <---


Non chiudo bene l'istruzione?
 
Ultima modifica:
Prova a chiudere in questo modo:
PHP:
$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'","',1) FROM tabellaA WHERE name='tempo di lavoro'");
 
Prova a chiudere in questo modo:
PHP:
$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'","',1) FROM tabellaA WHERE name='tempo di lavoro'");


Grazie ma già avevo provato questa opzione e mi da lo stesso errore notificato nel post precedente
 
Ciao,
se vuoi utilizzare il sql da me indicato all'interno di php dovresti annullare i doppi apici considerati come caratteri speciali

SELECT value, substring_index(substring_index(value,':',-5),'","',1) FROM tabellaA where name='tempo di lavoro'

quindi prova così:

$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'"",""',1) FROM tabellaA where name='tempo di lavoro'");

ho doppiato i doppi apici, uno annulla l'altro

Ciao
Mik


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 
Ciao,
se vuoi utilizzare il sql da me indicato all'interno di php dovresti annullare i doppi apici considerati come caratteri speciali

SELECT value, substring_index(substring_index(value,':',-5),'","',1) FROM tabellaA where name='tempo di lavoro'

quindi prova così:

$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'"",""',1) FROM tabellaA where name='tempo di lavoro'");

ho doppiato i doppi apici, uno annulla l'altro

Ciao
Mik


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!



Aggiungendo gli apici come mi hai indicato, già il dreamw. mi da errore.
Ti rigrazio cmq della tua collaborazione...e spero ti venga ancora un'idea.
Grazie
 
Due doppi apici vicini è come non metterne nessuno e dovresti unire le stringhe con i punti..quindi prova a rimuovere entrambe le coppie lasciando solo gli apici singoli.
 
Due doppi apici vicini è come non metterne nessuno e dovresti unire le stringhe con i punti..quindi prova a rimuovere entrambe le coppie lasciando solo gli apici singoli.


Hai ragione...anche stavolta.
Ma...c'è sempre un ma...
Non mi da più alcun errore, ma mi stampa l'intero campo.
Ti faccio vedere...forse è meglio

$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),',',1) FROM tabellaA

where tabellaA.name='tempo di lavoro'");


//Se la query va male
if (!$ris_news) {

exit ('<p> Errore mentre recuperavo i dati ' . mysql_error() . '</p>');

}

echo "<p>Campi estratti dalla tabella Campi Extra</p><br>";

while ($news= mysql_fetch_array($ris_news))

{

echo "<p>Elementi Tabella:".$news['value']."</p>" ;

}

?>

Penso di sbagliare a richiamare value

Ciò che vedo nel browser è


Campi estratti dalla tabella Campi Extra

Elementi Tabella:[{"name":null,"value":"30,60,120,180,","target":null,"alias":"","required":1,"showNull":0}]



Vorrei invece poter vedere


Campi estratti dalla tabella Campi Extra

Elementi Tabella:"value":"30,60,120,180,"


O anche

Campi estratti dalla tabella Campi Extra

Elementi Tabella: "30,60,120,180,"
 
Ok, non ho abbastanza conoscenze su PHP, ma vedendo in giro per fare l'escape delle virgolette basta mettere davanti a ogni virgoletta
contenuta nella stringa un backslash:

quindi diventa:

$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'\",\"',1) FROM tabellaA where name='tempo di lavoro'");

Ciao
Mik


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 
Ok, non ho abbastanza conoscenze su PHP, ma vedendo in giro per fare l'escape delle virgolette basta mettere davanti a ogni virgoletta
contenuta nella stringa un backslash:

quindi diventa:

$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),'\",\"',1) FROM tabellaA where name='tempo di lavoro'");

Ciao
Mik


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!



Scusami in alcun modo volevo mettere in discussione le tue competenze.:confused:
Evidentemente sono le mie ad essere ridotte.:hammer:
Scritta così la stringa funziona.
Volevo però che tu leggessi il mio precedente post perchè ora il problema è che mi fa visualizzare tutto il contenuto del campo e non solo la parte
che, diciamo, mi interessa.
Grazie dell'aiuto Mick
 
Ok, non ho abbastanza conoscenze su PHP
Non ti stavo criticando ma se funziona in entrambi i modi conviene non metterle proprio, o sbaglio?

Per quanto riguarda il codice prova in questo modo:
PHP:
$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),',',1) as ciao FROM tabellaA WHERE tabellaA.name='tempo di lavoro'");
//Se la query va male
if (!$ris_news) {
exit ('<p> Errore mentre recuperavo i dati ' . mysql_error() . '</p>');
}
echo "<p>Campi estratti dalla tabella Campi Extra</p><br>";
while ($news= mysql_fetch_array($ris_news))
{
echo "<p>Elementi Tabella:".$news['ciao']."</p>" ;
}
?>

P.s. Ricordate di formattare il codice con gli appositi tag per garantire una migliore lettura.
 
Non ti stavo criticando ma se funziona in entrambi i modi conviene non metterle proprio, o sbaglio?

Per quanto riguarda il codice prova in questo modo:
PHP:
$ris_news= mysql_query("SELECT value, substring_index(substring_index(value,':',-5),',',1) as ciao FROM tabellaA WHERE tabellaA.name='tempo di lavoro'");
//Se la query va male
if (!$ris_news) {
exit ('<p> Errore mentre recuperavo i dati ' . mysql_error() . '</p>');
}
echo "<p>Campi estratti dalla tabella Campi Extra</p><br>";
while ($news= mysql_fetch_array($ris_news))
{
echo "<p>Elementi Tabella:".$news['ciao']."</p>" ;
}
?>

P.s. Ricordate di formattare il codice con gli appositi tag per garantire una migliore lettura.


Temo tu sia davvero bravo :incazz:
Sopporterò...:)...scherzo.
Funziona!
Mi restituisce un " di troppo ma cerco di risolvere io.
GRAZIE INFINITE
e scusami in anticipo se in seguito mi servirò ancora di te/voi.

Grazie anche a Mick
 
ciao
se la prima parte è sempre la stessa perche non usi più semplicemente
Codice:
SELECT SUBSTRING('value',14,37) as ora  FROM tabellaA WHERE name='tempo di lavoro'
(verifica che abbia contato giusto)
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr
(precedente a substring_index)
?
poi un consiglio
dividi la query (indipendentemente da quella che poi userai) e metti un paio di var_dum così vedi se la query viene scritta come dovrebbe
PHP:
<?php
//.....
$query="SELECT ....  FROM tabellaA WHERE name='tempo di lavoro'";
var_dump($query);//vedi se la query è scritta come dovrebbe
$ris_news= mysql_query($query);
var_dump($ris_news);//vedi se la query va a buon fine
//...
?>

edit
poi perche non estrai tutto il campo e poi te lo formatti come vuoi con php, secondo mer sarebbe più semplice e meno dispendioso
 
Ultima modifica:
ciao
se la prima parte è sempre la stessa perche non usi più semplicemente
Codice:
SELECT SUBSTRING('value',14,37) as ora  FROM tabellaA WHERE name='tempo di lavoro'
(verifica che abbia contato giusto)
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr
(precedente a substring_index)
?
poi un consiglio
dividi la query (indipendentemente da quella che poi userai) e metti un paio di var_dum così vedi se la query viene scritta come dovrebbe
PHP:
<?php
//.....
$query="SELECT ....  FROM tabellaA WHERE name='tempo di lavoro'";
var_dump($query);//vedi se la query è scritta come dovrebbe
$ris_news= mysql_query($query);
var_dump($ris_news);//vedi se la query va a buon fine
//...
?>

Ok verifico il conteggio e provo con var_dum.

Sto scrivendo dei file in php che serviranno da report per un gestionale.
ecco il motivo di estrarre solo quel valore.



Vi faccio sapere appena possibile.

Grazie a tutti voi.
 
Ultima modifica:
Si puoi utilizzare subring (che è meglio in questo caso) oppure modificare quella che hai.
Avevo dato per scontato che funzionasse bene la selezione.
 

Discussioni simili