• Super User

    Query per una textarea

    Salve ragazzi...non so come realizzare una query così strutturata:

    1. ho un form con una textarea;
    2. all'interno di questa metto delle parole, una per ogni riga
    3. devo far in modo da leggere ciascuna riga e confrontarla con una tabella del db per verificare se già esiste o meno...
      Come fare?

    Supponiamo che faccio la query che legge tutti i campi presente nella tabella desiderata,
    facci un mysql_fech_array, metto un while e scansione elemento per elemento...

    Ma come faccio a leggere i campi della textarea riga per riga e a far il confronto?

    Grazie!


  • User

    Ciao felino, potresti usare un separatore per capire le righe ad esempio una virgola, ogni virgola è una riga, quado mandi il modulo del textarea fai un explode("," , $stringa) e dividi la stringa, dopo di che procedi con l'analisi...


  • Super User

    Ho fatto il seguente codice:

    
    $elenco = array();
    $row=explode("\n", $_POST['textarea']); 
        
        foreach($row as $ciccio){
            $value = trim($ciccio);    
            $elenco[$value] = '' . $value . '';
    }
    
    

    Ma come faccio a scorrere il contenuto di $elenco?


  • ModSenior

    Puoi usare foreach, ma non fai prima a fare le operazioni direttamente li senza metterli un altro array?


  • User

    Prova cosi:
    [php]
    $array=explode("\n",$_POST['textarea']);

    while($row=mysql_fetch_array($query))
    {
    foreach($array as $row['campo'] )
    {
    // istruzioni da iterare
    }
    }
    [/php]


  • Super User

    Ma se scrivo questa istruzione:

    [php]foreach($array as $row['campo'] )[/php]

    io sto solo associando il valore i-esimo dell'array a $row['campo'] no?

    Oppure sto facendo un confronto?


  • User

    Ciai ragione scusa!, allora fai un seplice ciclo for al interno del while e con il contatore ti sposti l'indice della variabile $array, metti un if per vedere se sono uguale ed il gioco è fatto!!!


  • Super User

    Ragazzi..diciamo che ho quasi risolto, ma qualcosina ancora non va:
    se inserisco come prima voce un campo che e' già presente nel database mi dice che c'è ed è ok!
    Ma se inserisco 2 voci già presenti nel database, per la prima mi dice che c'è, mentre la seconda non riesce a trovarla?!?!

    Praticamente la query la faccio direttamente con il campo che ho inserito nella textarea,
    vi posto il codice:

    [PHP]
    $elenco = array();
    $array=explode(chr(13),$_POST['textarea']);

    foreach($array as $row['campo'] ) {

    $campo=$row['campo'];
    echo "- ".$campo."<br>";
    $query= mysql_query("SELECT email FROM email WHERE email='$campo' ");
    $email=mysql_fetch_array($query);
    if($email[0]!=""){
    } else {
    echo $row['campo']." non c'è;<br>";
    }

    unset($campo);
    unset($query);
    unset($email);
    }
    [/PHP]

    Grazie!


  • Super User

    Ho capito ove sta il problema ma non so come risolverlo:

    $array=explode(chr(13),$_POST['textarea']);
    nel chr(13), stesso problema se metto "<br>" oppure "\n".

    ed inserisco i campi nella textarea come:
    nome1
    nome2
    nome3

    se invece metto:
    $array=explode(";",$_POST['textarea']);
    ed inserisco nella textarea:
    nome1;nome2;nome3;
    funzia il tutto correttamente...

    come risolvere?


  • ModSenior

    Prova cosi:
    [php]
    $array=explode("\r\n",$_POST['textarea']);
    [/php]


  • Super User

    Ragazzi...davvero un grazie a tutti voi, grazie ai vostri piccoli suggerimenti ci sono riusciti.

    Posto il codice nel caso possa servire anche a qualcun'altro:
    [PHP]
    $elenco = array();
    $array=explode("\r\n",$_POST['textarea']);

    $count=0;

    foreach($array as $row['campo'] ) {

    $campo=$row['campo'];
    $query= mysql_query("SELECT email FROM email WHERE email='$campo' ");
    $email=mysql_fetch_array($query);
    //echo $email[0]."+++++++++++++<br>";
    if($email[0]!=""){
    } else {
    echo $row['campo']."; ";
    $a=mysql_query("INSERT INTO email (email) VALUES("$campo")") or die (mysql_error());
    $count=$count+1;
    }

    unset($campo);
    unset($query);
    unset($email);
    }
    [/PHP]

    Felino!