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

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
FJU
Gsup LEVEL 1
Messages : 24
Enregistré le : mer. 22 nov. 2017 11:56

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 10742 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,
Modifié en dernier par FJU le lun. 4 déc. 2017 12:08, modifié 1 fois.
Gestsup 3.1.28 | Debian 9 - Apache 2 - MariaDB 10 - Php 7
Avatar du membre
Flox
Administrateur du site
Messages : 9090
Enregistré le : jeu. 21 juin 2012 19:00

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");
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.3.2 | PHP: 8.3.7 | https://doc.gestsup.fr/
FJU
Gsup LEVEL 1
Messages : 24
Enregistré le : mer. 22 nov. 2017 11:56

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
Gestsup 3.1.28 | Debian 9 - Apache 2 - MariaDB 10 - Php 7
FJU
Gsup LEVEL 1
Messages : 24
Enregistré le : mer. 22 nov. 2017 11:56

Précision, le problème survient pour les utilisateurs ayant un profil supérieur ou égal à Superviseur.
Gestsup 3.1.28 | Debian 9 - Apache 2 - MariaDB 10 - Php 7
Avatar du membre
Flox
Administrateur du site
Messages : 9090
Enregistré le : jeu. 21 juin 2012 19:00

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;}
}
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.3.2 | PHP: 8.3.7 | https://doc.gestsup.fr/
FJU
Gsup LEVEL 1
Messages : 24
Enregistré le : mer. 22 nov. 2017 11:56

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.
Gestsup 3.1.28 | Debian 9 - Apache 2 - MariaDB 10 - Php 7
Avatar du membre
Flox
Administrateur du site
Messages : 9090
Enregistré le : jeu. 21 juin 2012 19:00

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
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.3.2 | PHP: 8.3.7 | https://doc.gestsup.fr/
FJU
Gsup LEVEL 1
Messages : 24
Enregistré le : mer. 22 nov. 2017 11:56

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.
Gestsup 3.1.28 | Debian 9 - Apache 2 - MariaDB 10 - Php 7
Avatar du membre
Flox
Administrateur du site
Messages : 9090
Enregistré le : jeu. 21 juin 2012 19:00

Pouvez vous me transmettre en MP un dump de votre table tusers ?
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.3.2 | PHP: 8.3.7 | https://doc.gestsup.fr/
Avatar du membre
Flox
Administrateur du site
Messages : 9090
Enregistré le : jeu. 21 juin 2012 19:00

passer la requête suivante vis PMA:

Code : Tout sélectionner

UPDATE tusers SET lastname='Aucun',disable='1' WHERE id='0';
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.3.2 | PHP: 8.3.7 | https://doc.gestsup.fr/
Répondre