Hello,

J'ai repris un vieux site web qui est en hébergement chez free.fr.
Lorsque je met le site en local, les requêtes ne s'affichent pas.
Dans la base de données, en local ou en ligne, tout est OK, j'ai des résultats.

Pour la connexion à la base de données, j’utilise une classe de connexion (connue) de sebastien muller :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
<?php
/******************************
  classe de connexion a mysql
  par sebastien muller
*******************************/
 
class db
{
    /**************/
    /* proprietes */
    /**************/
    var $host='';        // l'hote de connexion
    var $database='';    // la base
    var $login='';    // le login de connexion a la base
    var $passwd='';    // le mot de passe correspondant au login
 
    var $query_id=0;    // identifiant de resultat
    var $link_id=0;    // identifiant de connexion
 
    var $error='';    // description de la derniere erreur
 
    var $record=array();    // tableau contenant l'enregistrement courant
    var $row=0;        // compteur de ligne (la ligne courante du recordset)
 
    var $auto_free=1;    // a 1 si on libere automatiquement la memoire apres certaines fonctions
 
    /************/
    /* methodes */
    /************/
    /*
        constructeur db(autofree)
        link_id connect(hote, base, login, passwd)
        void free()
        query_id query(query)
        int next_record()
        row seek(pos)
        int num_rows()
        int num_fields()
        int affected_rows()
    */
    // le constructeur choisi uniquement si on veut liberer ou pas la memoire
    function db($autofree)
    {
        $this->auto_free=$autofree;
    }
 
    // ouvre une connexion persistante et se connecte a la base desiree
    function connect($hote='', $base='', $util='', $pass='')
    {
        // verification
        if($hote !='')$this->hote=$hote;        // host=$hote;
        if($base !='')$this->database=$base;
        if($util !='')$this->login=$util;
        if($pass !='')$this->passwd=$pass;
 
        // ouverture de la connexion persistante
        if(($this->link_id=mysql_pconnect($this->host, $this->login, $this->passwd))==false)
        {
            $this->error="impossible de creer une connexion persistante !";
            return(0);
        }
 
        // selection de la base
        if(@mysql_select_db($this->database, $this->link_id)==false)
        {
            $this->error="impossible de selectionner la base !";
            return(0);
        }
        mysql_query("SET NAMES 'utf8'");
        return($this->link_id);
    }
 
    // pour liberer la memoire de la derniere requete
    function free()
    {
        if(@mysql_free_result($this->query_id)==false)
            $this->error="erreur lors de la tentative de liberation de memoire";
              $this->query_id=0;
    }
 
    // pour lancer une requete sur la connexion courante
    function query($query='')
    {
        $rtval=0;
 
        // pour tester si il existe une connexion
        if($this->link_id!=0)
        {
            // test si on doit liberer la memoire
            if($this->query_id!=0)
            {
                if($this->auto_free==1)
                    $this->free();
            }
 
            if(($this->query_id=mysql_query($query, $this->link_id))==false)
                $this->error="impossible de lancer la requete";
            else
            {
                $rtval=$this->query_id;
                $this->row=0;
            }
        }
        else
            $this->error="impossible de lancer une requete, il n'existe pas de connexion !";
        @mysql_close();    // Ferme automatiquement la connexion après l'execution de la requête.
        return($rtval);
    }
 
    // pour avancer d'un élément dans le résultset
    function next_record()
    {
        $rtval=0;
 
        if($this->query_id!=-1)
        {    // si il y a un index de resultat
            $this->record=@mysql_fetch_array($this->query_id);
            $this->row=$this->row + 1;
 
            // test validite
            $stat=is_array($this->record);
            if(!$stat && $this->auto_free)
                $this->free();
            if($stat)
                $rtval=1;
        }
        else
            $this->error="impossible d'avancer le resultat, pas d'id de res !";
 
        return($rtval);
    }
 
 
 
    // ===============================================================================
    // pour avancer d'un élément dans le résultset
    function previous_record()
    {
        $rtval=0;
 
        if($this->query_id!=-1)
        {    // si il y a un index de resultat
            $this->record=@mysql_fetch_array($this->query_id);
            $this->row=$this->row - 1;
 
            // test validite
            $stat=is_array($this->record);
            if(!$stat && $this->auto_free)
                $this->free();
            if($stat)
                $rtval=1;
        }
        else
            $this->error="impossible d'avancer le resultat, pas d'id de res !";
 
        return($rtval);
    }
    // ===============================================================================
 
 
 
 
    // pour positionner le pointeur interne du résultset à l'endroit désiré
    function seek($pos=0)
    {
        $rtval=-1;
 
        if(@mysql_data_seek($this->query_id, $pos)!=false)
        {
            $this->row=$pos;
            $rtval=$pos;
        }
 
        return($rtval);
    }
 
    // retourne le nombre de lignes dans le recordset
    // (uniquement après un select)
    function num_rows()
    {
        return(@mysql_num_rows($this->query_id));
    }
 
    // retourne le nombre de champs de l'enregistrement courant
    function num_fields()
    {
        return(@mysql_num_fields($this->query_id));
    }
 
    // retourne le nombre de tuples affectés
    // (nb de lignes affectées après un insert, update ou delete)
    // (!!! : si on fait un delete sur tous les enregistrements -> sans clause where
    // alors la fonction renvoie 0)
    function affected_rows()
    {
        return(@mysql_affected_rows($this->link_id));
    }
 
    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 
    // retourne l'élément désiré (indice ou nom du champ) de la ligne courante
    function f($col)
    {
        return($this->record[$col]);
    }
 
    // pour afficher l'élémént desire de la ligne courante
    function p($col)
    {
        print $this->record[$col];
    }
 
    // alias de num_rows()
    function nf()
    {
        return($this->num_rows());
    }
 
    // pour afficher le resultat de num_rows()
    function np()
    {
        print $this->num_rows();
    }
    }
    function close()
    {
        @mysql_close();
    }
?>
Voici mon code d'execution de la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?php
echo '<ul>';
$sql ='SELECT * FROM (`site_news`,`site_login_user`) WHERE `news_auteur`=`user_login` ORDER BY `news_date` DESC LIMIT 0, 10';
 $db_s->query($sql);
while($db_s->next_record())
{    echo '<li>'.$db_s->f('news_type').'</li>';
}
echo '</ul>';
?>
Quand je fais un print_r($db_s->next_record());, ca me renvois 0.
Sauriez vous pouquoi je n'ai rien en local, et en ligne ca fonctionne ?