Problème avec un script

Résolu
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007 - 18 juin 2007 à 14:49
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 - 20 juin 2007 à 14:16
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

amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
20 juin 2007 à 14:16
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.
3
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
18 juin 2007 à 15:15
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.
0
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
18 juin 2007 à 15:29
Hello,

Non pareil, je pense que ça viens du $sql=    
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 juin 2007 à 17:54
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
18 juin 2007 à 20:51
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
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
18 juin 2007 à 23:00
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.
0
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
20 juin 2007 à 06:40
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
0
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
20 juin 2007 à 06:43
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
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
20 juin 2007 à 12:05
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.
0
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
20 juin 2007 à 12:22
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
0
PhillAd Messages postés 13 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 27 juin 2007
20 juin 2007 à 14:12
Problème résolu il sufisait de mettre:
$sql= "INSERT INTO unetable VALUES('$place','$dd[0]','$dd[1]','$dd[2]')  ";

Merci à tous
0
Rejoignez-nous