Je ne trouve pas l'erreur dans mon code php

Résolu/Fermé
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 - 20 oct. 2010 à 06:32
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 23 oct. 2010 à 09:42
Bonjour,

J'aimerais savoir pourquoi mon code ne fonctionne pas correctement

Voici la partie de la base SQL qui fonctionne correctement
<?php
$host = 'localhost';
$user = 'monsite';
$pass = 'abcdefg';
$db = 'base_user';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$select = 'SELECT pseudo FROM profils';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


La partie qui a mon avis pose problème
class utilisateurClass
    {
    var $data;
    var $utilisateur;

function utilisateurClass($utilisateur)
    {
    $this->utilisateur = $utilisateur;
    $this->data = file_get_contents("http://monsite.fr/" . $utilisateur);
    }

function identifiant()
    {
    $identifiant= explode('<div id="ident">', $this->data);
    $identifiant = explode('<br/>', $identifiant[1]);
    $identifiant = trim($identifiant[0]);
    return "$identifiant";
    }
    }

$utilisateur = $row["pseudo"];
$utilisateurPage = new utilisateurClass($utilisateur);
$utilisateurIdentifiant = $utilisateurPage->indentifiant();


Et le résultat du code qui prend bien les pseudos mais pas les identifiants
if($total) {
	while($row = mysql_fetch_array($result)) {echo $row["pseudo"].$identifiant.'<br>'."\n";}
	}
else echo 'Pas de pseudos enregistrées';

mysql_free_result($result);
?>


A mon avis il faut que les fonctions ne fonctionnes pas car il ne sais pas le nom des utilisateurs ou il ne fait pas la fonction pour chaque utilisateur de la liste.
A voir également:

1 réponse

avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
20 oct. 2010 à 13:53
$utilisateur = $row["pseudo"];

Es-tu sûr que $row soit défini avant ?
Et d'où vient $identifiant ?
0
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
20 oct. 2010 à 23:25
Je ne comprend pas "Es-tu sûr que $row soit défini avant ? "
Et $identifiant est pris dans le code source a la ligne :
$this->data = file_get_contents("http://monsite.fr/" . $utilisateur);

Si je met une fonction
$utilisateur = $_GET['utilisateur'];
et
echo $identifiant;

et que ensuite dans l'url je met ?utilisateur=PSEUDO il me maque bien l'identifiant de PSEUDO donc il n'y a pas d'erreur au niveau du script, sauf qu'il ne veut pas prendre en compte tout les pseudo(utilisateurs) qui sont dans la base des données.

J'ai penser que peut être le script considère :
$utilisateur = $row["pseudo"];
comme
$utilisateur = PSEUDO1 PSEUDO2 PSEUDO3 PSEUDO4...];

Et c'est peut être sa l'erreur car il ne peut plus faire la ligne
$this->data = file_get_contents("http://monsite.fr/" . PSEUDO1 PSEUDO2 PSEUDO3...);

As-tu une solution ?
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
21 oct. 2010 à 17:06
« Je ne comprend pas "Es-tu sûr que $row soit défini avant ? " »
Tu ne déclares pas la variable (qui contient un tableau/array) avant son utilisation.
En tout cas, je ne le vois pas avec le code que tu donnes.



« Si je met une fonction
$utilisateur = $_GET['utilisateur'];
echo $identifiant;


et que ensuite dans l'url je met ?utilisateur=PSEUDO il me maque bien l'identifiant de PSEUDO donc il n'y a pas d'erreur au niveau du script. »


Ce que tu dis est impossible. Si tu fais « echo $utilisateur », OK, mais la variable $identifiant, elle vient d'où ? Je vois nul part « $identifiant = ».



« J'ai penser que peut être le script considère : 
$utilisateur = $row["pseudo"]; 
comme 
$utilisateur = PSEUDO1 PSEUDO2 PSEUDO3 PSEUDO4...]; »


Les fonctions mysql_fetch_ (array, assoc, object, etc) retournes les résultats un par un. À chaque appel à la fonction, tu obtiens le résultat suivant. Quand il n'y a plus de résultat, alors elle retourne false. C'est pour ça qu'on l'utilise dans une boucle while. La boucle tourne tant qu'il y a des résultats. À chaque fois que la boucle recommence, on assigne à $row le résultat suivant.
0
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
22 oct. 2010 à 23:44
Tu dit que tu ne voie nul par ou se site $identifiant mais je te le redit c'est un numéro qui se trouve dans le code source de la page : http://monsite.fr/$utilisateur. Et pour cela j'utilise la fonction :
class utilisateurClass
    {
    var $data;
    var $utilisateur;

function utilisateurClass($utilisateur)
    {
    $this->utilisateur = $utilisateur;
    $this->data = file_get_contents("http://monsite.fr/" . $utilisateur);
    }

function identifiant()
    {
    $identifiant= explode('<div id="ident">', $this->data);
    $identifiant = explode('<br/>', $identifiant[1]);
    $identifiant = trim($identifiant[0]);
    return "$identifiant";
    }
    }
Cette fonction permet d'aller sur le site http://monsite.fr/$utilisateur et de prendre dans le code source les informations se situant entre <div id="ident"> et <br/> donc par exemple si j'ai http://monsite.fr/Aka13 dans le code source il récupere 154855 qui est mon identifiant. Et ensuite je veut qu'il fasse :
Aka13 : 154855
Pseudo2 : 9999
...


Tu comprend un peu mieux le script ?
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
23 oct. 2010 à 09:42
La variable n'est accessible que depuis la classe, à l'intérieur de la fonction identifiant().
C'est la variable $utilisateurIdentifiant qu'il faut utiliser (tu as récupérer le pseudo avec $utilisateurPage->indentifiant(); )
0