Problème avec un script

Résolu
Signaler
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007
-
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
-
Bonjour,

J'ai réalisé un petit script qui est sensé récupérer des informations sur une autre page en les inscrivant dans une table de la base de donné.
Visiblement le script fonctionne (pas d'erreur), mais ne fait pas ce que je lui demande : il ce lance récupère les informations mais ne les inscrit pas dans la base de donné

Voici le code:
<?php

$place = 0;
//récuperation de la liste des users
$result = mysql_query("SELECT uid, value, username FROM username
      WHERE bya_value.uid=users.user_id AND value<>" " and BanPseudo<1 and fid=18");
 
while ($challengeur = mysql_fetch_array($result, MYSQL_NUM)) {

// recherche les pages du site externe
$url1 = "http://www.siteexterne.com/my_profile/?PID=";
$url = $url1. $challengeur[1];
$nom = $challengeur[2];
$pid = $challengeur[1];

// recherche des infos les pages
$a = file_get_contents($url);
$rank1 = explode ("ctl00_FullColumn_Ranked1v1_Rank">",$a);//récupèration des infos
$rank2 = explode ("", $rank1[1]);
$rank = $rank2[0];
$pseudo1 = explode ("ctl00_MainColumn_NickNameLabel">",$a);//récupèration des infos
$pseudo2 = explode ("", $pseudo1[1]);
$pseudo = $pseudo2[0];
if ($rank > "0")
$tableau[$rank] = array ($nom, $pseudo, $rank);
}
ksort ($tableau);
foreach ($tableau as $dd)
{

$place++;
//Inscription dans la base
$sql= "INSERT INTO unetable (Place,Nom,Pseudo,Rank)
VALUES ";
$sql .= "('$place'),('$dd[0]'),('$dd[1]'),('$dd[2]')";
mysql_query($sql);

}
?>

Le but recherché étant de mettre les informations comme si on les mettaient dans un tableau, mais sans faire apparaître de tableau et de récupérer directement les donnés dans une table.
On peut peut-être récupérer ces informations d'une autre manière car là c'est un peu détourné mais je ne vois pas trop comment faire...

Si vous avez des idées sur la manière d'enregistrer ces informations afin de les garder en mémoire dans la base de donné ou si vous comprenez pourquoi là ça ne s'enregistre pas, je suis preneur

Merci de vos futur post

11 réponses

Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut
c'est bien ça que j'ai proposé au début ;)
<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut
$sql="INSERT INTO unetable(place,nom,pseudo,rank)
VALUES(
"$place","$dd[0]","$dd[2] ","$dd[3]",
)";

<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

Hello,

Non pareil, je pense que ça viens du $sql=    
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
Salut

mysql_query($sql);
a remplacer par
mysql_query($sql) or die($sql.'
'.mysql_error());
on verra de suite plus claire a ton probleme

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

J'ai remplacer mysql_query($sql) par mysql_query($sql) or die($sql.'
'.mysql_error()); et maintenant j'ai droit à ce message d'erreur:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/blabla/script2.php on line 6

Merci de m'aider
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut,
fait nous voir ce qui est dans la ligne 6

<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

Hello,

Petite erreur de ma part il me dit qu'il a un problème à la ligne 35 et 36, ces lignes correspondent à celle ci:

34  }




35  ksort ($tableau);
36   foreach ($tableau as $dd)
37   {


J'ai remplacer aussi:
$rank1 = explode ("ctl00_FullColumn_Ranked1v1_Rank">",$a);//récupèration des infos
par :
$rank1 = explode ("ctl00_FullColumn_Ranked1v1_Rank",$a);//récupèration des infos

$pseudo1 = explode ("ctl00_MainColumn_NickNameLabel">",$a);//récupèration des infos 
par :
$pseudo1 = explode ("ctl00_MainColumn_NickNameLabel",$a);//récupèration des infos

Merci de m'aider
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

Les erreurs sont les suivantes :

Warning: ksort() expects parameter 1 to be array, null given in /blabla/script.php on line 35

Warning: Invalid argument supplied for foreach() in /blabla/script.php on line 36

Désolé pour le double post
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut
le probleme vient d'ici
$tableau[$rank] = array ($nom, $pseudo, $rank);
faudrai faire
$tableau = array ($nom, $pseudo, $rank);

<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

Hello,
J'ai modifié le code, le problème viens à l'insertion de la base mysql. Lorsque je laisse tel qu'elle c'est à dire quand je met :
$sql= "INSERT INTO unetable (Place,Nom,Pseudo,Rank)
VALUES ";
$sql .= "('$place'),('$dd[0]'),('$dd[1]'),('$dd[2]')";
mysql_query($sql);

rien ne ce passe (pas d'enregistrement dans la bdd) et j'ai droit à ce genre de chose quand je l'execute:
INSERT INTO unetable (Place,Nom,Pseudo,Rank) VALUES  ('1'),('DONNE'),('DONNE'),('DONNE')
Column count doesn't match value count at row 1

et si je change, par exemple si je met:
$sql = "INSERT INTO unetable VALUES(Place,Nom,Pseudo,Rank)  ";
$sql .= "('$place'),('$dd[0]'),('$dd[1]'),('$dd[2]')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'.mysql_error());

j'ai droit à cette erreur:
Erreur SQL !INSERT INTO unetable VALUES(Place,Nom,Pseudo,Rank) ('1'),('DONNE'),('DONNE'),('DONNE') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('1'),('DONNE'),('DONNE'),('DONNE')' at line 1

Ma version de mysql est 4.1.10

Merci de m'aider
Messages postés
13
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
27 juin 2007

Problème résolu il sufisait de mettre:
$sql= "INSERT INTO unetable VALUES('$place','$dd[0]','$dd[1]','$dd[2]')  ";

Merci à tous