Problème conditionnel ?
Posté : 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 :

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é