PHP et lignes de commande pour ouverture SAGE
Modérateurs: Super-Apogea, Super Modérateur
14 messages
|Page 1 sur 1
PHP et lignes de commande pour ouverture SAGE
Bonjour à tous,
J'utilise la version SQL de SAGE Ligne 100 (version 16.05) et j'ai une appli en php qui va me faire un select dans la BDD.
Par un script, je fais une recherche sur les documents de vente et celui-ci m'affiche une liste.
Je voudrais avoir un bouton en face de chaque ligne correspondant à un doc de vente. Et ce bouton m'ouvrirait directement la commande correspondante dans Sage.
Seulement entre les caractères à échapper en PHP + ceux à échapper via SAGE, je m'en sors plus.
Quelqu'un a t-il déjà ouvert une commande ou un client via un script PHP et pourrait me donner qques pistes ?
Ci-après ma requête d'affichage :
Le script ne m'affiche plus le résultat de recherche et me donne l'erreur suivante :
[12:45:28,366] POST http://10.100.100.6/outils/fetes/ajax/recherche.php [HTTP/1.0 500 Internal Server Error 3ms]
J'utilise la version SQL de SAGE Ligne 100 (version 16.05) et j'ai une appli en php qui va me faire un select dans la BDD.
Par un script, je fais une recherche sur les documents de vente et celui-ci m'affiche une liste.
Je voudrais avoir un bouton en face de chaque ligne correspondant à un doc de vente. Et ce bouton m'ouvrirait directement la commande correspondante dans Sage.
Seulement entre les caractères à échapper en PHP + ceux à échapper via SAGE, je m'en sors plus.
Quelqu'un a t-il déjà ouvert une commande ou un client via un script PHP et pourrait me donner qques pistes ?
Ci-après ma requête d'affichage :
- Code: Tout sélectionner
$display = '<table id = "recherche">
<tr><th>N° Commande</th><th>Reference</th><th>Nom Client</th><th>Adresse 1</th><th>Adresse 2</th><th>Code Postal</th><th>Ville</th><th>Téléphone</th><th>Date Livraison</th></tr>' ;
while ($tab_req = odbc_fetch_array($req_req))
{
$tab_req['Ad1']=utf8_encode($tab_req['Ad1']);
$display .= '<tr><td>'.$tab_req['DO_Piece'].'</td><td>'.$tab_req['DO_Ref'].'</td><td>'.$tab_req['Nom'].'</td><td>'.$tab_req['Ad1'].'</td><td>'.$tab_req['Ad2'].'</td><td>'.$tab_req['Code_Postal'].'</td>
<td>'.$tab_req['Ville'].'</td><td>'.$tab_req['Tel_Livraison'].'</td><td>'.$tab_req['DO_DateLivr'].'</td><td class = "bouton">'exec(C:\>"C:\Program Files (x86)\GecoMaes\GecoMaes.exe" "S:\BD_GESTION.gcm" -cmd=Document.Show(Type=BonCommandeClient, Piece=\''.$tab_req['DO_Piece'].'\'))'<img src = "img/valider.png"></td></tr>' ;
}
echo $display ;
Le script ne m'affiche plus le résultat de recherche et me donne l'erreur suivante :
[12:45:28,366] POST http://10.100.100.6/outils/fetes/ajax/recherche.php [HTTP/1.0 500 Internal Server Error 3ms]
Dernière édition par cirylBD28 le Sam 14 Déc 2013 12:35, édité 1 fois.
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bonjour,
J'ai tendance à préparer ma commande destinée au shell par petits bouts :
* l'exécutable (en prenant en compte l'environnement coté client (X86 ou x64 ou installation genre H:\MesProgs\MonSage\Maestria.exe))
* l'emplacement de la base
* la gestion des users password (si pas de password, ne pas le rajouter, peut-être, dans la commande)
* la construction des arguments de la commande
* assemblage de la commande (-cmd)
* assemblage de l'ensemble de la ligne à passer au shell
(ouais, c'est un peu long, mais on sait ou on met les pieds).
Une fois la chaine construite, rien n’empêche de l'intercepter et de la coller dans un batch quelconque ou de l'exécuter pour voir comment ça réagit.
Cordialement,
J'ai tendance à préparer ma commande destinée au shell par petits bouts :
* l'exécutable (en prenant en compte l'environnement coté client (X86 ou x64 ou installation genre H:\MesProgs\MonSage\Maestria.exe))
* l'emplacement de la base
* la gestion des users password (si pas de password, ne pas le rajouter, peut-être, dans la commande)
* la construction des arguments de la commande
* assemblage de la commande (-cmd)
* assemblage de l'ensemble de la ligne à passer au shell
(ouais, c'est un peu long, mais on sait ou on met les pieds).
Une fois la chaine construite, rien n’empêche de l'intercepter et de la coller dans un batch quelconque ou de l'exécuter pour voir comment ça réagit.
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: PHP et lignes de commande pour ouverture SAGE
Merci asr31.
J'ai donc petit à petit construit et testé la commande suivante dans le Shell :
Ca m'envoie bien vers la Gescom, mais rien ne se passe, aucune fenêtre ne s'ouvre.
J'ai essayé avec Document.show, SaisiePiece.Show et DocumentVente.List mais rien de mieux...
Merci de votre coup de main
J'ai donc petit à petit construit et testé la commande suivante dans le Shell :
- Code: Tout sélectionner
start "GecoMaes.exe" "\\chemin" -u='utilisateur' -p='password' -cmd=Document.Show(Type=BonCommandeClient, Piece='M1202325')
Ca m'envoie bien vers la Gescom, mais rien ne se passe, aucune fenêtre ne s'ouvre.
J'ai essayé avec Document.show, SaisiePiece.Show et DocumentVente.List mais rien de mieux...
Merci de votre coup de main
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Après qques modifs, ma commande s'execute bien dans le Shell, mais ne fonctionne pas en php. Voici le bout de code :
- Code: Tout sélectionner
<td class = "bouton"><?exec("GecoMaes.exe "S:\BD_GESTION.gcm" -cmd=Document.Show(Piece='.$tab_req['DO_Piece'].')"); ?><img src = "img/valider.png"></td>
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Re,
Alors après multiples tentaives, ça avance...
J'ai mon fichier PHP d'origine :
le code JS qui récupère la variable :
J'ai testé avec un "alert" et ma variable est bien récupérée.
Qui nous envoie ensuite vers la page fiche.php :
Mais toujours rien qui se passe.
Je sens que je suis pas loin, mais je vais pas tarder à m'arracher les cheveux. Si qqun pouvait me dire d'où vient l'erreur ?
Merci
Alors après multiples tentaives, ça avance...
J'ai mon fichier PHP d'origine :
- Code: Tout sélectionner
while ($tab_req = odbc_fetch_array($req_req))
{
$tab_req['Ad1']=utf8_encode($tab_req['Ad1']);
$display .= '<tr><td>'.$tab_req['DO_Piece'].'</td><td>'.$tab_req['DO_Ref'].'</td><td>'.$tab_req['Nom'].'</td><td>'.$tab_req['Ad1'].'</td><td>'.$tab_req['Ad2'].'</td><td>'.$tab_req['Code_Postal'].'</td>
<td>'.$tab_req['Ville'].'</td><td>'.$tab_req['Tel_Livraison'].'</td><td>'.$tab_req['DO_DateLivr'].'</td><td id=cde class = "bouton" onclick = "acces_cde(\''.$tab_req['DO_Piece'].'\') ;"><img src="img/valider.png"></a></td></tr>' ;
}
echo $display ;
le code JS qui récupère la variable :
- Code: Tout sélectionner
function acces_cde(cde)
{
var xhr;
if (cde != '')
{
if (window.XMLHttpRequest) // Objet de la fenêtre courant
{
xhr = new XMLHttpRequest(); // Firefox, Safari, ...
}
else if (window.ActiveXObject) // Version Active
{
xhr = new ActiveXObject( "Microsoft.XMLHTTP" ); // Internet Explorer
}
xhr.open( "POST" , "ajax/fiche.php" , false );
xhr.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded" );
xhr.send("cde=" + cde);
document.getElementById( 'resultatreq' ).innerHTML = xhr.responseText;
}
}
J'ai testé avec un "alert" et ma variable est bien récupérée.
Qui nous envoie ensuite vers la page fiche.php :
- Code: Tout sélectionner
<?php
$prog=("C:\Program Files (x86)\GecoMaes\GecoMaes.exe" "\\srv-sql\sage\BD_GESTION.gcm" -cmd=Document.Show(Piece='.$cde.');
shell_exec($prog);
?>
Mais toujours rien qui se passe.
Je sens que je suis pas loin, mais je vais pas tarder à m'arracher les cheveux. Si qqun pouvait me dire d'où vient l'erreur ?
Merci
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bonjour,
Je suis chauve ....
Cordialement,
Je suis chauve ....
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: PHP et lignes de commande pour ouverture SAGE
mais encore...
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bonjour,
Chauve car comme toi, a force de m'arracher les cheveux ....
Quel est le contexte de ton appli PHP ?
C'est un intranet ?
Ton code PHP va t'il s'appliquer coté serveur uniquement ? (et à quoi ça sert dans ce cas).
Cordialement,
Chauve car comme toi, a force de m'arracher les cheveux ....
Quel est le contexte de ton appli PHP ?
C'est un intranet ?
Ton code PHP va t'il s'appliquer coté serveur uniquement ? (et à quoi ça sert dans ce cas).
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: PHP et lignes de commande pour ouverture SAGE
merci asr de t'occuper de mon cas.
Alors pour t'expliquer brièvement :
C'est un outil en PHP, qui va récupérer sur une BDD SQL server, les clients ayant passé une commande avec des conditions définies.
J'ai un onglet qui me récapitule les commandes du jour, et un champ de recherche par nom ou tel pour retrouver un client.
Une fois sur la liste des résultats de recherche, qui m'affiche le n° de commande, son nom, son adresse... et au bout de chaque ligne, j'ai besoin d'un bouton qui m'ouvrirait sa commande dans Sage.
Le serveur wamp et tous les fichiers php sont sur un serveur qui n'a pas Sage d'installé. J'ai donc besoin qu'il m'ouvre Sage côté client.
J'espère m'être fait comprendre...
Ca rend dingue parce que qd je colle mon code dans un batch, ça marche !!
Alors pour t'expliquer brièvement :
C'est un outil en PHP, qui va récupérer sur une BDD SQL server, les clients ayant passé une commande avec des conditions définies.
J'ai un onglet qui me récapitule les commandes du jour, et un champ de recherche par nom ou tel pour retrouver un client.
Une fois sur la liste des résultats de recherche, qui m'affiche le n° de commande, son nom, son adresse... et au bout de chaque ligne, j'ai besoin d'un bouton qui m'ouvrirait sa commande dans Sage.
Le serveur wamp et tous les fichiers php sont sur un serveur qui n'a pas Sage d'installé. J'ai donc besoin qu'il m'ouvre Sage côté client.
J'espère m'être fait comprendre...
Ca rend dingue parce que qd je colle mon code dans un batch, ça marche !!
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bonjour,
Je ne connais pas bien PHP, mais si ça fonctionne grosso-modo comme un serveur ASP, tu fabrique ta page HTML par PHP.
Donc, dans le HTML donné au client, il faut :
1- avoir la commande que tu construit pour lancer la gescom,
2- un script qui s'exécute coté client (JS, VBS), donc, script dans la page HTML coté client.
Cordialement,
Je ne connais pas bien PHP, mais si ça fonctionne grosso-modo comme un serveur ASP, tu fabrique ta page HTML par PHP.
Donc, dans le HTML donné au client, il faut :
1- avoir la commande que tu construit pour lancer la gescom,
2- un script qui s'exécute coté client (JS, VBS), donc, script dans la page HTML coté client.
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: PHP et lignes de commande pour ouverture SAGE
Merci à toi,
Seulement, je ne suis pas du tout un pro du vbs... Voire je connais pas du tout en fait...
une piste peut-etre ?
Seulement, je ne suis pas du tout un pro du vbs... Voire je connais pas du tout en fait...
une piste peut-etre ?
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
C'est quand meme bizarre parce que même un exec('cmd.exe') ne marche. Même en mettant le chemin absolu...
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bon, après maintes tentatives et essais divers, j'ai trouvé la solution suivante :
recherche.php :
Passage de la variable dans l'url
Ensuite, récupération de la variable et écriture d'un fichier .bat :
Tout marche enfin, mon fichier bat se crée avec tout ce qu'il faut dedans
Maintenant, je voudrais qu'il se lance au clic... Comment faire ? J'ai essaye exec(), shell_exec(), system() mais rien n'y fait.
Même sous IE, il ne me propose pas d'executer le fichier...
recherche.php :
- Code: Tout sélectionner
while ($tab_req = odbc_fetch_array($req_req))
{
$tab_req['Ad1']=utf8_encode($tab_req['Ad1']);
$display .= '<tr><td>'.$tab_req['DO_Piece'].'</td><td>'.$tab_req['DO_Ref'].'</td><td>'.$tab_req['Nom'].'</td><td>'.$tab_req['Ad1'].'</td><td>'.$tab_req['Ad2'].'</td><td>'.$tab_req['Code_Postal'].'</td>
<td>'.$tab_req['Ville'].'</td><td>'.$tab_req['Tel_Livraison'].'</td><td>'.$tab_req['DO_DateLivr'].'</td><td><a href="ajax/fiche.php?cde=\''.$tab_req['DO_Piece'].'\'"><img src="img/valider.png"></a></td></tr>' ;
}
echo $display ;
Passage de la variable dans l'url
Ensuite, récupération de la variable et écriture d'un fichier .bat :
- Code: Tout sélectionner
<?php
$cde=$_GET['cde'];
// 1 : on ouvre le fichier
$monfichier = fopen('test.bat', 'r+');
// 2 : on lit la première ligne du fichier
fputs($monfichier, "start GecoMaes.exe \\\srv-sql\sage\BD_GESTION.gcm -cmd=Document.Show(Piece=$cde)");
// 3 : quand on a fini de l'utiliser, on ferme le fichier
fclose($monfichier);
exec('test.bat');
exit;
?>
Tout marche enfin, mon fichier bat se crée avec tout ce qu'il faut dedans
Maintenant, je voudrais qu'il se lance au clic... Comment faire ? J'ai essaye exec(), shell_exec(), system() mais rien n'y fait.
Même sous IE, il ne me propose pas d'executer le fichier...
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
Re: PHP et lignes de commande pour ouverture SAGE
Bon beh ça y est !!!
Après plusieurs essais, contournements et autres tentatives, j'y arrive enfin :
Après plusieurs essais, contournements et autres tentatives, j'y arrive enfin :
- Code: Tout sélectionner
<?php
$cde=$_GET['cde'];
// 1 : on ouvre le fichier
$monfichier = fopen('test.bat', 'r+');
// 2 : on lit la première ligne du fichier
fputs($monfichier, "start GecoMaes.exe \\\srv-sql\sage\BD_GESTION.gcm -cmd=Document.Show(Piece=$cde)");
// 3 : quand on a fini de l'utiliser, on ferme le fichier
fclose($monfichier);
header('Content-type: application/bat');
header('Content-Disposition: attachment; filename="test.bat"');
readfile('test.bat');
exit;
?>
- Posteur néophyte
- Messages: 13
- Inscription: Jeu 8 Aoû 2013 10:57
14 messages
|Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité