PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » [Résolu] Compter dans un dossier » 02-10-2009 19:52:09

Finalement trouvé ma solution :

<?php

$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 ! big_smile

#2 Re : Forum Général PHP » [Résolu] Compter dans un dossier » 02-10-2009 19:52:09

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 big_smile
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

#3 Re : Forum Général PHP » [Résolu] Compter dans un dossier » 02-10-2009 19:52:09

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


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

#5 Forum Général PHP » [Résolu] Compter dans un dossier » 02-10-2009 19:52:09

Thomas
Réponses : 7

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.

#6 Re : Forum Général PHP » Les pseudos-frames » 24-08-2009 16:03:32

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

#7 Re : Forum Général PHP » Formulaire et $_GET » 22-08-2009 13:19:46

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 ? smile

#8 Re : Forum Général PHP » Formulaire et $_GET » 22-08-2009 13:19:46

mcAllan a écrit :

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 !

#9 Re : Forum Général PHP » Formulaire et $_GET » 22-08-2009 13:19:46

mcAllan a écrit :

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 ?

#10 Re : Forum Général PHP » Formulaire et $_GET » 22-08-2009 13:19:46

C'est bien ce que je pensais, Merci bien ^^

#11 Forum Général PHP » Formulaire et $_GET » 22-08-2009 13:19:46

Thomas
Réponses : 7

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 :

<?php
   connectionbase();
   formulaire();
 if (isset($_GET['recherche']) && $_GET['recherche'] != NULL)
  {
    $recherche = strip_tags(trim(strtoupper(htmlentities($_GET['recherche'], ENT_QUOTES))));  
     $requete = mysql_real_escape_string($recherche);
    $requete = mysql_query("SELECT titre, annee, genre, motcle FROM films WHERE motcle LIKE '%$recherche%' ORDER BY titre ") or exit(mysql_error());
    $nb_resultats = mysql_num_rows($requete);
    if($nb_resultats != 0)
{

  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 ?

#12 Re : Forum Général PHP » Include et $_GET » 12-06-2009 12:44:59

Maljuna Kris a écrit :

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 smile

#13 Re : Forum Général PHP » Include et $_GET » 12-06-2009 12:44:59

Maljuna Kris a écrit :
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

#14 Re : Forum Général PHP » Include et $_GET » 12-06-2009 12:44:59

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 ?

#15 Forum Général PHP » Include et $_GET » 12-06-2009 12:44:59

Thomas
Réponses : 8

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

<?php

  // 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à :

else {
    include('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }

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

Pied de page des forums

Propulsé par FluxBB