Back to top

Autore Topic: Recuperare valore da db con substring?  (Letto 2350 volte)

Offline valex

  • Esploratore
  • **
  • Post: 62
    • Mostra profilo
Recuperare valore da db con substring?
« il: 30 Apr 2010, 17:32:06 »
Ciao!

sò che non è propriamente una domanda joomlesca, ma ho un problemino che non riesco a risolvere.

ho un valore in una tabella che è così

a:1:{i:0;s:56:"si! contattatemi e partiamo insieme per nuove avventure!";}

come faccio a prendere solo il testo?

devo lavorare con substring , cast ecc? però non riesco a trovare una caspita di guida su internet. aiuto!!

mau_develop

  • Visitatore
Re:Recuperare valore da db con substring?
« Risposta #1 il: 30 Apr 2010, 18:39:45 »
dunque, adesso ti dico tutte le cose curde che mi vengono in mente.

...tutto regex a parte :)

1) explode(':', stringa);
e hai un array di cui la key più alta è quella della stringa che ti serve

2) strpos delle virgolette e calcolo con relativa sottrazione della stringa.

3) ti avrei detto eregi ma vedo dal php che è stata deprecata... però vedo che ce ne sono di nuove per le stringhe

4) MA AVREI dovuto metterla per prima... hai provato con unserialize() ? ... sembra il frutto di un serialize().

M.

Offline valex

  • Esploratore
  • **
  • Post: 62
    • Mostra profilo
Re:Recuperare valore da db con substring?
« Risposta #2 il: 30 Apr 2010, 19:14:26 »
o mamma, il curdo nooo...Grande Mau, grazie della risposta.

dunque, ci provo!
ho provato con unserialize,  tra l'altro il problema è che non sempre la stringa è uguale, ma può anche avere un altro valore,
tipo
a:1:{i:0;s:35:"no grazie! sono un lupo solitario! ";}

per navigare nei valori di questa maledetta tabella ho partorito sta super query


SELECT * from (

SELECT DISTINCT wp_bp_xprofile_data.user_id USERID ,

(SELECT wp_bp_xprofile_data.value
FROM wp_bp_xprofile_data
WHERE wp_bp_xprofile_data.user_id = USERID
AND wp_bp_xprofile_data.field_id =5
)META ,

(SELECT wp_bp_xprofile_data.value
FROM wp_bp_xprofile_data
WHERE wp_bp_xprofile_data.user_id = USERID
AND wp_bp_xprofile_data.field_id = 61
) AMICI ,

(SELECT wp_bp_xprofile_data.value
FROM wp_bp_xprofile_data
WHERE wp_bp_xprofile_data.user_id = USERID
AND wp_bp_xprofile_data.field_id = 62
) SHARE1 ,

(SELECT wp_bp_xprofile_data.last_updated
FROM wp_bp_xprofile_data
WHERE wp_bp_xprofile_data.user_id = USERID
AND wp_bp_xprofile_data.field_id = 5
) TEMPO 

FROM wp_bp_xprofile_data ORDER BY TEMPO DESC LIMIT 0, 10
) BASE_TABLE where BASE_TABLE.META is not null

e nel foreach ci ho messo questo

foreach ( $risultati as $r)
echo '<li class="postplaner">'.get_avatar($r->USERID, $size = '24').' Ciao, sono '.get_user_name($r->USERID).' e sto pianificando il viaggio a: '
.$r->META.'

Compagni di viaggio: '.$r->AMICI.'

Share your trip? '.unserialize($r->SHARE1).'
</li></br>';

purtroppo mi stampa solo Array, che dovrei fare? innanzitutto comprarmi un bel libro su mysql e php 5, lo ammetto,  ma poi?

Offline valex

  • Esploratore
  • **
  • Post: 62
    • Mostra profilo
Re:Recuperare valore da db con substring?
« Risposta #3 il: 30 Apr 2010, 19:17:05 »
foreach ( $risultati as $r)
echo '<li class="postplaner"><a-href="http://www.nomesito.com/members/'.get_user_name($r->USERID).'/profile/">'.get_avatar($r->USERID, $size = '24').'[/url] Ciao, sono '.get_user_name($r->USERID).' e sto pianificando il viaggio a: '
.$r->META.'

Compagni di viaggio: '.$r->AMICI.'

Share your trip? '.unserialize($r->SHARE1).'
</li></br>';
« Ultima modifica: 30 Apr 2010, 19:18:50 da valex »

mau_develop

  • Visitatore
Re:Recuperare valore da db con substring?
« Risposta #4 il: 30 Apr 2010, 21:18:16 »
..infatti, non avevo visto i ;

si, mi sa che con le regex è più semplice, comunque se sono almeno sempre tra doppi apici puoi fare così:

$stringa = 'a:1:{i:0;s:35:"no grazie! sono un lupo solitario! ";}';

$ultima = strrpos($stringa, '"');
$prima = strripos($stringa, '"');

$risultato = substr($stringa, $prima, $ultima-$prima);

M.

EDIT ... stavo guardando qui:

http://www.php.net/manual/en/function.unserialize.php

esempio 2... perchè non riesci?
« Ultima modifica: 30 Apr 2010, 21:25:25 da mau_develop »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Recuperare valore da db con substring?
« Risposta #5 il: 02 Mag 2010, 10:03:50 »
ragazzi è un array!  ;)

Codice: [Seleziona]
$s='a:1:{i:0;s:56:"si! contattatemi e partiamo insieme per nuove avventure!";}';
$a=unserialize($s);
echo $a[0];

valex ma che hai scritto???

Codice: [Seleziona]
SELECT * from ( SELECT

50 queries e il sito va in ginocchio!! riscrivi la query usando le join... non ho capito come possa funzionare  :o

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline valex

  • Esploratore
  • **
  • Post: 62
    • Mostra profilo
Re:Recuperare valore da db con substring?
« Risposta #6 il: 02 Mag 2010, 18:22:02 »
ueeee eccomi, ho risolto, grande mau!! grandeeeeee..

foreach ( $risultati as $r)
{
$stringa= $r->SHARE1;
$share = 'vai sul tuo profilo';
if ( !is_null($stringa) ) {
$stringa = $r->SHARE1;
$prima = strpos($stringa, '"');
$ultima = strrpos($stringa, '"');
$share = substr($stringa, $prima+1, $ultima-$prima-1);
}

poi stampo $share e mi funziona tutto correttamente..
ora provo anche unserialize vediamo se mi funge, grazie mmleoni, per ora la query regge in effetti è un pò abnorme! eheh  ;D...dopo mi ci metto e inserisco le join..intanto il risultato è visibile su www.ioviaggiointreno.com/trainplaner/

 



Web Design Bolzano Kreatif