par
Dexion » 26 août 2008, 14:22
Bonjour,
J'ai un problème avec mon bout de code php, qui ne me retourne pas le résultat souhaité,
Voici le code :
<?php
$n=0;
function sort_by_name($a,$b) {
$a_alpha = (preg_match('/^[a-zA-Z]/',$a[0])==1);
$b_alpha = (preg_match('/^[a-zA-Z]/',$b[0])==1);
if ($a_alpha && !$b_alpha) return -1;
if ($b_alpha && !$a_alpha) return 1;
return strcasecmp($a[0],$b[0]);
}
$lettres='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
echo "\n\t\t<div id='link'>";
for($i=0;$i<26;$i++) echo "\n\t\t\t<a href='#".$lettres{$i}."'>".$lettres{$i}."</a>";
echo "\n\t\t\t<a href='#Concert-Spectacle'>@</a>";
echo "\n\t\t</div>";
if (!isset($_POST['valider'])) {
//Declaration du fichier
define('FICHIER', 'film.txt');
$results =array();
// Lecture du fichier
@ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
while (!feof($fp)) {
// Récupération de la ligne courante
$ligne = fgets($fp, 1024);
// Caractère spéciaux et expression
if (preg_match('|\b' . preg_quote($_POST['mot']) . '\b|i', $ligne)) {
$resultats[] = $ligne;
}
}
// Fermeture du fichier
fclose($fp);
// On compte le nombre de résultat obtenu
$nb = count($resultats);
// Verification du nombe retourné
if ($nb > 0) {
foreach ($resultats as $line) {
if (count($line)==4) {
// Variable numéro incrémenté
$n++;
//Conversion en majuscule
$letter=strtoupper($line[0]{0});
// Condition
if ($letter != $current_letter && $current_letter!='Concert-Spectacle') {
// Correspondance avec les lettres Maj
if (preg_match('/[A-Z]/',$letter)==0) $current_letter='Concert-Spectacle';
else $current_letter=$letter;
// Affichage des lettres
}
}
}
}
}
define('FICHIER', 'noms.txt');
if (!isset($_POST['valider'])) {
} else {
$resultats =array();
@ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
while (!feof($fp)) {
$line = fgets($fp, 1024);
if (preg_match('|\b' . preg_quote($_POST['mot']) . '\b|i', $line)) {
$resultats[] = $line;
}
}
fclose($fp);
$nb = count($resultats);
$content = file_get_contents("film.txt");
$tmp=explode("\n",$content);
foreach($tmp as $tmp_line) $resultats[]=explode(';',trim($tmp_line));
echo "\n\t\t<table>";
echo "\n\t\t\t<tr><th>Numéro<th>Nom Du Film</th><th>Année</th><th>Genre</th><th>Durée</th></tr>";
echo "nombre ".$nb;
echo "line ".$line;
echo "lettre ".$lettres;
}
?>
Voilou ! et en fait je n'ai pas d'erreur, mais la recherche ne retourne rien, alors qu'avec l'aide d'un formulaire il devrais me retourner le nom recherché

Bonjour,
J'ai un problème avec mon bout de code php, qui ne me retourne pas le résultat souhaité,
Voici le code :
[php]
<?php
$n=0;
function sort_by_name($a,$b) {
$a_alpha = (preg_match('/^[a-zA-Z]/',$a[0])==1);
$b_alpha = (preg_match('/^[a-zA-Z]/',$b[0])==1);
if ($a_alpha && !$b_alpha) return -1;
if ($b_alpha && !$a_alpha) return 1;
return strcasecmp($a[0],$b[0]);
}
$lettres='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
echo "\n\t\t<div id='link'>";
for($i=0;$i<26;$i++) echo "\n\t\t\t<a href='#".$lettres{$i}."'>".$lettres{$i}."</a>";
echo "\n\t\t\t<a href='#Concert-Spectacle'>@</a>";
echo "\n\t\t</div>";
if (!isset($_POST['valider'])) {
//Declaration du fichier
define('FICHIER', 'film.txt');
$results =array();
// Lecture du fichier
@ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
while (!feof($fp)) {
// Récupération de la ligne courante
$ligne = fgets($fp, 1024);
// Caractère spéciaux et expression
if (preg_match('|\b' . preg_quote($_POST['mot']) . '\b|i', $ligne)) {
$resultats[] = $ligne;
}
}
// Fermeture du fichier
fclose($fp);
// On compte le nombre de résultat obtenu
$nb = count($resultats);
// Verification du nombe retourné
if ($nb > 0) {
foreach ($resultats as $line) {
if (count($line)==4) {
// Variable numéro incrémenté
$n++;
//Conversion en majuscule
$letter=strtoupper($line[0]{0});
// Condition
if ($letter != $current_letter && $current_letter!='Concert-Spectacle') {
// Correspondance avec les lettres Maj
if (preg_match('/[A-Z]/',$letter)==0) $current_letter='Concert-Spectacle';
else $current_letter=$letter;
// Affichage des lettres
}
}
}
}
}
define('FICHIER', 'noms.txt');
if (!isset($_POST['valider'])) {
} else {
$resultats =array();
@ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
while (!feof($fp)) {
$line = fgets($fp, 1024);
if (preg_match('|\b' . preg_quote($_POST['mot']) . '\b|i', $line)) {
$resultats[] = $line;
}
}
fclose($fp);
$nb = count($resultats);
$content = file_get_contents("film.txt");
$tmp=explode("\n",$content);
foreach($tmp as $tmp_line) $resultats[]=explode(';',trim($tmp_line));
echo "\n\t\t<table>";
echo "\n\t\t\t<tr><th>Numéro<th>Nom Du Film</th><th>Année</th><th>Genre</th><th>Durée</th></tr>";
echo "nombre ".$nb;
echo "line ".$line;
echo "lettre ".$lettres;
}
?>[/php]
Voilou ! et en fait je n'ai pas d'erreur, mais la recherche ne retourne rien, alors qu'avec l'aide d'un formulaire il devrais me retourner le nom recherché :?