Je ne trouve pas l'erreur dans mon code php

Résolu
Aka13 Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

1 réponse

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
$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   Statut Membre Dernière intervention   8
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
« 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   Statut Membre Dernière intervention   8
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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