Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    come ricerco da pos a pos?

    Salve a tutti potete darmi una mano a capire come posso fare per:
    cercare dentro una stringa dei valori delimitati tra due simboli.
    In VB so come fare, ma in php ho difficolta a capirlo!
    Io ricevo una stringa composta da articolo, quantita e prezzo, ma possono essere n articoli.
    ad esempio :
    codice_1(Manifesti)quantita_1(1)amount_1(385.00)co dice_2(Volantini)quantita_2(1)amount_2(85.00)codic e_3(Depliant)quantita_3(1)amount_3(205.00)codice_4 (Trasporto)quantita_4(1)amount_4(8.00)

    Il ciclo di tre chiude l'articolo e devo riprendere ad estrarre codice,quantita,prezzo
    ho provato a stampare i valori ogni volta che li leggo ma non riesco a proseguire.
    Ho scritto questo pezzo di codice, che funziona:
    Codice PHP:

     
    $ciclo
    =1;
    $prezzo=0;
    $codici=array();
    $quantita=array();
    $amount=array();

    $strlen=0;
    $partenza=0;
    $arrivo=0;

    echo 
    "<table border='1'>";
    echo 
    "<tr>";
     
     
    foreach(
    $_GET as $n=>$v
     { 
         if (
    $v !='' ) {
            
    $tmp rawurldecode($v); 

       if ( !
    get_magic_quotes_gpc() ) 
                
    $tmp addslashes($tmp); 
              $
    $n $tmp
                
    $primo $n."(".$tmp .")" 
                
                echo 
    $primo;
                 
                 
    $codici[$ciclo] =substr(strstr($primo,'codice_'),'8') ;
                 
    $amount[$ciclo] =substr(strstr($primo,'amount_'),'8') ;            
                  
                if (
    $ciclo ==3){
                        echo 
    "<td>" .$codici[1] . " ";
                         echo 
    "<td>" .$amount[1] . "</td>";
     
                     
    $ciclo=0;
                }
                
                
    $ciclo++;
                    
     }
        
    }
        
        echo 
    "<td></td>"
    Questo è il risultato di quanto mi stampa


    (Manifesti) (Volantini) (Depliant) (Trasporto)

    Prelevo solo l'articolo ma non riesco a prelevare il prezzo
    proprio non mi entra in testa!! in vb ci sono funzioni MID() strpos ed altre che
    conosco bene ma in PHP non riesco a capire.

    Mi potete aiutare?
    Grazie...

  2. #2
    la funzione in php è: explode.
    Ti faccio un esempio, io avevo una data in questo formato "dd-mm-yyyy"
    perciò ho fatto così:

    Codice PHP:
    $separatore="-";
    $suddivisa=explode($separatore$data);
    //quindi $suddivisa[0]=dd, $suddivisa[1]=mm e $suddivisa[2]=yyyy 
    Non ho capito come sono i tuoi dati ma se hai capito l'esempio puoi adattarlo al tuo caso.
    Se non ci riesci, scrivimi con precisione com'è la tua stringa che cerco di aiutarti.

    Ciao ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ciao, grazie per l'aiuto!
    i dati che ho sono tutti in fila sepatati da un simbolo che metto io per capire quando cambia il valore,però il contenuto è in ordine e sempre lo stesso, cioè :
    codice_1(Manifesti)quantita_1(1)amount_1(385.00)
    il valore che mi serve e tra le parentesi, cosi dovrò prelevare il valore di ogniuno
    codice_1=Manifesti
    quantita_1=1
    amount_1=385.00

    però il tuo aiuto mi potrebbe servire come base solo che non so come indicare "cosa" prendere, se modifico il separatore per poter usare il tuo esempio e al posto della
    parentesi ci metto il meno "-" potrei scrivere cosi:

    Codice PHP:
                 
        $separatore
    ="-"
        
    $codici[$ciclo] =explode($separatore$primo); 

     
        if (
    $ciclo ==3){

           echo 
    "<td>" .$codici[$ciclo] . " ";
                    
                     
    $ciclo=0;
                }
                
                
    $ciclo++; 
    Ma il risultato che stampa è questo :



    Array Array Array Array
    mentre prima ottenere i valori giusti ma solo per gli articoli, non riuscivo ad estrarre
    i prezzi.

  4. #4
    3 domande:
    1- $primo a cosa è uguale esattamente? è uguale a: codice_1(Manifesti)quantita_1(1)amount_1(385.00) ???
    2- dato che dici "modifico il separatore" significa che $primo lo costruisci tu??
    3- come fai a stampare il risultato??? usi var_dump e non echo, vero???da quello che vedo no...perciò togli l'if e fai solo var_dump($codici) e dimmi cosa ti restituisce.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ok saretta, ci sono quasi grazie al tuo aiuto.
    ho separato i valori con il simbolo univoco "-" ed ho utilizzato il tuo codice
    prima però ho controllato sul manuale come funziona!!
    (Mentre scrivo mi arriva una tua nuova risposta)
    il codice modificato funziona, mi restituisce un errore

    ti posto il nuovo codice
    Codice PHP:
    foreach($_GET as $n=>$v
     { 
         if (
    $v !='' ) {
            
    $tmp rawurldecode($v); 

       if ( !
    get_magic_quotes_gpc() ) 
                
    $tmp addslashes($tmp); 
              $
    $n $tmp

    // questo è come costruisco il $primo con i valori separati dal segno meno
    // per usare explode

                    
    $primo $n."-".$tmp ."-" 
                
             
    $codici=explode('-'$primo); 

            echo 
    "<td>" .$codici[1] . " ";
            echo 
    " " .$codici[2] . " ";
            echo 
    " " .$codici[3] . "</td>";
     
             if (
    $ciclo ==3){        // ogni tre ricomincio da 1 per gli array
             
                     
    $ciclo=0;
             }  
                
                
    $ciclo++;
                    
     }
        


    Il $primo lo costruisco dalla $_GET che mi arriva come puoi leggere.
    ed il risultato ora è corretto a parte l'errore su indice 3

    Notice: Undefined offset: 3

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Come non detto! ero convinto di essere riuscito a separare i dati ma non è cosi!
    nel codice modificato

    Codice PHP:
    foreach($_GET as $n=>$v
     { 
         if (
    $v !='' ) {
            
    $tmp rawurldecode($v); 

       if ( !
    get_magic_quotes_gpc() ) 
                
    $tmp addslashes($tmp); 
              $
    $n $tmp
                
    $primo $n."-".$tmp ."-" 
                
                 
    $codici=explode('-'$primo); 
                
                  echo 
    $codici[1]. "  ";
               
             
    $ciclo++;
                    
     }
        


    il valore dell'array $codici[1] contiene TUTTO il $primo, continuo a non capire come fare ad estrarre solo il codice, o solo il prezzo!!!



    Vi prego AIUTATEMI!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Esiste un modo per memorizzare il valore di un array(0,1)
    cioè estrarre il valore del primo array indice 1
    secondo array indice 1

    Questo è quello che mi stampa, se può servire il var_dump($codici)

    array
    0 => string 'codice_1' (length=8)
    1 => string 'Manifesti' (length=9)
    2 => string '' (length=0)
    array
    0 => string 'quantita_1' (length=10)
    1 => string '1' (length=1)
    2 => string '' (length=0)
    array
    0 => string 'amount_1' (length=8)
    1 => string '385.00' (length=6)
    2 => string '' (length=0)
    array
    0 => string 'codice_2' (length=8)
    1 => string 'Volantini' (length=9)
    2 => string '' (length=0)
    array
    0 => string 'quantita_2' (length=10)
    1 => string '1' (length=1)
    2 => string '' (length=0)
    array
    0 => string 'amount_2' (length=8)
    1 => string '85.00' (length=5)
    2 => string '' (length=0)

  8. #8
    Momento di fuoco al lavoro, scusa.
    Io posso anche provare ad aiutarti ma se ti faccio delle domade magari rispondimi perchè sennò non ti capisco ed è inutile.

    cit.
    3 domande:
    1- $primo a cosa è uguale esattamente? è uguale a: codice_1(Manifesti)quantita_1(1)amount_1(385.00) ??? scritto proprio in questo modo???
    2- dato che dici "modifico il separatore" significa che $primo lo costruisci tu??
    3- come fai a stampare il risultato??? usi var_dump e non echo, vero???da quello che vedo no...perciò togli l'if e fai solo var_dump($codici) e dimmi cosa ti restituisce.

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    se usi un formato csv ti basta un explode come gia' suggerito !!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    CIao, grazie, rispondo nell'ordine :

    il valore del GET in arrivo reale è questo

    Manifesti1385.00Volantini185.00Depliant1205.00Tras porto18.00

    ovviamente per capire cosa contiene lo separo e lo metto in $primo

    if ( !get_magic_quotes_gpc() )
    $tmp = addslashes($tmp);
    $$n = $tmp;
    $primo = $n."-".$tmp ;


    il VAR_DUMP della $codici

    array
    0 => string 'codice_1' (length=8)
    1 => string 'Manifesti' (length=9)
    2 => string '' (length=0)
    array
    0 => string 'quantita_1' (length=10)
    1 => string '1' (length=1)
    2 => string '' (length=0)
    array
    0 => string 'amount_1' (length=8)
    1 => string '385.00' (length=6)
    2 => string '' (length=0)
    array
    0 => string 'codice_2' (length=8)
    1 => string 'Volantini' (length=9)
    2 => string '' (length=0)
    array
    0 => string 'quantita_2' (length=10)
    1 => string '1' (length=1)
    2 => string '' (length=0)
    array
    0 => string 'amount_2' (length=8)
    1 => string '85.00' (length=5)
    2 => string '' (length=0)
    array
    0 => string 'codice_3' (length=8)
    1 => string 'Depliant' (length=8)
    2 => string '' (length=0)
    array
    0 => string 'quantita_3' (length=10)
    1 => string '1' (length=1)
    2 => string '' (length=0)
    array
    0 => string 'amount_3' (length=8)
    1 => string '205.00' (length=6)
    2 => string '' (length=0)

    in pratica, mi pare di capire che la $codici si riempie immediatamente di tutti i valori
    se ci fosse il modo di usare gli array come in vb sarebbe facile

    materiale = $codici[0,1]
    quantita = $codici[1,1]
    prezzo =$codici[2,1]

    ma in php esiste una funzione simile?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.