- Home
- Categorie
- Coding e Sistemistica
- PHP
- Campo ricerca non funzionante bene per gruppo utente
-
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
-
@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.
AlfonsoInnanzitutto 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>
-
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
-
@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.
AlfonsoAdesso non mi cerca piu' niente. Non capisco proprio quale sia il problema.
-
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]
-
@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.
-
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.
-
@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.
-
Ok, prova a stampare la query (quindi echo $query) anziché solo prova, così vediamo se c'è qualche errore nella query
-
@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.
-
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
-
@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!! (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!!