Recherche selective dans une chaine

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 : Recherche selective dans une chaine

par bunk » 07 nov. 2005, 19:33

ben en fait je suis trop null!

ca marche comme ca :
<p class="unnamed1"><span class="unnamed1">Pages -
<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

if ($page == 'accueil.php') {
echo '<strong>1 </strong>&middot; ';
} else {
echo '<a href="accueil.php">1 </a>&middot; ';
}
?>

<?php
// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");
$i2 = 1;

$nb_files = sizeof($files);
for($i= ($nb_files -1); $i > 0; $i--) {
$i2 = $i2 +1;

// Condition
if ($page != $files[$i]) {

// Affichage du lien
echo '<a href="' . $files[$i] . '">' . $i2 . '</a>' . ' &middot; ';
// Sinon on l'affiche en gras
} else {
echo '<strong>' . $i2 . '<strong>' . ' &middot; ';
}
}

?>
</span></p>
Merci a vous!

par bunk » 07 nov. 2005, 18:09

Personne n'aurait une idée de comment je peux supprimer le premer resultat de le boucle for ?

merci

par bunk » 07 nov. 2005, 17:03

en fait je ne comprend pas quelques choses (rami) pourquoi quand je n'utilise pas la variable $files[$i] dans le nom du lien il m'affiche la premiere page (en réalité le chiffre 1) en prenant pour lien la page courante ?

voila le code :
<p class="unnamed1"><span class="unnamed1">Pages -
<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

if ($page == 'accueil.php') {
echo '<strong>1</strong>';
} else {
echo '<a href="accueil.php">1</a>';
}
?>

<?php
// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");
$i2 = 0;

$nb_files = sizeof($files);
for($i= $nb_files; $i > 0; $i--) {
$i2 = $i2 +1;

// Condition
if ($page != $files[$i]) {

// Affichage du lien
echo '<a href="' . $files[$i] . '">' . $i2 . '</a>' . ' &middot; ';
// Sinon on l'affiche en gras
} else {
echo '<strong>' . $i2 . '<strong>' . ' &middot; ';
}
}

?>
</span></p>
D'avance merci[/code]

par bunk » 07 nov. 2005, 16:35

autant pour moi, la page accueil.php etait presente car j'avais renommer un fichier en accueil-4.php

par bunk » 07 nov. 2005, 16:11

en fesant des test je me rend compte maintenant que la page accueil.php est maintenant compté dans la boucle alors que d'apres mon dernier post elle n'y figuré pas, pour le nom du lien en fait il faudrait que j'utilise le $nb_files - 1 et que je l'affiche a l'enver, faut il refaire une deuxième boucle for pour faireca ?

voila le code :
<p class="unnamed1"><span class="unnamed1">Pages -
<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

if ($page == 'accueil.php') {
echo '<strong>1</strong>';
} else {
echo '<a href="accueil.php">1</a>';
}
?>

<?php
// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");

$nb_files = sizeof($files);
for($i= $nb_files; $i > 0; $i--) {
// Affichage du tableau
if ($page != $files[$i]) {

// Affichage du tableau
echo '<a href="' . $files[$i] . '">' . $files[$i] . '</a>' . ' &middot; ';
// Sinon on l'affiche en gras
} else {
echo '<strong>' . $files[$i] . '<strong>' . ' &middot; ';
}
}


?>
</span></p>
Merci

par bunk » 07 nov. 2005, 14:41

Alors j'ai modifié un peu, je comprend le principe, mais je suis pas a l'aise avec le for, maintenant il me faut supprimer le dernier &middot; qui ne serta rien. Mais aussi je suhaiterais remplacer le nom des fichiers par une numérotation, est il possible d'utiliser le compteur deja présente et de l'inverser pour le réutilise ensuite ?

voila le code :
<p class="unnamed1"><span class="unnamed1">Pages -
<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

if ($page == 'accueil.php') {
echo '<strong>1</strong>';
} else {
echo '<a href="accueil.php">1</a>';
}
?>

<?php
// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");

$nb_files = sizeof($files);
for($i= $nb_files; $i > 0; $i--) {
// Affichage du tableau
if ($page != $files[$i]) {

// Affichage du tableau
echo '<a href="' . $files[$i] . '">' . $files[$i] . '</a>' . ' &middot; ';
// Sinon on l'affiche en gras
} else {
echo '<strong>' . $files[$i] . '<strong>' . ' &middot; ';
}
}


?>
</span></p>
ce qui donne "graphiquement" :

Code : Tout sélectionner

Pages - 1 · accueil55.php · accueil5.php · accueil4.php · accueil3.php · accueil2.php · accueil1.php ·
donc en fait je voudrais que a la place de accueil55.php il est le chiffre 2, d'ou ma question plus haut

Merci

par rami » 07 nov. 2005, 14:20

Avec glob(), tu n'as pas besoin d'ouvrir une ressource sur un répertoire. En ce qui concerne le reste, tu peux t'en sortir ainsi:
<p class="unnamed1"><span class="unnamed1">Pages -

<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");

$nb_files = sizeof($files);
for($i= $nb_files; $i > 0; $i--)
// Affichage du tableau
echo '<a href="' . $files[$i] . '">' . $files[$i] . '</a>' . ' &middot; '; ]

//on l'affiche en gras
echo '<strong>' . $files[0] . '<strong>' . ' &middot; '; 
}

?>
</span></p>
Dis moi si ca te convient, ou si tu ne comprends pas ;)

par Invité » 07 nov. 2005, 13:30

alors voila en fait j'arrive bien a utiliser le fonction glob() mais j'ai d'autre problèmes et je pense pas être super logique. Je sais que ca serait plus simple de faire une seulle page pour faire ce que je veux mais je voudrais y arriver de cette facon.

Voila le code :
<p class="unnamed1"><span class="unnamed1">Pages -

<?php
// Variable qui recupere le nom de la page courante
$page = basename($_SERVER["PHP_SELF"]);

// Ouverture du dossier ./
$rep = opendir('./');

// Lecture du dossier ( fonction glob() ) n'affiche que ce qui commence par accueil*.php
$files = glob("accueil*.php");

// Mise en forme dans un tableau
foreach ($files as $filename)

// Si la page courante est != d'une page dans $filename
// On l'affiche en lien
if ($page != $filename) {

// Affichage du tableau
echo '<a href="' . $filename . '">' . $filename . '</a>' . ' &middot; '; // A rempacer $files[0]

// Sinon on l'affiche en gras
} else {
echo '<strong>' . $filename . '<strong>' . ' &middot; '; // A rempacer $files[0]
}

// Fermeture du dossier
closedir($rep);
?>
</span></p>
Donc pour le moment il m'affiche :

Code : Tout sélectionner

Pages - accueil.php · accueil1.php · accueil2.php · accueil3.php · accueil4.php · accueil5.php · accueil55.php ·
donc en fait j voudrais faire plusieurs choses :

* exclure $files[0] car toujours == a accueil.php
* afficher des chiffres des pages a la place des nom de fichiers (sachant que accueil.php == 1)
* inverser les liens, c'est a dire que si dans mon dossier j'ai :
  • accueil1.php
    accueil2.php
    accueil3.php
    accueil4.php
    accueil5.php
    accueil6.php
Je voudrais que la page accueil1.php soit toujours a la dernière position dans mes liens


Je sais pas si c'est très clair, a votre avis c'est réalisable ?

D'avance merci

par bunk » 07 nov. 2005, 12:15

Je connaissais pascette fonction, je pense que c'est résolu je vais voir ce que je peux faire !

Merci

par rami » 07 nov. 2005, 12:07

La fonction glob() est faite pour ca:
<?php
$files = glob("page*.php");
foreach ($files as $filename) 
   echo $filename.'<br />';

?> 

Recherche selective dans une chaine

par bunk » 07 nov. 2005, 11:48

Bonjour,

Voila ce que je cherche a faire :

Je regarde le contenu d'un dossier qui me retourne (echo) la liste complete des fichiers sous la forme :

page2.php
page44.php
test.txt
exemple.com

voila le code :
$rep = opendir('./');

while ($file = readdir($rep)) {

echo $file . "<br>";

}

closedir($rep);
Je voudrais ensuite ne retenir que les fichiers qui porte le nom pageX.php (de mon exemple) sans le .php, je pense qu'il faut que je fasse un tableau dans ma boucle ?

Je sais pas trop comment m'y prendre

Pouez vous me conseiller ?

D'avance merci