Vous n'êtes pas identifié(e).
Pages : 1
Finalement trouvé ma solution :
$list=array();
foreach (glob('/critique/*.php') as $files ) {
$files=basename($files, ".php");
$files=substr($files, 0,3);
$list[] = $files;
natcasesort($list);
}
$nombre=array_count_values($list);
print_r($nombre);
?>
C'etait tout bête !
C'est pas mieux...
En fait dés qu'il a finit une série de ficheirs, il me l'a rajoute a la prochaine passe, c'est pour ca qu'a la fin j'avais l'impression que c'etait mieux
ca donne donc : Array ( [aab] => 9) et ensuite il rajoute Array ( [aab] => 9 [aac] => 32) ainsi de suite...
Il faudrait arriver a "différencier" une série d'une autre, si les 3 premiers mots sont identiques on les compte jusqu'à temps qu'on en trouve, après on passe a la série suivante
Merci bien pour ta réponse je vais m'empresser de tester ca.
Sinon j'avais commencé dans le bon sens, peut être pas aussi bien optimisé.
Je re-edit, car ton code me compte tout les fichiers
En adaptant ton code et le mien j'arrive a ca
<?php
$list=array();
foreach (glob('/critique/*.php') as $files ) {
$files=basename($files, ".php");
$files=substr($files, 0,3);
$list[] = $files;
natcasesort($list);
if(!isset($compte[$files])) {$compte[$files]=0;}
$compte[$files]++;
print_r($compte);
}
?>
Là, il m'affiche des kilometres de lignes pour chaque fichier, il associe tous les fichiers du dossier.
Seule la derniere "passe" me compte valablement pour chaque ensemble de fichier le nombre exact avec comme resultat
Array ( [aab] => 9 [aac] => 32 [aad] => 12
Oui c'est toujours le cas, j'ai vérifié.
Bonjour, j'aimerais compter le nombre de fichiers dans un dossier (jusque là rien de bien compliqué) mais en fonction du nom qu'il porte.
Je m'explique :
J'ai un dossier /critique/ avec a l'intérieur plusieurs fichiers dont en général les 3 premières lettres sont les mêmes, du genre aab1, aab2, aab3, abb1, abb2, abb3...
J'aimerais compter chaque "série" de fichier séparément, sachant que les fichiers sont amenés a s'accroitre
exemple dans un array :
aab >12
abb>8
...
Une solution était de faire un glob sur chaque début de mon fichier et faire un count ensuite, mais c'est trop lourd.
Je ne sais pas si c'est faisable ou non. Je suis preneur de toute nouvelle idée.
Les pages en index.php?page=news ne sont pas ou très mal referencées si tu veux un meilleur taux il faut faire de l'url rewriting derriere
Dans un même genre d'idée j'aimerais afficher les mots clés d'un film sur chacune de mes pages (films), mais au lieu de recopier xx fois la même requete sur chacune de mes pages en ne changeant que l'id du film, j'aimerais savoir si c'est possible de faire :
- un array avec "l'id" du film, avec sa correspondance "lien"
et
- en fonction de la page adapter <b>une seule</b> requête
arrayfilms.php
Ex : ("SELECT id, titre, lien FROM films")
Je mets en array pour avoir
$array['id]['lien']
1 = films/Star-Wars.php
2 = films/Le-seigneurs-des-anneaux.php
....
Après j'execute la requete en fonction de l'id (qui changera, en fonction de la page)
("SELECT id, titre FROM films LEFT JOIN mot_association ON films.id = mot_association.films_id WHERE films.id=$array['id']
dans ma page Star-Wars.php
dire je suis dans la page Star-Wars.php donc l'id = 1
et executer la requete sql
En gros avoir le moins de code possible sur ma page film, mais surtout n'avoir <b>qu'une seule requete.</b>
Mais je me complique peut etre la tête, il y a peut être plus simple ?
Du moment que tu fait une requête SQL tu dois la sécuriser.
mysql_real_escape_string convient très bien là.
Par contre tu fait :
$requete = mysql_real_escape_string($recherche);
Ne serai-ce pas plutôt :
$recherche = mysql_real_escape_string($recherche);
??
Oui parfaitement, je corrige ca, merci bien !
Salut,
Thomas a écrit :J'ai utilisé mysql_real_escape_string, mais j'ai cru comprendre que ce n'est utilisé que quand on ajoute des données dans une base
Absolument pas, tu risque une injection SQL même avec un select.
Donc je le laisse.
Mais si je fais un simple affichage avec une requete sql je dois aussi l'utiliser ? Comment je peux securiser un peu plus ?
C'est bien ce que je pensais, Merci bien ^^
Voila je fais un moteur de recherche a partir d'un formulaire qui va regarder dans une base de données et affiche les résultats trouvés.
Voila le code :
echo '<p>Résultats de votre recherche.</p>';
echo 'Il y a <b>'.$nb_resultats.'</b> :';
if($nb_resultats > 1) { echo ' <b>résultats </b>'; } else { echo ' <b>résultat</b>'; }
echo "<br></br><br></br>";
while($resultat = mysql_fetch_assoc($requete))
{
echo ''.$resultat['titre'].' - '.$resultat['annee].' - '.$resultat['genre'].'' ;
echo "<br></br>";
}
else
{
echo '<p>Pas de résultats</p>';
echo '<p>Nous n\'avons trouvé aucun résultat pour la requête <b>'.$recherche.'</b>. Réessayez avec un autre terme.</p>';
}
mysql_free_result;
fermerbase();
}
}
J'aimerais savoir si a partir des $_GET c'est (déjà) correct et assez sécurisé, sachant que le paramètre est passé en url en fonction de la recherche
J'ai utilisé mysql_real_escape_string, mais j'ai cru comprendre que ce n'est utilisé que quand on ajoute des données dans une base, c'est superflu ?
Le problème de ce genre de situation c'est qu'il faut éviter de donner trop d'infos à d'éventuels hackers, tout en soignant les vrais clients.
Il faut réfléchir, dans quelles conditions un internaute franc du collier peut-il se retrouver à demander l'affichage d'une page inexistante ou non autorisée ?
Normalement il peut pas, ca sera forcément l'internaute qui devra taper le nom a la suite de la page. Après tous les utilisateurs ne sont pas aussi "lambda" que ca, je le sais
Thomas a écrit :Comme solution temporaire j'ai supprimé juste cette partie et ca marche très bien, mais est ce que c'est bon quand même ?
Ça marche très bien, c'est à dire ?
Que se passe-t-il si quelqu'un saisit une nom de page qui n'existe pas ?
Si quelqu'un veut afficher index.php?page=blablabla la requête ne s'exécute pas, il ne se passe rien, la page ne change pas je n'ai pas non plus de message d'erreurs. C'est comme si j'ouvrais index.php
Pourquoi on n'est pas obliger d'inclure une page, on ne pourrais pas faire une sorte d'echo en disant "cette page n'existe pas" ou alors rediriger vers une autre page du site
Maljuna Kris > C'est vrai c'est pas forcément clair, mais bon je pense avoir compris
Alnoss>En fait ce que je voulais dire plutôt : c'est que si quelqu'un essaye d'inclure une autre page (qui n'est pas dans le array) ca va m'inclure la page accueil.php (qui elle sera définie par contre)
Comme solution temporaire j'ai supprimé juste cette partie et ca marche très bien, mais est ce que c'est bon quand même ?
Bonsoir,
j'ai lu l'article http://www.phpdebutant.org/article68.php de bout en bout et je cale sur la dernière partie du code
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('news' => 'news.php',
'accueil' => 'accueil.php');
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]); // Nous appelons le contenu central de la page
} else {
include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau
}
?>
je ne comprends pas cette partie là :
Le commentaire indique quand elle n'existe pas dans le tableau, mais là elle a bien ete définie....
Donc en gros si j'essaye de faire index.php?page=blabla il doit m'inclure la page "accueil.php"
Seulement moi il la met tout le temps, il n'y aurait pas une manière de faire une redirection vers une autre page plutot qu'un include ?
Merci pour votre aide
Pages : 1