Problème conditionnel ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème conditionnel ?

par Dexion » 29 août 2008, 16:44

Bonjour,

Oui j'avais déjà regardé dans ce sens là et mes variables ne sont pas vide par exemple pour une recherche de star **** l'intégrale ( je sais pas si on peux cité )
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>";

Pour $nb => j'obtiens bien le nombre 6 ( le nombre de résultat trouvé ), Donc oui c'est bien supérieur mais je ne rentre pas dans le premier If

Pour $line ==>j'obtiens la dernière ligne complète de fin fichier, donc il a bien une taille de 4 vu que la ligne retourné est complète mais je ne rentre pas dans le premier If

Pour $lettre ==> j'obtiens toute les lettres de l'alphabet
Pour $curent_letter ==> il ne contient rien du tout ^^

Pour resultats ==> Un Array

Voilou pour les variables.

par Ryle » 27 août 2008, 11:17

Bah commence peut être déjà par vérifier le comportement de ton code :)

Que contient $nb ? est-ce supérieur à 0 ? est ce que tu rentres bien dans le premier if() ?
Que contient $line ? a-t-il bien une taille de 4 ? est-ce que tu rentres dans le if() ?
Que contient $lettre ? Que contient $current_letter lors de la première itération ?
etc.

Problème conditionnel ?

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é :?