IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Quelques pistes pour exercices PHP [Fait]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Quelques pistes pour exercices PHP
    Je ne sais pas si je suis sur le bon forum. Si non, pourriez vous m'indiquer la rubrique appropriée?

    En attendant je vous soumet mon problème. Je suis étudiant et je n'arrive pas à saisir certains concepts de mes exercices.

    1°) Ecrire un script qui, suivant les arguments qui lui sont passés, affiche les choses suivantes :

    * S'il n'y a aucun arguments, il affiche 'Z\n'
    * S'il a un argument, il affiche 'E\n'
    * S'il y a plus d'un argument, il affiche 'R\n'

    Exemple :

    $> ./exo01.php a simple test
    Z
    $>

    Là, mon problème c'est que.... Je ne sais pas comment faire. Si il s'agissait de comparer un chiffre supérieur à 0, inférieur à 0, égal à 0 oui. Mais là il s'agit de comparer L'EXISTENCE d'arguments. Je ne vois pas comment.


    2°) Ecrire un script qui reçoit 2 paramètres de type 'INTEGER'. Le script affiche ensuite sur la sortie standard le résultat de la comparaison des 2 arguments.

    * 'Inferior' si Arg1 < Arg2
    * 'Equal' si Arg1 = Arg2
    * 'Superior' si Arg1 > Arg2

    Exemple:

    $> ./exo02.php 42 42
    Equal
    $>
    $> ./exo02.php 1 42
    Inferior
    $>

    Là c'est plus simple, il suffit simplement de comparer arg1 et arg2. Oui mais comment parler en ligne standard? Si il s'agissait de modifier des variables internes ça irait, mais là il s'agit de donner la valeur de ces variables depuis la ligne de commande et non pas à l'intérieur du programme. Comment dire au programme que la variable arg1 ou arg2 a telle ou telle valeur, sans rentrer dans le programme lui-même?

    Dernière chose, pour m'aider dans un autre exercice, on m'a donné cette fonction:

    function GetNextLine()
    {
    $line = rtrim(fgets(STDIN));
    if (feof(STDIN))
    return (false);
    return ($line);
    }

    ?>

    Seulement je n'arrive pas du tout à la lire. De quoi est-il question exactement svp.

    Merci d'avance pour vos conseils.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Je ne vais pas faire tes devoirs, mais simplement t'orienter vers les bonnes ressources.

    Pour manipuler les arguments en PHP tu as à ta disposition (comme en C) les variables suivantes : argc (nombre d'arguments) et argv (tableau d'arguments).
    Afin de comprendre comment cela fonctionne, lis la documentation et fait quelques var_dump !

    Concernant la méthode que tu as donné "GetNextLine", tu peux également regarder la doc pour les appels que tu ne comprends pas ... mais la traduction de son nom t'aidera

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Le script affiche ensuite sur la sortie standard le résultat de la comparaison des 2 arguments.

    * 'Inferior' si Arg1 < Arg2
    * 'Equal' si Arg1 = Arg2
    * 'Superior' si Arg1 > Arg2

    Exemple:

    $> ./exo02.php 42 42
    Equal
    $>
    $> ./exo02.php 1 42
    Inferior
    $>

    Là c'est plus simple, il suffit simplement de comparer arg1 et arg2. Oui mais comment parler en ligne standard? Si il s'agissait de modifier des variables internes ça irait, mais là il s'agit de donner la valeur de ces variables depuis la ligne de commande et non pas à l'intérieur du programme
    La sortie standard = ecran.
    Donc suffit dans ton programme de faire un echo "inferior" par exemple. Quand tu fait un ./exo02.php 1 42 tu ne fait qu'appeler le script php interpreter par l executable de php sans passer par un navigateur.
    Faut pas te laisser perturber par l aspect ligne de commande.

    Voir également http://fr.php.net/manual/fr/features.commandline.php pour un peu d'aide (y'a en gros toutes les réponses à tes exos )
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    J'ai réussi à entrer les arguments dans le programme, mais je ne sais pas comment les utiliser.

    <?php
    echo "Script: '" . $_SERVER['argv'][0] . "'\n";
    echo "Argument 1: '" . $_SERVER['argv'][1] . "'\n";
    echo "Argument 2: '" . $_SERVER['argv'][2] . "'\n";
    ?>

    Ok, mais supposons que j'attribue en ligne de commande une valeur à Argument 1 et Argument 2, comment le scomparer? Avec une condition IF j'imagine, mais je ne sais pas comment récupérer les valeurs choisies.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Est-ce que le script fourni ci-dessus fonctionne ? Qu'est-ce qui s'affiche quand tu exécutes ton code avec des valeurs de variables ?

    Tu peux lire ceci : http://fr.php.net/manual/en/reserved.variables.argv.php et tu verras que $argv est un tableau contenant les valeurs de tes arguments.

    Pour le reste il est impossible de t'aider plus sans faire entièrement ton exercice qui est très simple ... Tu as vraiment toutes les billes en main, désormais c'est à toi de chercher.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    L'exercice 1 à pour but de te faire utiliser $_SERVER['argc'] qui contient le nombre d'argument.
    Un simple if,elseif,else avec un echo en fonction du cas et c'est fini.

    L'exercice 2 quant à lui te fait utiliser $_SERVER['argv'] qui est un tableau de tes arguments.
    Encore une fois une simple succession de if/else avec un echo est la réponse au problème.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [SRC] Cherche piste pour TLabel orientable
    Par Kaejar dans le forum C++Builder
    Réponses: 16
    Dernier message: 08/06/2005, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo