IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Prolog server pages


Sujet :

Prolog

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 46
    Points
    46
    Par défaut Prolog server pages
    salut, je travaille sur un projet qui consiste à afficher les pannes pour un system ds une liste sur une page html , et puis la procedure et l outillage correspondant a chaque panne, et ceci en utilisant PROLOG SERVER PAGES telechargeable sur ce lien:

    http://www.benjaminjohnston.com.au/t...?t=pspdownload

    la structure des pages est comme suit:

    code prolog

    /* code html*/


    aprés avoir installé correctement PSP, j'ai enregistré mn fichier sous essai.prolog dont le code est comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    :- use_module(library('http/thread_httpd')).
     
    :- use_module(library('http/html_write')).
     
    :- use_module(library('http/http_session')).
     
    :- use_module(library('http/http_error')).
     
     
     
    :-dynamic systeme/1
     
    panne(panne11):-systeme(systeme1).
    panne(panne12):-systeme(systeme1).
    panne(panne13):-systeme(systeme1).
     
    panne(panne21):-systeme(systeme2).
    panne(panne22):-systeme(systeme2).
    panne(panne23):-systeme(systeme2).
     
     
     
    procedure(procedure11):- panne(panne11).
    procedure(procedure12):- panne(panne12).
    procedure(procedure13):- panne(panne13).
     
    procedure(procedure21):- panne(panne21).
    procedure(procedure22):- panne(panne22).
    procedure(procedure23):- panne(panne23).
     
    outil(outil11) :- panne(panne11).
    outil(outil12) :- panne(panne12).
    outil(outil13) :- panne(panne13).
    outil(outil21) :- panne(panne21).
    outil(outil22) :- panne(panne22).
    outil(outil23) :- panne(panne23).
     
     
     
    check(_):-check(_).
     
    check(systeme(_)).
    check(panne(_)).
    check(procedure(_)).
    check(outil(_)).
    check(!).
     
     
    go(Get) :-
    	% Get the query from the GET request
    	member(sys=SYS,Get),
    	% Convert to a term
    	catch(atom_to_term(SYS, Term, Bindings),_,fail),
    	nonvar(Term),
    	% Check user has supplied a valid query
    	check(Term),
    	!,
    	% Find all solutions
    	forall(Term, (bind(Bindings), write(Term), nl)),
    	!.
     
    % This binds a Variable=Name list so that unbound variables are bound to their Name
    bind([]).
     
    bind([A=A|T]) :-
    	!,
    	bind(T).
     
    bind([_|T]) :-
    	bind(T).
     
    /*
     
    <table width="980" height="499" border="0">
      <tr>
        <td colspan="2"><!--  -->
    <!-- code_prolog --><?,systeme(systeme1),?><?,forall(panne(X), ?> "<?= X ?>" est une panne de "<?= systeme1 ?>".<BR><?) ,?></td>
      </tr>
      <tr>
        <td colspan="2"><!-- ici je veux qu'en cliquant on execute la commande assert(..) -->
    <?,forall(panne(X), ?> "<?= X ?>" est une panne de "<?= systeme2 ?>".<BR><?) ,?></td>
      </tr>
      <tr>
        <td><form id="form1" name="form1" method="GET" action="ESSAI.prolog"><br>
          <label>pannes
            <select name="sys" size="1">
              <?,forall(panne(X), ?><option> <?= X ?> <BR></option><?),?>
              
              
            </select>
            </label><input type="submit" value="OK">
        </form></td>
        <td<pre>
     
    <?, once(
                 go(Get)
             ;
                 ?>Error: Invalid Term (The query must be a valid prolog query)<?
        )
      ,?>
     
    </pre>
     
    <form id="form1" name="form1" method="GET" action="ESSAI.prolog"><br>
          <label>pannes
            <select name="sys" size="1">
              <?,forall(panne(X), ?><option> <?= X ?> <BR></option><?),?>
              
              
            </select>
            </label><input type="submit" value="OK">
     
     
        </form></td>
      </tr>
    </table>
    */
    si qcq un peut m aider je serais reconnaissant et merci d'avance!!

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 46
    Points
    46
    Par défaut Prolog server pages
    salut j'ai pu avancer dans mn travail en adoptant les boutons radios au lieu des listes,maintenant en cliquant sur un systeme ce sont les pannes correspondantes qui s'affichent mais il y a un probleme c'est au niveau des procedures, cela ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    :- use_module(library('http/thread_httpd')).
     
    :- use_module(library('http/html_write')).
     
    :- use_module(library('http/http_session')).
     
    :- use_module(library('http/http_error')).
     
     
     
    :- dynamic systeme/1.
    :- dynamic panne/1.
    :- dynamic procedure/1.
     
     
     
     
    procedure(procedure1):-panne(panne1).
    procedure(procedure2):-panne(panne2).
    procedure(procedure3):-panne(panne3).
    procedure(procedure4):-panne(panne4).
     
     
    panne(panne1):-systeme(systeme1).
    panne(panne2):-systeme(systeme1).
    panne(panne3):-systeme(systeme2).
    panne(panne4):-systeme(systeme2).
     
     
     
     
    %sibling(X,Y) :- parent(Z,X), parent(Z,Y).
    %parent(X,Y) :- father(X,Y).
    %parent(X,Y) :- mother(X,Y).
    %%mother(trude, sally).
    %father(tom, sally).
    %father(tom, erica).
    %father(mike, tom).
    %female(trude).
    %male(tom).
    %male(mike).
     
     
    % Checks so that the user doesn't try and do things he or she shouldn't
    %check(sibling(_,_)).
    %check(parent(_,_)).
    %check(mother(_,_)).
     
    check(systeme(_)).
    check(panne(_)).
    check(procedure(_)).
    %check((X,Y)) :- check(X), check(Y).
    %check((X;Y)) :- check(X), check(Y).
    check('!').
     
     
    go(Get) :-
    	% Get the query from the GET request
    	(member(q=Sys,Get);
    	member(p=Sys,Get)),
     
    	% Convert to a term
    	catch(atom_to_term(Sys, Term, Bindings),_,fail),
    	nonvar(Term),
    	% Check user has supplied a valid query
    	check(Term),
    	!,
    	% Find all solutions
    	forall(Term, (bind(Bindings), write(Term), nl)),
    	!.
     
    pan(Get)	:-member(ps=Pan,Get),
     
    	% Convert to a term
    	catch(atom_to_term(Pan, Term, Bindings),_,fail),
    	nonvar(Term),
    	% Check user has supplied a valid query
    	check(Term),
    	!,
    	% Find all solutions
    	forall(Term, (bind(Bindings), write(Term), nl)),
    	!.
     
     
    % This binds a Variable=Name list so that unbound variables are bound to their Name
    bind([]).
     
    bind([A=A|T]) :-
    	!,
    	bind(T).
     
    bind([_|T]) :-
    	bind(T).
     
     
     
     
     
    /*<html>
    <head></head>
    <body>
    <!-- Work out what the query was -->
    <?, (member(q=Sys,Get);
    	member(p=Sys,Get);Sys='No Systeme Supplied') ,?>
     
    <!-- Show the query -->
    Query:
    <pre>
    <?= Sys ?>
    </pre>
     
    <!-- Show the solutions -->
    Solutions:
    <pre>
    <?, once(
                 go(Get)
             ;
                 ?>Error: Invalid Term (The query must be a valid prolog query)<?
        )
      ,?></pre></pre>
     
     
     
    <pre>
      <form id="form1" name="form1" method="GET" action="msg2.prolog">
      <p>
        <label>
          <input type="radio" name="q" value="systeme1" />
          systeme1</label>
        <br />
        <label>
          <input type="radio" name="p" value="systeme2" />
          systeme2</label>
        <br /><input type="submit" value="valider" >
      </p>
    </form>
     
    	<form id="form1" name="form1" method="GET" action="msg2.prolog">
      <?,assert(systeme(Sys)),?><?,forall(panne(X),?><label>
      <input type="radio" name="ps" value="<?=X?>" />
        <?=X?></label><input type="submit" value="valider" ><br><?),?>
    </form>
     
    <form id="form1" name="form1" method="GET" action="msg2.prolog">
     <?,retractall(panne(Pan)),assert(panne(Pan)),?> <?,forall(procedure(Y),?><label>
      <input type="radio" name="pr" value="<?=Y?>" />
        <?=Y?></label><br><?),?><input type="submit" value="valider" >
    </form>
     
    </pre>
    </body>
    </html>*/

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    J'ai un peu regardé ton programme et voilà ce que j'ai réussi à obtenir, si j'ai bien compris ce que tu recherchais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    :- use_module(library('http/thread_httpd')).
     
    :- use_module(library('http/html_write')).
     
    :- use_module(library('http/http_session')).
     
    :- use_module(library('http/http_error')).
     
    :- dynamic systeme/1.
    :- dynamic panne/1.
    :- dynamic procedure/1.
     
     
     
    procedure(procedure1):-panne(panne1).
    procedure(procedure2):-panne(panne2).
    procedure(procedure3):-panne(panne3).
    procedure(procedure4):-panne(panne4).
     
     
    panne(panne1):-systeme(systeme1).
    panne(panne2):-systeme(systeme1).
    panne(panne3):-systeme(systeme2).
    panne(panne4):-systeme(systeme2).
     
     
     
     
    check(systeme(_)).
    check(panne(_)).
    check(procedure(_)).
    check('!').
     
     
    go(Get) :-
    	% Get the query from the GET request
    	member(p=Sys,Get),
     
    	% Convert to a term
    	catch(atom_to_term(Sys, Term, Bindings),_,fail),
    	nonvar(Term),
    	% Check user has supplied a valid query
    	check(Term),
    	!,
    	% Find all solutions
    	forall(Term, (bind(Bindings), write(Term), nl)),
    	!.
     
    go(Get)	:-
    	member(ps=Pan,Get),
    	% Convert to a term
    	catch(atom_to_term(Pan, Term, Bindings),_,fail),
    	nonvar(Term),
    	% Check user has supplied a valid query
    	check(Term),
    	!,
    	% Find all solutions
    	forall(Term, (bind(Bindings), write(Term), nl)),
    	!.
     
     
    % This binds a Variable=Name list so that unbound variables are bound to their Name
    bind([]).
     
    bind([A=A|T]) :-
    	!,
    	bind(T).
     
    bind([_|T]) :-
    	bind(T).
     
     
     
    /*<html>
    <title>Interrogation Prolog</title>
    <head></head>
    <body>
     
    <!-- Work out what the query was -->
    <?, (member(p=Sys,Get);
    	Sys='') ,
    	(member(ps=Pan, Get);
    	Pan=''),?>
     
    <!-- Show the query -->
    Query:
    <pre>
    <?= Sys ?>
    <?=Pan ?>
    </pre>
     
    <pre>
    <form id="form1" name="form1" method="GET" action="bakou.prolog">
      <p>
        <label>
    		<input type="radio" name="p" value="systeme1" /> systeme1
    	</label>
        <label> 
    		<input type="radio" name="p" value="systeme2" /> systeme2
    	</label>
    		<input type="submit" value="valider systeme" >
      </p>
    </form>
     
    <form id="form2" name="form2" method="GET" action="bakou.prolog?p=<?= Sys ?>&">
    	<?,assert(systeme(Sys)),
    	  forall(panne(X),?>
    		<label>
    		<input type="radio" name="ps" value="<?=X?>" /> <?=X?>
    		</label>
    		<input type="submit" value="valider panne" ><br><?),?>
    </form>
     
    <table>
    	<tr>
    	<?,retractall(panne(_)), assert(panne(Pan)),?> 
    	<?,forall(procedure(Y),?>
    		<td><H2>Solution : <?= Y ?></td><?),?>
    	</tr>	
    </table>
     
     
    </pre>
    </body>
    </html>*/
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je me suis amusé à l'améliorer (de mon point de vue !) un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    :- use_module(library('http/thread_httpd')).
     
    :- use_module(library('http/html_write')).
     
    :- use_module(library('http/http_session')).
     
    :- use_module(library('http/http_error')).
     
    :- dynamic systeme/1.
    :- dynamic panne/1.
    :- dynamic procedure/1.
    :- dynamic genere/1.
     
     
     
    procedure(procedure1):-panne(panne1).
    procedure(procedure2):-panne(panne2).
    procedure(procedure3):-panne(panne3).
    procedure(procedure4):-panne(panne4).
     
     
    panne(panne1):-systeme(systeme1).
    panne(panne2):-systeme(systeme1).
    panne(panne3):-systeme(systeme2).
    panne(panne4):-systeme(systeme2).
     
     
    systeme(systeme1) :- genere(debut).
    systeme(systeme2) :- genere(debut).
     
    /*<html>
    <title>Interrogation Prolog</title>
    <head></head>
    <body>
     
     
     
    <!-- Work out what the query was -->
    <?, (member(p=Sys,Get), Pan = ''; 
         member(ps=Pan, Get), Sys = '';
    	assert(genere(debut)),Pan='', Sys='No facts'),?>
     
    <!-- Show the query -->
    Facts :
    <pre>
    <?= Sys ?>
    <?=Pan ?>
    </pre>
     
     
     
    <pre>
    <form id="form1" name="form1" method="GET" action="bakou.prolog">
    	<?,forall(systeme(X),?>
    		<label>
    		<input type="radio" name="p" value="<?=X?>" /> <?=X?>
    		</label>
    		<input type="submit" value="valider systeme" ><br><?),?>
    </form>
     
    <form id="form2" name="form2" method="GET" action="bakou.prolog?p=<?= Sys ?>&">
    	<?,retractall(systeme(_)), assert(systeme(Sys)),
    	  forall(panne(X),?>
    		<label>
    		<input type="radio" name="ps" value="<?=X?>" /> <?=X?>
    		</label>
    		<input type="submit" value="valider panne" ><br><?),?>
    </form>
     
    <table>
    	<tr>
    	<?,retractall(panne(_)), assert(panne(Pan)),?> 
    	<?,forall(procedure(Y),?>
    		<td><H2>Solution : <?= Y ?></td><?),?>
    	</tr>	
    </table>
     
     
    </pre>
    </body>
    </html>*/
    A noter que tu peux mémoriser des données de session en utilisant la directive ":- session_predicate bidule/1" qui l'equivalent du assert mais pour une session internet, je te rappelle que Prolog n'est appelé que le temps de créer la page d'affichage et qu'ensuite tout les données de la base sont perdues.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 46
    Points
    46
    Par défaut prolog server pages
    merci TRAP D, je crois que cela me va tres bien. mais c baouk et non pas bakou ... juste pour rigoler.

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Désolé
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Prolog Server Pages] Utilisation des liens internes
    Par baouk2000 dans le forum Prolog
    Réponses: 14
    Dernier message: 24/03/2009, 00h09
  2. Java Server Pages - Téléchargement au lieu d'affichage
    Par goldorakgo dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 16/10/2008, 07h41
  3. Cookie plsql server page
    Par raneria dans le forum PL/SQL
    Réponses: 1
    Dernier message: 27/08/2008, 13h25
  4. appel d'une java server page
    Par mitoubra dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 19/11/2007, 19h56
  5. Prolog Server Page
    Par gabochasa dans le forum Prolog
    Réponses: 4
    Dernier message: 29/08/2006, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo