• User

    Campo ricerca non funzionante bene per gruppo utente

    Ciao ragazzi, ho un problema nella pagina di ricerca degli articoli per soli utenti... Non so se il campo ricerca sia fatto bene ma ci sto provando a migliorare 😄
    Comunque come admin la ricerca funziona perfettamente, ma da utente no!
    Lascio qui il codice dell'estrazione dal db:

    if ($gruppo=="admin") {
                    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
                    $ris = mysql_query($query);
                } else {
                    $query = "SELECT * FROM articolo WHERE username='$_SESSION[username]' AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
                    $ris = mysql_query($query);
                }
    

    L'estrazione funziona ma è la ricerca da non admin che mi ricerca sia gli articoli dell'utente desiderato e sia degli altri. (E' un gestionale con utenti, deve ricercare solo gli articoli di quell'utente che sta effettuando la ricerca)


  • User

    Vista così non è che ti possiamo dire molto.
    Proprio sforzandosi mi vengono a mente due domande:

    in $gruppo c'è effettivamente la distizione fra admin e non admin (può darsi che non venga aggiornata la distinzione o simili
    in $_SESSION['username'] c'è effettivamente ciò che vuoi cercare?

    Se possibile integra un po' di codice in più, così potremo dirti meglio.
    Alfonso


  • User

    @icefoxsoftware said:

    Vista così non è che ti possiamo dire molto.
    Proprio sforzandosi mi vengono a mente due domande:

    in $gruppo c'è effettivamente la distizione fra admin e non admin (può darsi che non venga aggiornata la distinzione o simili
    in $_SESSION['username'] c'è effettivamente ciò che vuoi cercare?

    Se possibile integra un po' di codice in più, così potremo dirti meglio.
    Alfonso

    Innanzitutto ti ringrazio per avermi risposto.
    Posto tutta la pagina magari ti fa capire meglio. Non credo di aver fatto un buon codice per la ricerca, ma ci sto provando a migliorarlo 😄
    Ecco il codice:

    
    <?php
    session_start();
    include("config.php");
    include("top.php");
    $connessione = mysql_connect($host, $user, $pass);
    $select_db = mysql_select_db($db);
    $gruppo = $_SESSION['gruppo'];
    ?>
    <?php
    $_SESSION['page'] = $_SERVER['REQUEST_URI'];
    if (isset($_SESSION['username'])) {?>
    <center><form action="#" method="GET">
        <input type="text" name="search" size="40" autofocus />
        <input type="submit" value="Cerca" name="cerca" />
        <input type="button" value="+" name="add" onclick="javascript:location.href = 'add.php'"><br>
    </form></center>
    <?php
        if (isset($_GET['cerca'])) {
            $parola = $_GET['search'];
            $link = $_SERVER['REQUEST_URI'];
            if (!isset($_GET['stato'])) {
                if ($gruppo=="admin") {
                    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
                    $ris = mysql_query($query);
                } else {
                    $query = "SELECT * FROM articolo WHERE username='$_SESSION[username]' AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
                    $ris = mysql_query($query);
                }
            ?>
                <center><table border="1">
                    <tr>
                    <th>N°</th>
                    <th>Nome/Rag. Sociale</th>
                    <th>Telefono</th>
                    <th>Articolo</th>
                    <th><a href="<?php echo $link . '&stato=1'; ?>">Stato</a></th>
                    <th>Cons.</th>
                    <th>Operazioni</th>
                    </tr>
            <?php         while ($row = mysql_fetch_array($ris, MYSQL_ASSOC)) { ?>
                    <tr>
                    <td><?php echo $row['id']; ?></td>
                    <td><?php echo $row['nome'] . " " . $row['cognome']; ?></td>
                    <td><?php echo $row['tel']; ?></td>
                    <td><?php echo $row['articolo']; ?></td>
                    <?php
                        if ($row['riparato']=="Si") { echo "<td style='background-color:green'></td>"; } 
                        if ($row['riparato']=="No") { echo "<td style='background-color:red'></td>"; }
                        if ($row['riparato']=="Sn") { echo "<td style='background-color:orange'></td>"; }
                    ?>
                    <td><center><?php
                        if ($row['cons']=="Si") { echo "<img alt='Consegnato' src='/images/stato/consegnato.png' width='20' height='20'>"; } 
                        if ($row['cons']=="No") { echo "<img alt='Non consegnato' src='/images/stato/noconsegnato.png' width='20' height='20'>"; }
                    ?></center></td>
                    <td><center><input type="button" onclick="Popup('/functions/dettagli.php?id=<?php echo $row[id]; ?>')" value="Dettagli"><?php if ($gruppo=="admin") {?> | <input type="button" onclick="javascript:location.href = 'functions/delete.php?id=<?php echo $row['id']; ?>'" value="Elimina"> | <input type="button" onclick="javascript:location.href = '/functions/edit.php?id=<?php echo $row[id]; ?>'" value="Modifica"><?php } ?></center></td>
                    </tr></center>
            <?php         } 
            } else {
                if ($gruppo=="admin") {
                    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' ORDER BY riparato";
                    $ris = mysql_query($query);
                } else {
                    $query = "SELECT * FROM articolo WHERE username='$_SESSION[username]' AND articolo LIKE '%$parola' ORDER BY riparato";
                    $ris = mysql_query($query);
                }
            ?>
                <center><table border="1">
                    <tr>
                    <th>N°</th>
                    <th>Nome/Rag. Sociale</th>
                    <th>Telefono</th>
                    <th>Articolo</th>
                    <th><a href="<?php echo $link; ?>">Stato</a></th>
                    <th>Cons.</th>
                    <th>Operazioni</th>
                    </tr>
            <?php         while ($row = mysql_fetch_array($ris, MYSQL_ASSOC)) { ?>
                    <tr>
                    <td><?php echo $row['id']; ?></td>
                    <td><?php echo $row['nome'] . " " . $row['cognome']; ?></td>
                    <td><?php echo $row['tel']; ?></td>
                    <td><?php echo $row['articolo']; ?></td>
                    <?php
                        if ($row['riparato']=="Si") { echo "<td style='background-color:green'></td>"; } 
                        if ($row['riparato']=="No") { echo "<td style='background-color:red'></td>"; }
                        if ($row['riparato']=="Sn") { echo "<td style='background-color:orange'></td>"; }
                    ?>
                    <td><center><?php
                        if ($row['cons']=="Si") { echo "<img alt='Consegnato' src='/images/stato/consegnato.png' width='20' height='20'>"; } 
                        if ($row['cons']=="No") { echo "<img alt='Non consegnato' src='/images/stato/noconsegnato.png' width='20' height='20'>"; }
                    ?></center></td>
                    <td><center><input type="button" onclick="Popup('/functions/dettagli.php?id=<?php echo $row[id]; ?>')" value="Dettagli"><?php if ($gruppo=="admin") {?> | <input type="button" onclick="javascript:location.href = 'functions/delete.php?id=<?php echo $row['id']; ?>'" value="Elimina"> | <input type="button" onclick="javascript:location.href = '/functions/edit.php?id=<?php echo $row[id]; ?>'" value="Modifica"><?php } ?></center></td>
                    </tr>
            <?php         } 
            } ?>
            </table></center>    
    <?php    } 
    } else { header("Location: login.php"); }
    ?>
    </body>
    </html>
    
    

  • User

    Di niente, figurati.
    Allora, purtroppo da così non si vede molto.
    Prova a cambiare il tuo if in questo modo:

    [php]
    // inoltre qui accertati che gruppo sia effettivamente admin o altro mettendo una echo.
    if ($gruppo=="admin") {
    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    } else {
    $query = "SELECT * FROM articolo WHERE username=".$_SESSION['username']." AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    }
    [/php]

    Prova e fammi sapere, soprattutto, quando sei utente che gruppo ti da.
    Alfonso


  • User

    @icefoxsoftware said:

    Di niente, figurati.
    Allora, purtroppo da così non si vede molto.
    Prova a cambiare il tuo if in questo modo:

    [php]
    // inoltre qui accertati che gruppo sia effettivamente admin o altro mettendo una echo.
    if ($gruppo=="admin") {
    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    } else {
    $query = "SELECT * FROM articolo WHERE username=".$_SESSION['username']." AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    }
    [/php]

    Prova e fammi sapere, soprattutto, quando sei utente che gruppo ti da.
    Alfonso

    Adesso non mi cerca piu' niente. Non capisco proprio quale sia il problema.


  • User

    Ma hai provato a mettere una echo dove ti ho detto? Che gruppo ti da quando non sei admin?

    Edit. Sorry ho mancato una virgoletta...

    [php]
    // inoltre qui accertati che gruppo sia effettivamente admin o altro mettendo una echo.
    if ($gruppo=="admin") {
    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    } else {
    $query = "SELECT * FROM articolo WHERE username='".$_SESSION['username']."' AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    }
    [/php]


  • User

    @icefoxsoftware said:

    Ma hai provato a mettere una echo dove ti ho detto? Che gruppo ti da quando non sei admin?

    Edit. Sorry ho mancato una virgoletta...

    [php]
    // inoltre qui accertati che gruppo sia effettivamente admin o altro mettendo una echo.
    if ($gruppo=="admin") {
    $query = "SELECT * FROM articolo WHERE nome LIKE '%$parola%' or cognome LIKE '%$parola%' or articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    } else {
    $query = "SELECT * FROM articolo WHERE username='".$_SESSION['username']."' AND articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'";
    $ris = mysql_query($query);
    }
    [/php]

    Si ho provato ora a metto echo $gruppo; e mi dà "client" quindi funziona. Il problema è sempre quello, da client se cerco qualcosa mi cerca anche quello degli altri "client" del db.


  • User

    Uhm, mi sembra strano. Fai un'altra prova: assicurati che entra nell'else quando sei client. 😉 Metti una echo dopo aver definito la query, e magari ci stampi il risultato, così per capire.


  • User

    @icefoxsoftware said:

    Uhm, mi sembra strano. Fai un'altra prova: assicurati che entra nell'else quando sei client. 😉 Metti una echo dopo aver definito la query, e magari ci stampi il risultato, così per capire.

    Si entra nell'else, ho messo echo "prova"; dopo la query e funziona.


  • User

    Ok, prova a stampare la query (quindi echo $query) anziché solo prova, così vediamo se c'è qualche errore nella query 😉


  • User

    @icefoxsoftware said:

    Ok, prova a stampare la query (quindi echo $query) anziché solo prova, così vediamo se c'è qualche errore nella query 😉

    ecco:

    
    SELECT * FROM articolo WHERE username='nomeutente' AND articolo LIKE '%%' or nserie LIKE '%%' or guasto LIKE '%%' or intervento LIKE '%%' or note LIKE '%%'
    
    

    Nel campo ricerca non c'è niente e mi ricerca tutto il db quindi non capisco dov'è l'errore. "nomeutente" è l'utente client da cui ho effettuato l'accesso.


  • User

    Ecco 😄 mi sfuggiva il fatto che non facevi l'AND per tutte le condizioni ma, senza le parentesi, facevi la AND solo con la espressione successiva.
    Prova ora con la query così modificata.

    [php]

                $query = "SELECT * FROM articolo WHERE username='".$_SESSION['username']."' AND (articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'");
                $ris = mysql_query($query);
    

    [/php]

    Alfonso


  • User

    @icefoxsoftware said:

    Ecco 😄 mi sfuggiva il fatto che non facevi l'AND per tutte le condizioni ma, senza le parentesi, facevi la AND solo con la espressione successiva.
    Prova ora con la query così modificata.

    [php]

                $query = "SELECT * FROM articolo WHERE username='".$_SESSION['username']."' AND (articolo LIKE '%$parola%' or nserie LIKE '%$parola%' or guasto LIKE '%$parola%' or intervento LIKE '%$parola%' or note LIKE '%$parola%'");
                $ris = mysql_query($query);
    

    [/php]

    Alfonso

    Che idiota!! :arrabbiato: (io ovviamente xD)........pensavo di averlo provato così e invece............ ORA FUNZIONA, TI RINGRAZIO!!

    EDIT: ehm, comunque è LIKE %$parola%')"; , è giusto per dirtelo...ma ti ringrazio ancora!! 😄