Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1461 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] fonction: probleme de debutant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] fonction: probleme de debutant

n°1699196
kmikz
Posté le 08-03-2008 à 00:45:15  profilanswer
 

bonjour,
 
je débute en PHP et j'ai quelque souci pour une fonction:
je souhaite créer une fonction qui vérifie si un "nom" est présent dans un tableau et si c'est le cas renvoi la ligne du tableau où est présent le nom.
 
Voici le tableau dans lequel les recherches sont faites:
 

Citation :

<?php
$carnet = array( array("nom"=>"Durand", "prenom"=>"Pierre",
         "tel"=>"0101010101", "ville"=>"Paris" ),
   array("nom"=>"NGuyen", "prenom"=>"Olivier",
         "tel"=>"0606060606", "ville"=>"Lyon" ),
   array("nom"=>"Martin", "prenom"=>"Jeanne",
         "tel"=>"0404040404", "ville"=>"Marseille" ),
   array("nom"=>"Dubois", "prenom"=>"Martin",
         "tel"=>"0600000000", "ville"=>"Paris" ),
   array("nom"=>"Phan", "prenom"=>"Michele",
         "tel"=>"0100000000", "ville"=>"Paris" ),
   array("nom"=>"Duduche", "prenom"=>"Marie",
         "tel"=>"0505050505", "ville"=>"Bordeaux" ),
   array("nom"=>"Dupond", "prenom"=>"Youssouf",
         "tel"=>"0611111111", "ville"=>"Marseille" ),
   array("nom"=>"Delamarre", "prenom"=>"Abdel",
         "tel"=>"0411111111", "ville"=>"Lyon" ) );
?>


 
Et voici mon 'script' php qui ne marche pas:

Citation :

<?php
 
  include("carnet.inc" );
   
 
  function tab_php_to_xhtml ($ligne)          //retourne la ligne du tableau en xhtml
  {
   return "<table><tr> <td>".$ligne['nom']."</td> <td>".$ligne['prenom']."</td> <td>".$ligne['tel']."</td> <td>".$ligne['ville']."</td></tr></table>";
  }
                echo tab_php_to_xhtml($carnet[0]);   //affiche la premiere ligne du tableau.
 
 
 function ligne_du_nom($n)                //devrai retourner la ligne où se trouve le nom passer en argument
  {
 
   for ($i=0;$i<8;$i++) {
    if ($n==$carnet[$i]['nom'])   { return tab_php_to_xhtml($carnet[$i]); }
   }
 
  }
   
   echo ligne_du_nom("Durand");       //n'affiche rien.....


 
 
 
Je ne vois pas où est mon erreur dans la 2eme fonction?...
 
Merci d'avance :) .

mood
Publicité
Posté le 08-03-2008 à 00:45:15  profilanswer
 

n°1699199
babasss
Posté le 08-03-2008 à 02:03:14  profilanswer
 

un petit "GLOBAL $carnet;" au début de chaque fonction serait le bienvenue....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1699210
CyberDenix
Posté le 08-03-2008 à 09:28:29  profilanswer
 

Les GLOBAL c'est le mal, mais babasss à raison sur le fond, la variable $carnet n'est dans tes fonctions, ni passée en paramètre, ni déclarée... et donc inconnue.


---------------
Directeur Technique (CTO)
n°1699228
babasss
Posté le 08-03-2008 à 11:22:31  profilanswer
 

A la place de mettre GLOBAL, tu peux trés bien faire :

Code :
  1. include("carnet.inc" );
  2.  
  3.  function tab_php_to_xhtml ($ligne)          //retourne la ligne du tableau en xhtml
  4.  {
  5.   return "<table><tr> <td>".$ligne['nom']."</td> <td>".$ligne['prenom']."</td> <td>".$ligne['tel']."</td> <td>".$ligne['ville']."</td></tr></table>";
  6.  }
  7.  
  8. echo tab_php_to_xhtml($carnet[0]);   //affiche la premiere ligne du tableau.
  9.  
  10. function ligne_du_nom($n,$carnet)                //devrai retourner la ligne où se trouve le nom passer en argument
  11.  {
  12.   for ($i=0;$i<8;$i++) {
  13.    if ($n==$carnet[$i]['nom'])   { return tab_php_to_xhtml($carnet[$i]); }
  14.   }
  15.  }
  16.  
  17.   echo ligne_du_nom("Durand",$carnet);       //n'affiche rien.....



---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1699360
kmikz
Posté le 08-03-2008 à 19:39:34  profilanswer
 

Merci pour vos réponses :) .
 
Je comprend un peu mieux les fonction (ou plutôt les déclarations de variables) en PHP maintenant .  
 
Juste une question pourquoi doit on éviter d'utiliser global ?  

n°1699402
leflos5
On est ou on est pas :)
Posté le 08-03-2008 à 22:12:05  profilanswer
 

Parce que global comme son nom l'indique c'est le scope global (dispo partout dans le code bien entendu sauf dans les fonctions/classes).
 
Donc ton problème c'est que la variable n'était pas accessible. Maintenant tu modifies son contenu dans la fonction mais donc dans le reste. Pour une variable dans un contexte particulier ça passe. Si t'as des classes, des fonctions de partout c'est vite le bordel!
 
Et conceptuellement, tu passes un paramètre à une fonction, elle trifouille se qu'elle doit faire et tu récupères ce qu'elle te renvoit. Les modif de pointeurs, références et autres tripotages de l'existant dans un petit coin sombre, c'est les bugs qui arrivent, la fête aux effets de bords ;)
 
Donc essaye de faire propre. A la limite parfois une classe vaut mieux qu'un global, t'accèdes aux propriétés de partout ;)
 
 
Après un cas d'exception peut nécessiter une mesure d'exception ;)

n°1699571
kmikz
Posté le 09-03-2008 à 19:45:15  profilanswer
 

Merci pour ce petit cour théorique c'est beaucoup plus clair maintenant :) .


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] fonction: probleme de debutant

 

Sujets relatifs
problème wmode ou z-index avec firefoxMetaprogrammation: Comment détecter si une fonction existe ou pas
Problème de connection Oracle depuis ASPErreur de code en PHP
Problème d'accent avec Net::FTP[PHP] Formulaire + transfert de données par post + codage de porc
[PHP] génération d'un pdf (pas une impression de page)PHP envoyer un RDV sur Outlook
javascript: problème avec des chaines qui contiennent du phpDebug d'une fonction de validation
Plus de sujets relatifs à : [PHP] fonction: probleme de debutant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR