Aide adapter requête SQL en PHP pour piocher dans une base Oracle

    Publicités

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)

Status
Not open for further replies.

Zakky

Nouveau Marchand
Jun 12, 2015
254
20
584
49
Discord
226371705994477568
Salut, je fais ici le sujet car sur Discord c'est compliqué :D

J'ai réussis à établir la connexion avec la base (joie) mais j'arrive pas à formater la requête pour obtenir des trucs j'ai des erreurs dans tous les sens. Alors que sur SQL Dev la requête est niquel.

Voici la requête fonctionnelle sous SQL Dev :

select to_char(sysdate, 'dd/mm/yyyy') as x,
u.pren_usr || ' ' || u.nom_usr as Operateur,
nvl(appel, 0) "Appels ouverts",
nvl(appel2, 0) "Appels clos",
nvl(incident, 0) "Incidents ouverts",
nvl(incident2, 0) "Incidents clos",
nvl(taches, 0) "Tâches closes",
(nvl(appel, 0) + nvl(incident, 0)) as "Total ouverts",
(nvl(appel2, 0) + nvl(incident2, 0) + nvl(taches, 0)) as "Total clos"
from utilisateur u
full join (select nvl(count(*), 0) as appel,
CREATION_OPERATOR as operateur
from csd_call
where to_char(CREATION_DATE, 'dd/mm/yyyy') =
to_char(sysdate, 'dd/mm/yyyy')
group by CREATION_OPERATOR) x1
on x1.operateur = u.code_usr
full join (select count(*) as appel2, bn_user_cre as operateur
from blocnote
where to_char(bn_date_cre, 'dd/mm/yyyy') =
to_char(sysdate, 'dd/mm/yyyy')
and bn_user_cre in
(select code_usr
from utilisateur
where code_dp = '0000000925')
and bn_field = 'CALL_STATE'
and bn_newdes = '1'
group by bn_user_cre) x2
on x2.operateur = u.code_usr
full join (select count(*) as incident, CREATION_OPERATOR as operateur
from csd_incident
where to_char(CREATION_DATE, 'dd/mm/yyyy') =
to_char(sysdate, 'dd/mm/yyyy')
group by CREATION_OPERATOR) x3
on x3.operateur = u.code_usr
full join (select count(*) as incident2, bn_user_cre as operateur
from blocnote
where to_char(bn_date_cre, 'dd/mm/yyyy') =
to_char(sysdate, 'dd/mm/yyyy')
and bn_user_cre in
(select code_usr
from utilisateur
where code_dp = '0000000925')
and bn_field = 'ID_STATE'
and bn_newcode in (11, 19, 25, 74, 112)
group by bn_user_cre) x4
on x4.operateur = u.code_usr
full join (select count(*) as taches, a.INT_CODE_USER as operateur
from bpm_taskinst a
where to_char(DATE_CRE, 'dd/mm/yyyy') =
to_char(sysdate, 'dd/mm/yyyy')
and TSI_STATUT = 3
group by INT_CODE_USER) x5
on x5.operateur = u.code_usr
where (nvl(appel, 0) + nvl(incident, 0) + nvl(appel2, 0) +
nvl(incident2, 0) + nvl(taches, 0)) > 0
and (u.code_dp = '0000000925' or u.code_usr = '0000023374')
and u.code_fct not in ('0000000005', '0000000006')
order by x, operateur

Et voici mon PHP actuel, fonctionnel mais que je n'arrive pas à faire évoluer avec cette requête donc :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>statistiques</title>
<script src=".\js\jquery-ui-1.12.1\external/jquery/jquery.js"></script>
<script src=".\js\jquery-ui-1.12.1\jquery-ui.js"></script>
<link href=".\js\jquery-ui-1.12.1\jquery-ui.css" rel="stylesheet">
<link href=".\css\style.css" rel="stylesheet">
</head>
<body>
<?php
// echo"\n<body>\n";
// Connexion au service XE (i.e. la base de données)
$conn = oci_connect('JEVOUSMONTREPASLID', 'NILEMOTDEPASSEBANDEDEFILOUS', 'NILELIENDELABASENONMAISDITDONC');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
/*
SELECT [DISTINCT ou ALL] * ou liste de colonnes
FROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnes
*/
$stid = oci_parse($conn, 'SELECT ID_STATE FROM csd_incident'); //all_objects (qui liste tous les objets, pas que les tables) - all_tables (toutes les tables, même systèmes) - all_tab_columns (toutes les colonnes de toutes les tables) - et en remplaçant 'all' par 'user', on voit les objets de l'utilisateur.
oci_execute($stid);
echo "<table border='2'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo "<td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
// echo"\n</body>\n\n";
// phpinfo();
?>
<!-- SCRIPTS ICI -->
<script src=".\js\scriptsjquery.js"></script>
<!-- SCRIPTS ICI -->
</body>
</html>

J'ai tout de configuré via Wamp 3.1.9.
PHP : 7.3.5

Donc l'idée c'est de virer ma requête test qui fonctionne et mettre la grosse du début à la place.

Merci de votre aide !

-Zakky

PS : Les couleurs du code en PJ
 

Attachments

  • capture_429.png
    capture_429.png
    79.4 KB · Views: 6
  • capture_430.png
    capture_430.png
    42.8 KB · Views: 7
  • capture_431.png
    capture_431.png
    9.3 KB · Views: 6

Misuki

Git Wizard en freelance
V
Ancien staff
Jun 15, 2012
2,303
66
954
Hello,

peux-tu être plus précis sur les différentes erreurs que tu obtiens ?

Je te conseil de construire ta méga-requête pas à pas, parce qu'elle est quand même vachement grande donc le débogage risque d'être difficile.
Commence par afficher u.pren_usr || ' ' || u.nom_usr de ta table utilisateur.
Puis construit ton full join appel.

Une fois réussi, tu devrais normalement avoir toutes les syntaxes qu'il te faut pour construire le reste de ta requête (mais toujours en suivant le pas à pas).
 

Zakky

Nouveau Marchand
Jun 12, 2015
254
20
584
49
Discord
226371705994477568
J'ai trouvé en remplaçant les "'" par des "\'".
Maintenant faut que je trouve comment faire un css qui soit interprété en PHP....
 
Status
Not open for further replies.