Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225

    in_array() - mi trova solo il primo

    Salve a tutti,

    sono costretto a chiedere aiuto sul forum per risolvere questa stranezza.
    Codice PHP:

    $query  
    "SELECT * FROM magazzino WHERE codart = '".$_GET['codart']."'";
        
    $result2 mysql_query($query) or die('Error, query failedd');
                
        while(
    $rowart mysql_fetch_array($result2)) { 
                
    $art_nserie$rowart['sernum'] ;
                
    $item2add=  unisci_sn($art_nserie);  
                
    $totsn array_merge($totsn,$item2add);   //si uniscono poi tutti gli array restituiti per ottenere tutti i serialnumber dentro un unico array

        
    };
        
    if (!isset(
    $_SESSION['totsn']) ) {$_SESSION['totsn'] = $totsn;};

    $xx in_array($_GET['sn'],$_SESSION['totsn']);

    print 
    $xx."
    "
    ;

    if (
    $xx == true) { echo "true"; } else { echo "false"; } 
    Lo script unisce tutti i serial number di ogni articolo trovato in un unico array , dopo di che la funzione in_array(), mi dovrebbe trovare il seriale passato tramite GET (es. ?codart=C3456A&sn=B573065&oper=chksn)

    il bello è che questo script funziona l'ho usato anche su un altra pagina e funziona regolarmente, non capisco perche in questo caso mi TROVA SOLO IL PRIMO RECORD

    Codice PHP:
    function unisci_sn($nserie)
    {
        
    $arr_sn=explode("\r" ,$nserie);
        
    $sn = array();
        
    $lung count($arr_sn);
        
                for (
    $cont=0$cont $lung$cont++) {
                
                    if (
    strlen($arr_sn[$cont])==0){unset($arr_sn[$cont]); } else { array_push($sn$arr_sn[$cont]);}
                    
        }    
        return 
    $sn;

    }; 
    SESSION_totsn:
    Array ( [0] => B573065 [1] => B466825 [2] => B150156 [3] => B107866)

    se provo cercare B466825 , B150156 , B107866 in_array è FALSE

    se invece cerco B573065 in_array è TRUE
    qualcuno mi puo aiutare a risolvere ??

    GRAZIE A TUTTI
    SAT

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    up

  3. #3
    A me funziona perfettamente:

    Codice PHP:
    <?php 
    $_SESSION
    ['totsn'] = array('B573065''B466825''B150156''B107866');

    if (
    in_array('B466825'$_SESSION['totsn'])) {
        echo(
    'B466825 found!
    '
    );
    }

    if (
    in_array('B150156'$_SESSION['totsn'])) {
        echo(
    'B150156 found!
    '
    );
    }

    if (
    in_array('B107866'$_SESSION['totsn'])) {
        echo(
    'B107866 found!
    '
    );
    }

    if (
    in_array('B573065'$_SESSION['totsn'])) {
        echo(
    'B573065 found!
    '
    );
    }
    ?>
    Sei sicuro che i valori siano inseriti correttamente all'interno dell'array (es. non è che ci sono degli spazi prima o dopo)?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    uso trim() prima di in_array(), quindi il problema spazi dovrebbere essere scongiurato.....

    incollo tutto il codice php compreso javascript che praticamente esegue CHKSN passandogli i valori per la ra ricerca

    Codice PHP:
    $db mysql_connect($db_host$db_user$db_password);

    #Controlli fase di connessione al database
    if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    #seleziona barcode o codice
    if (strlen($_GET['txt_codice']) > 1
            { 
    $sel_cod "codart = '".$_GET['txt_codice']."'"; } 
        elseif (
    strlen($_POST['txt_barcode']) > 1
            { 
    $sel_cod "barcode = '".$_GET['txt_barcode']."'"; }

    if (isset(
    $sel_cod) ) {

            
    $query  "SELECT * FROM magazzino WHERE $sel_cod AND sernum LIKE '%".trim($_GET['txt_seriale'])."%' ";
            
    $result mysql_query($query) or die('Error, query failed');

    } elseif (isset(
    $_GET['codart']) ) {

            
    $query  "SELECT * FROM magazzino WHERE codart = '".$_GET['codart']."'";
            
    $result mysql_query($query) or die('Error, query failedd');

    };


    if (!isset(
    $totsn)) { $totsn= array(); }  //creo l' array dei numeri di serie relativi al codice selezionato


    if ($_GET['oper'] == "chksn") {
    $query2  "SELECT * FROM magazzino WHERE codart = '".$_GET['codart']."'";
        
    $result2 mysql_query($query2) or die('Error, query failedd');
                
        while(
    $rowart mysql_fetch_array($result2)) { 
                
    $art_idart$rowart['idart'] ;
                
    $art_nserie$rowart['sernum'] ;
                
    $item2add=  unisci_sn($art_nserie);  // vengono separati i SN di ogni articolo e inseriti tutti in un unico array
                
    $totsn array_merge($totsn,$item2add);   //si uniscono poi tutti gli array restituiti dalla funzione unisci_sn

        
    };
        
    if (!isset(
    $_SESSION['totsn']) ) {$_SESSION['totsn'] = $totsn;}; 

    $aa trim($_GET['sn']);
    $xx in_array("$aa",$_SESSION['totsn']);

    print 
    $xx."
    "
    ;

    if (
    $xx == true) { echo "true"; } else { echo "false"; }

                                
    } ;

            
    print_r($_SESSION['totsn']);
            echo 
    "
    "
    ;
            
    //print_r($_SESSION['scaricoSN']);
            
    mysql_close();
    ?>

    <script type="text/javascript" language="JavaScript">
    function chk_art(idcod) {
        var codart = document.getElementById("txt_codart_"+idcod).value; 
        var qta = document.getElementById("txt_qta_"+idcod).value;
        var myform = document.getElementById(idcod);
        myform.action ='test.php?codart='+codart+'&qta='+qta+'&oper=sell';
        return true;


    function chk_sn(idcod) {
        var codart = document.getElementById("txt_codart_"+idcod).value; 
        var seriale = document.getElementById("txt_sn_"+idcod).value;
        var seriale = trim(seriale);
        var myform = document.getElementById(idcod);
        myform.action ='test.php?codart='+codart+'&sn='+seriale+'&oper=chksn'; 
    return true;
    }

    </SCRIPT> 
    Anche a me se provo ad usare in_array() in un altro contesto funziona, solo che è qui che non va ....
    la variabile $_SESSION['totsn'] si riempie correttamente con tutti i SN trovati per ogni articolo di magazzino con codice $_GET['codart'] quindi vedo il contenuto di tutti i seriali e coincide con le quantità. (passato attraverso le funzioni javascript)
    Ora non vedo dove sta il problema, visto che l' array $_SESSION['totsn'] contiene giustamente il tutto, cercare un item dentro l'array con in_array().

    Ma vi assicuro che non mi funziona !!!

    GRAZIE

  5. #5
    uso trim() prima di in_array()
    Mi riferivo ai valori all'interno dell'array.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    non so come ringraziarti !!!

    mi cancava il trim() dentro alla funzione unisci_sn()


    GRAZIEEEEEEEE !!!!!!!!!!!!!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.