Bonjour,
Je sais que le nom du post n'est pas très clair mais j'ai vraiment du mal à formuler mon problème (et me faire comprendre d'un moteur de recherche, du coup :/).

J'ai dans ma base de données des champs correspondant à des domaines, des directions et qui ressemblent à ça :
Direction des Activités Métier et Maîtrise d'Ouvrage
Direction de l’Organisation
Direction de la Communication

J'effectue une requête simple (affiche les équipes appartenant à cette direction ou ce domaine par exemple) mais évidemment, avec les apostrophes, ça coince (et vous remarquerez que ce n'est pas les mêmes : ' ou ’ ). La requête ne se fait pas, il faudrait qu'elle ressemble à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select direction, domaine, equipe
from service
where direction='Direction des Activités Métier et Maîtrise d''Ouvrage'
group by direction, domaine, equipe
order by direction, domaine, equipe"
L'utilisateur ne saisit rien, toutes ces données sont stockées et donc, il navigue par menu.

J'ai essayé addslashes(), pg_escape_string() mais rien n'y fait. Et même str_replace() mais du coup, ma requête ne donne rien...

Voici mon code, qui sera peut être plus clair que moi..

Le menu pour accéder à la page qui détaille les infos d'une direction
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
<li><a href="#">Directions<!--[if IE 7]><!</a><![endif]
            [if lte IE 6]><table><tr><td><![endif]-->
                <?php
                    $c=connec_base ();
                    $r=pg_exec ($c , "select distinct direction
                                from service
                                where direction !=''
                                order by direction");
                    echo "<ul>";
                    for ($i=0; $i<pg_numrows($r); $i++) {
                        $l=pg_fetch_array($r,$i);
                        echo "<li><a href='det_direction.php?iddir=$l[direction]'>".$l["direction"]."</a></li>";
                    }
                    echo "</ul>";
                    deco_base ();
                ?>
                <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
L'affichage qui coince...
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
<?php
       $direction=$_GET['iddir'];
       echo "<h1>Liste des équipes de $direction</h1><br/>";
 
       $c=connec_base ();
 
        $r=pg_exec ($c , "select direction, domaine, equipe
                        from service
                        where direction='$direction'
                        group by direction, domaine, equipe
                        order by direction, domaine, equipe");
 
        $l=pg_fetch_array($r,$i);
 
        echo "<ul>";
        //pour tous les tuples résultats de la requete
        for ($i=0; $i<pg_numrows($r); $i++) {
 
                       $l=pg_fetch_array($r,$i);     
 
                                echo "<li><strong>".$l["equipe"]."</strong> (".$l["domaine"].")</li>";
 
                }
         echo "</ul>";
 
 
    deco_base ();
       ?>
Existerait-il une autre solution que de remplacer les données dans la base ? Si non, comment fonctionne la fonction replace de POSTGRESQL dans ce cas ? car :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
select replace (direction,''','')
from service
ne fonctionne pas... :/

En vous remerciant d'avance et en espérant avoir été claire..