Problème pour récuperer les donnès de la table avec mysql_fetch_array()

Résolu
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011 - 27 nov. 2011 à 12:29
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011 - 27 nov. 2011 à 14:20
Bonjour,
Alors voila j'ai un problème pour afficher les donnés de ma tables et je comprend pas si ça viens de ma table ou de mon code car je crois que cela viens des apostrophes...
L’erreur est
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\site_local_request\getInfosFilms.php on line 61


Tandis que mon code est:
<?php
include ("Connect.php");
$tbl_name="film"; 
$dir_nom = "J:\Films HD";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
mysql_query("SET NAMES 'UTF8'");

set_time_limit(0);

$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas');
$fichier= array();

while($element = readdir($dir)) 
{
if($element != '.' && $element != '..' && $element != 'desktop.ini' && $element != 'Thumbs.dll' && $element != 'films.ico') 
{
if (!is_dir($dir_nom.'/'.$element)) 
{
$sql1="SELECT * FROM $tbl_name WHERE sid>124 ORDER BY sid ASC";
$result1=mysql_query($sql1);
$rows=mysql_fetch_array($result1);

$position = strpos($element, ".");
$extension = substr($element, 0, $position);
$fichier = $extension;

$titre=$rows['Titre'];
if($titre==$fichier)
{
$filename = $element;
$ext = substr($filename, -3, 3);
$format = strtoupper($ext);

$filesystem = new COM('Scripting.FileSystemObject');
$file = $filesystem->GetFile($dir_nom.'/'.$element);
$taille = $file->Size();

if ($taille >= 1048576)
{
$taille = round($taille / 1048576, -2)/1000 ." Go";
}

$sid=$rows['sid'];
$ids=0;
$Status="Complet";
$datetime=date("d/m/y H:i:s");
$Source="DVB";
$Type="BRDRip";

echo "$sid $ids $titre $taille $Status $datetime $Source $format $Type Ok...
";
}
else
{
$sql="SELECT * FROM $tbl_name WHERE Titre LIKE '$fichier'";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result))
{
$titre=nl2br(stripslashes($rows['Titre']));
if($titre==$fichier)
{
$filename = $element;
$ext = substr($filename, -3, 3);
$format = strtoupper($ext);

$filesystem = new COM('Scripting.FileSystemObject');
$file = $filesystem->GetFile($dir_nom.'/'.$element);
$taille = $file->Size();

if ($taille >= 1048576)
{
$taille = round($taille / 1048576, -2)/1000 ." Go";
}

$sid=$rows['sid'];
$ids=0;
$Status="Complet";
$datetime=date("d/m/y H:i:s");
$Source="DVB";
$Type="BRDRip";

echo "$sid $ids $titre $taille $Status $datetime $Source $format $Type Ok...
";
}
}
}
}	
}
}
closedir($dir);
mysql_close();	
?>

Voici un extrait d'une ligne qui n'est pas afficher:
bst 	sid 	Titre 	 	
P 	149 	Pirates des Caraibes - Jusqu'au bout du monde 	

9 réponses

kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:19
Enfaite c'est bon !
J'ai tout simplement fait ceci pour ceux que ça intéresserai:
					$fichier=mysql_real_escape_string($fichier);
$sql="SELECT sid, bst, Titre FROM $tbl_name WHERE Titre LIKE '$fichier' AND bst='$fichier[0]'";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result))
{
$titre=addslashes($rows['Titre']);
var_dump($titre);
if($titre==$fichier)
{
$filename = $element;
$ext = substr($filename, -3, 3);
$format = strtoupper($ext);

$filesystem = new COM('Scripting.FileSystemObject');
$file = $filesystem->GetFile($dir_nom.'/'.$element);
$taille = $file->Size();

if ($taille >= 1048576)
{
$taille = round($taille / 1048576, -2)/1000 ." Go";
}

$sid=$rows['sid'];
$ids=0;
$Status="Complet";
$datetime=date("d/m/y H:i:s");
$Source="DVB";
$Type="BRDRip";

echo "$sid $ids ".stripslashes($titre)." $taille $Status $datetime $Source $format $Type Ok...
";
}
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 12:46
Salut,

Tu viens de découvrir le principe des injection SQL. Bref, utilises mysql_real_escape_string() afin d'échapper le nom du fichier.
0
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 12:59
Mais je comprend pas cette fonction est utilisée lorsque l'on envoi les données dans la table or ici je vais les récupérer.
Donc je dois reremplir ma table ?
0
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 13:43
Voila j'ai remplacer la ligne:
$titre=nl2br(stripslashes($rows['Titre']));
par
$titre=mysql_real_escape_string($rows['Titre']);

Mais ça ne marche toujours pas j'ai toujours la même erreur, sachant que je viens de remplir ma table en utilisant mysql_real_escape_string().?
0

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

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 13:45
Allez je te donne un indice :

$sql="SELECT * FROM $tbl_name WHERE Titre LIKE '$fichier'";

Qu'est-ce que ça donne lorsque $fichier est un nom avec un apostrophe ? En quoi mysql_real_escape_string() peut aider dans ce cas ?

Avec l'indication de la ligne en cause ainsi que ces deux questions tu devrais avoir largement assez de pistes pour trouver par toi même ce qu'il faut corriger.
0
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 13:54
Ok je crois avoir compris, j'ai fais ça avant la requete:
$fichier=mysql_real_escape_string($fichier);
$sql="SELECT sid, Titre FROM $tbl_name WHERE Titre LIKE '$fichier'";

Donc maintenant je n'ai plus d'erreur mais par contre les lignes qui marquais une erreur sont ignorer...
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 14:02
C'est bien ça. Voici un problème de réglé, seulement maintenant tu en as un autre. Essaye d'afficher les résultats à différentes étapes afin de tout décortiquer et isoler le problème. Pour ceci, var_dump() est une alliée précieuse.
0
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:14
Alors enfaite var_dump() renvoi ceci par exemple:
string 'L'Assaut' (length=8)

Et dans la base le Titre est stocker comme cela L'Assaut.
Du coup je pense que c'est à cause de ' qu'il n'est pas afficher car les \' ne sont pas ajouter...
Mais si je change le Titre dans ma table comme ceci: L\'Assaut, alors là la ligne ne s'affiche même pas avec var_dump()...
0
kepon72 Messages postés 25 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:20
Merci beaucoup pour votre aide !
0