Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Rimuovere caratteri da stringa complessa

    Ciao a tutti,

    ho un problema di non facile risoluzione (almeno per me):

    ho una stringa il cui contenuto serve per creare dinamicamente il contenuto di una query che effettuero' dopo, la stringa e' cosi' composta:

    Codice PHP:

    (id 292 AND id_record 77 OR id 298 AND  id_record 78 OR id 483 AND id_record 78 OR id 313 AND id_record =  79 OR id 428 AND id_record 84 OR id 444 AND id_record 86 OR id =  539 AND id_record 91
    Quello che vorrei fare e' eliminare (per la riga di interesse), tutto quello che non mi serve, tipo:

    se il record e' id 91, vorrei riuscire ad ottenere una stringa ripulita in questo modo:

    Codice PHP:

    (id =  539 AND id_record 91
    mentre, se magari l'id fosse il 78:

    Codice PHP:

    (id 298 AND  id_record 78 OR id 483 AND id_record 78
    Come potrei fare ad effettuare una pulizia di stringa in quel modo li, conoscendo solo il valore di id_record ?

    Grazie

  2. #2
    invece di togliere, costruisci dinamicamente:
    - se id_record = 91 --> stringa sql =....
    - se id_record = 78 --> stringa sql =....
    e così via

  3. #3
    Ciao e grazie per l'interessamento,

    intendi dire a monte dove creo la stringa dinamicamente ?

  4. #4

  5. #5
    Purtroppo, non posso. Devo per forza agire in quella porzione di codice.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, qualche soluzione a valle si potrebbe anche trovare ma, come suggerito da optime, sarebbe più ragionevole costruire opportunamente la stringa a monte.

    Giusto per capire come ci si può muovere, puoi chiarire meglio il contesto e perché non puoi operare preventivamente sulla costruzione di tale stringa?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, qualche soluzione a valle si potrebbe anche trovare ma, come suggerito da optime, sarebbe più ragionevole costruire opportunamente la stringa a monte.

    Giusto per capire come ci si può muovere, puoi chiarire meglio il contesto e perché non puoi operare preventivamente sulla costruzione di tale stringa?

    Buongiorno e grazie,

    ricevo quella stringa da una query di ricerca su un file word che viene salvato nel db, poi la ricerca viene effettuata sul campo testo nel db e vengono recuperati (salvati in altri due campi della tabella) sia l'id del file sia l'id del record associato a quel file.

    Nel momento in cui viene effettuata la ricerca, e nel momento in cui vengono estratti i risultati, devo far visualizzare i record della tabella associati a quel file e nella lista file solamente quelli che contengono la parola chiave ricercata.

    --------------------------------------------------
    RISULATO 1
    FILE ASSOCIATI: 3
    --------------------------------------------------
    RISULTATO 2
    FILE ASSOCIATI: 4
    --------------------------------------------------
    ECC...ECC...

    E i record e sopratutto i file sono davvero molti.
    Preferirei poter lavorare sulla query eliminando quello che non mi serve facendo poi un if e utilizzando per la riga che mi serve la query ripulita.

    Preferirei fare cosi', come posso fare ?

  8. #8
    direi che l'unica è splittare la query usando OR ed eseguire le query risultanti una alla volta

  9. #9
    Quote Originariamente inviata da optime Visualizza il messaggio
    direi che l'unica è splittare la query usando OR ed eseguire le query risultanti una alla volta
    Ciao,

    mi sto muovendo in questa direzione:

    Codice PHP:

    // SPLITTO LA STRINGA 
    $arrayRisultatiFile explode("OR""$queryConRisultatiFileInsTotali");

    // CERCO IL RISULTATO DENTRO ARRAY
    $ArrayFileSplit array_search($results['id'], $arrayRisultatiFile); 
    Purtroppo pero' non mi visualizza nessun risultato.
    Provando, per verifica se e' stato splittato correttamente, provo, per esempio l'indice 0:

    Codice PHP:

    echo $arrayRisultatiFile[0]; 
    E il risultato mi torna correttamente, in quel caso:

    (id = 200 AND id_record = 73

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Come suggerito da optime e come stai provando a fare, puoi slittare per OR poi, da quel che ho provato, potresti filtrare l'array cercando con preg_match per rilevare la presenza di "id_record" con il valore da te stabilito.

    Dopo questi passaggi puoi riassemblare la stringa con gli elementi risultanti. Se poi la stringa iniziale è avvolta da parentesi, e vuoi che sia così anche per quella filtrata, dovrai provvedere a rimuoverle e riapplicarle opportunamente.

    Qui una possibile soluzione:
    Codice PHP:
    $id_record 91;

    $querystr "(id = 292 AND id_record = 77 OR id = 298 AND  id_record = 78 OR id = 483 AND id_record = 78 OR id = 313 AND id_record =  79 OR id = 428 AND id_record = 84 OR id = 444 AND id_record = 86 OR id =  539 AND id_record = 91)";
    $querystr trim($querystr"()");
    $arror explode(" OR "$querystr);
    $arror array_filter($arror, function($str) use ($id_record) {
        return 
    preg_match("/id_record *= *{$id_record}/"$str);
    });
    $querystr "(" implode(" OR "$arror) . ")";

    echo 
    $querystr
    Vedi se può andare, fai sapere
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.