Page 1 sur 2

[Corrigé 3.1.28] création d'un nouveau ticket par admin/tech

Posté : lun. 4 déc. 2017 11:56
par FJU
Bonjour,

J'étais surpris de ne pas pouvoir créer de ticket par un profil admin ou technicien, en activant le mode debug j'ai l'erreur suivante :
gestsup-bugsqlnvxticketadmin.JPG
gestsup-bugsqlnvxticketadmin.JPG (64.54 Kio) Vu 12206 fois

J'ai ouvert le fichier ticket.php, ligne 316 il n'y a rien d'évident qui me saute aux yeux.
J'ai retapé la requête en question dans phpmyadmin, je n'ai pas d'erreur :

Code : Tout sélectionner

SELECT name FROM tservices WHERE id IN (SELECT service_id FROM tusers_services WHERE user_id=1) AND disable=0 
Cordialement,

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:05
par Flox
Bonjour,

pouvez-vous tester de modifier le fichier ./ticket.php

remplacer:

Code : Tout sélectionner

$query2=$db->query("SELECT name FROM tservices WHERE id IN (SELECT service_id FROM tusers_services WHERE user_id=$row[id]) AND disable=0");
par

Code : Tout sélectionner

$query2=$db->query("SELECT name FROM tservices,tusers_services WHERE tservices.id=tusers_services.service_id AND tusers_services.user_id=$row[id] AND tservices.disable=0");

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:12
par FJU
Bonjour,


Merci pour la réponse rapide, j'ai toujours la même erreur (ligne 318 car je n'ai pas supprimé mais commenté la ligne 316).

Code : Tout sélectionner

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND tservices.disable=0' at line 1 in /var/www/gestsup/ticket.php:318 Stack trace: #0 /var/www/gestsup/ticket.php(318): PDO->query('SELECT name FRO...') #1 /var/www/gestsup/index.php(879): include('/var/www/gestsu...') #2 {main} thrown in /var/www/gestsup/ticket.php on line 318
La même requête exécutée dans phpmyadmin ne pose pas de soucis

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:20
par FJU
Précision, le problème survient pour les utilisateurs ayant un profil supérieur ou égal à Superviseur.

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:32
par Flox
pouvez tester cette nouvelle modification:

remplacer:

Code : Tout sélectionner

$query2=$db->query("SELECT name FROM tservices,tusers_services WHERE tservices.id=tusers_services.service_id AND tusers_services.user_id=$row[id] AND tservices.disable=0");
while ($row2=$query2->fetch()){$service_name.=$row2['name'].' ';}
$query2->closeCursor();
if($service_name){echo '&nbsp;&nbsp;&nbsp;<i title="'.T_('Service').'" class="icon-group blue bigger-120"></i> '.$service_name;}


par

Code : Tout sélectionner

if($row['id'])
{
	$query2=$db->query("SELECT name FROM tservices,tusers_services WHERE tservices.id=tusers_services.service_id AND tusers_services.user_id=$row[id] AND tservices.disable=0");
	while ($row2=$query2->fetch()){$service_name.=$row2['name'].' ';}
	$query2->closeCursor();
	if($service_name){echo '&nbsp;&nbsp;&nbsp;<i title="'.T_('Service').'" class="icon-group blue bigger-120"></i> '.$service_name;}
}

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:49
par FJU
A priori ça fonctionne, merci beaucoup.

Par contre je ne sais ni si c'est normal ni si c'est lié mais le champ Demandeur affiche "admin" par défaut alors que je suis connecté sous l'user "Fju", profil technicien. Il faut donc que je le change manuellement.
Pour les utilisateurs pas de soucis, le ticket est bien ouvert à leur nom.

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 12:52
par Flox
pouvez vous vérifier en base de données dans la table tusers que vous avez bien un utilisateur ayant l'identifiant "Aucun" avec l'id "0" ?

Cdt

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 13:01
par FJU
Je n'avais pas d'user id=0, je ne me rappelle avoir touché la table tusers.

Je l'ai créé, ça n'affecte pas le demandeur par défaut lors de la création d'un ticket, j'ai toujours admin proposé par défaut.

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 13:02
par Flox
Pouvez vous me transmettre en MP un dump de votre table tusers ?

Re: Erreur SQL à la création d'un nouveau ticket par admin/t

Posté : lun. 4 déc. 2017 13:52
par Flox
passer la requête suivante vis PMA:

Code : Tout sélectionner

UPDATE tusers SET lastname='Aucun',disable='1' WHERE id='0';