[PHP] Erreur sur function()

Erreur sur function() [PHP] - PHP - Programmation

Marsh Posté le 10-03-2004 à 11:23:53    

:hello:  :hello:  
 
Bon, petit pb, je debute et là je ne comprend pas pk ça ne fonctionne pas correctement (pas de msg d'erreur, c'est juste qu'il me retourne que ' ')
 

Code :
  1. function get_contenu($val)
  2. {
  3.  if($_GET[$val]=='on')
  4.   {
  5.    return('<table border="0" cellpadding="0" cellspacing="0">');
  6.    $sql = mysql_query('SELECT * FROM resultats');
  7.    while($row = mysql_fetch_row($sql))
  8.     {
  9.      $result=$row[$val-1];
  10.      if(!$result) { $result='&nbsp;'; }
  11.      return('<tr>');
  12.      return('<td nowrap="nowrap">'.$result.'</td>');
  13.      return('</tr>');
  14.     }
  15.    return('</table>');
  16.   }
  17.  else { return('&nbsp;'); }
  18. }


 
Y a quelque chose qui va pas ? :D :D :D

Reply

Marsh Posté le 10-03-2004 à 11:23:53   

Reply

Marsh Posté le 10-03-2004 à 11:27:40    

echo $_GET[$val] pour voir...

Reply

Marsh Posté le 10-03-2004 à 11:29:28    

moi je vote tu te mélanges entre $val paramètre de ta fonction et $_GET['val'] paramètre de ta page ...
C'est après ce genre de boulette que l'on apprend à bien nommer ces variables!

Reply

Marsh Posté le 10-03-2004 à 11:38:33    

function get_contenu($val)  
   {  
      if($val == 'on')  
 
 
as-tu compris la notion de fonction, passage des paramètre par copie et tout ça ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 11:39:58    

Anapajari a écrit :

moi je vote tu te mélanges entre $val paramètre de ta fonction et $_GET['val'] paramètre de ta page ...
C'est après ce genre de boulette que l'on apprend à bien nommer ces variables!


 
 
Nanan t'inkiet :)
En fait cette function fonctionne tres bien, enfin, je devrait parler au passé, bref, je l'appel via un while() (si ça peut aider, je me dit que le pb vient de l'appel de la function...)
 

Code :
  1. $i=1;
  2. while($i<=$col)
  3. {
  4.  print('<td class="Contenu">'.get_contenu($i).'</td>');
  5.  $i++;
  6. }

Reply

Marsh Posté le 10-03-2004 à 11:41:34    

KdZ' a écrit :


 
 
Nanan t'inkiet :)
En fait cette function fonctionne tres bien, enfin, je devrait parler au passé, bref, je l'appel via un while() (si ça peut aider, je me dit que le pb vient de l'appel de la function...)
 

Code :
  1. $i=1;
  2. while($i<=$col)
  3. {
  4.  print('<td class="Contenu">'.get_contenu($i).'</td>');
  5.  $i++;
  6. }




 
Que donnait echo $_GET[$val] ? Comme je te l'ai demandé ?

Reply

Marsh Posté le 10-03-2004 à 11:41:47    

ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI :)
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!
 
[edit:]par ailleurs as tu fais ce que te recommandais hermes, a savoir un print de $_GET['val']???
 
[re-edit:]bon j'ai rien dit


Message édité par anapajari le 10-03-2004 à 11:43:53
Reply

Marsh Posté le 10-03-2004 à 11:42:09    

hermes le messager a écrit :

echo $_GET[$val] pour voir...


 
etrange, ça me donne : offoffon
 
Alors que je devrait avoir 'on' ou 'off' 12x  [:wawash]

Reply

Marsh Posté le 10-03-2004 à 11:43:21    

KdZ' a écrit :


 
etrange, ça me donne : offoffon
 
Alors que je devrait avoir 'on' ou 'off' 12x  [:wawash]  


 
Bien, donc corrige déjà ça... ET on parlera du reste plus tard...  :hello:
 
PS : Evidemment, le echo était bien dans le CORPS de la fonction hein ?


Message édité par Hermes le Messager le 10-03-2004 à 11:44:14
Reply

Marsh Posté le 10-03-2004 à 11:43:41    

Anapajari a écrit :

ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI :))
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!


NON C'EST PAS N'IMPORTE QUOI. C'est toi qui connais pas les fonctions!


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 11:43:41   

Reply

Marsh Posté le 10-03-2004 à 11:43:43    

Anapajari a écrit :

ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI :))
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!


A bon, arf, merci  :jap: Effectivement c tout con, et la doc n'y fait pas réference :o
 
Donc là je suis obliger de tout stoker dans une variable et de faire un return de celle-ci ? y a pas plus simple ?

Reply

Marsh Posté le 10-03-2004 à 11:44:17    

Ah j'ai trouvé ça :
 
4.7.13 return
 
Si appelée depuis une fonction, la commande return termine immédiatement la fonction, et retourne l'argument qui lui est passé. return interromp aussi l'exécution de commande eval ou de scripts.


Message édité par KdZ' le 10-03-2004 à 11:46:31
Reply

Marsh Posté le 10-03-2004 à 11:46:30    

function ispair($n)
    {
    if ($n%2 == 0)
        return true ;
    return false ;
    }
 
pas besoin du else


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 11:46:42    

JagStang a écrit :


NON C'EST PAS N'IMPORTE QUOI. C'est toi qui connais pas les fonctions!


Citation :


D'après http://fr.php.net/manual/fr/function.return.php:
Si appelée depuis une fonction, la commande return() termine immédiatement la fonction, et retourne l'argument qui lui est passé. return() interromp aussi l'exécution de commande eval() ou de scripts.  

Reply

Marsh Posté le 10-03-2004 à 11:47:20    

en gros moi. si la doc en fait pas référence, c'est que ça parait tellement logique. au lieu de if imbriqués, tu test l'erreur et tu retourne l'erreur. bref


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 11:48:09    

JagStang a écrit :

function ispair($n)
    {
    if ($n%2 == 0)
        return true ;
    return false ;
    }
 
pas besoin du else
 


euuuh vas-y explique moi en quoi ça prouve que quand tu fais un return tu sors pas de la fonction, stp!

Reply

Marsh Posté le 10-03-2004 à 11:48:26    

Comment vous feriez alors ?

Reply

Marsh Posté le 10-03-2004 à 11:48:36    

TU SORS de la fonction : relis le post


Message édité par jagstang le 10-03-2004 à 11:49:29

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 11:50:51    

KdZ' a écrit :


Donc là je suis obliger de tout stoker dans une variable et de faire un return de celle-ci ? y a pas plus simple ?


 
Tout stocker dans une variable que tu retournes ensuite est en effet une solution.
 
Mais avant il va falloir que tu trouves pourquoi tu as pas $_GET['val'] à on.

Reply

Marsh Posté le 10-03-2004 à 11:53:24    

JagStang a écrit :

TU SORS de la fonction : relis le post


Euuh c'est marrant je crois qu'on dit la même chose et que c'est toi qui a pas lu le post, parce que relis bien ce que tu as quoté la:

JagStang a écrit :


NON C'EST PAS N'IMPORTE QUOI. C'est toi qui connais pas les fonctions!

Reply

Marsh Posté le 10-03-2004 à 11:54:53    

C'est bon maintenant ça fonctionne tres bien ;)
 
function get_contenu($val)
 {
  $str='';
  if($_GET[$val]=='on')
   {
    $str=('<table border="0" cellpadding="0" cellspacing="0">');
    $sql = mysql_query('SELECT * FROM resultats');
    while($row = mysql_fetch_row($sql))
     {
      $result=$row[$val-1];
      if(!$result) { $result='&nbsp;'; }
      $str=($str.'<tr>');
      $str=($str.'<td nowrap="nowrap">'.$result.'</td>');
      $str=($str.'</tr>');
     }
    $str=($str.'</table>');
   }
  else { $str=('&nbsp;'); }
  return $str;
 }
 
alors voila, par contre, que signifie .= en php ?


Message édité par KdZ' le 10-03-2004 à 11:56:08
Reply

Marsh Posté le 10-03-2004 à 11:58:01    

bin ça te permet d'eviter le code pas beau que tu as ecrit plus haut ;)

Code :
  1. $str.='</tr>';


ça fait la même chose que ton

Code :
  1. $str=($str.'</tr>');


Message édité par anapajari le 10-03-2004 à 11:58:17
Reply

Marsh Posté le 10-03-2004 à 12:30:46    

Citation :


ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI    
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!  


 
tu dis que c'est n'importe quoi que return quitte la fonction, et que c'est moi qui me trompe :o
 
sinon pour la fonction, le $_GET est FAUX !
1) la fonction ne sera pas résutilisable
2) la valeur $val passée n'es pas utilisée. (aucun sens)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 12:31:24    

ah vi c'est bien ce qui me semblait, mais j'etait pas sur, merci ;)

Reply

Marsh Posté le 10-03-2004 à 12:33:00    

JagStang a écrit :

Citation :


ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI    
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!  


 
tu dis que c'est n'importe quoi que return quitte la fonction, et que c'est moi qui me trompe :o
 
sinon pour la fonction, le $_GET est FAUX !
1) la fonction ne sera pas résutilisable
2) la valeur $val passée n'es pas utilisée. (aucun sens)


 
Et pk il est faux ?

Reply

Marsh Posté le 10-03-2004 à 12:41:56    

parce que tu dois utilise la variable de la fonction, et pas le $_GET[''] de la page...  
 
1) comprends-tu le concept de fonction et de passage des paramètres par copie ?
 
avec $_GET tu vas chercher les paramètres de la page, rien à voir avec ceux de la fonction.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 12:55:39    

Je c'est :o
 
En fait ce que je fait, je verifie si $_get[x]=='on' où x correspond a la valeur pasée dans la fonction().
 
Ok ? ;)
 
Edit : x est forcement present dans l'url, car control, else header() avec les bon params dans l'url.
D'ou l'oublie volontaire des isset() or empty() ;)


Message édité par KdZ' le 10-03-2004 à 12:56:56
Reply

Marsh Posté le 10-03-2004 à 12:57:12    

non. tu dois faire $val pour atteindre la valeur passée dans la fonction :o :o


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 12:57:22    

j'abandonne


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 13:02:50    

Donne moi la ligne qui te pose pb.
 
Et voila la page, tu comprendras peut etre mieux : http://www.marathoncotedamour.com/pages/resultats.php

Reply

Marsh Posté le 10-03-2004 à 13:10:19    

ce qui me pose problème, c'est que ta fonction n'est _PAS_ réutilisable. car elle utilise des paramètres AUTRES que ceux de la fonction elle-même. pour le reste, tu fais ce que tu veux. mais moi j'appelle pas ça une fonction.
 
je comprends très bien que tu utilises les param en GET. mais bon voilà.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 13:14:30    

Ah bon... si tu'ldis ;)

Reply

Marsh Posté le 10-03-2004 à 13:28:48    

bon en voyant ta page on comprends mieux ce que tu veux faire, et donc pour moi tu es parti dans une mauvaise direction:
si j'ai tout compris, tu souhaites afficher ou non des colonnes de dans un tableau en fonction de paramètres ( ce tableau étant rempli par des enregistrements d'une bdd).
 
Alors perso:
1- tu changes le nom de tes paramètres à on&off. 1,2,... ça a jamais été des noms de variables valables. ( par exemple col1, col2 ... c'est déjà mieux, temps que tu y es fait commencé par col0)
2- tu conditionnes les champs remontés par ta requete en fonction des paramètres

Code :
  1. $fields=('champs1', 'champs2' ...); // tu remplaces par le nom des colonnes de ta table
  2. // tu tries en fonction des paramêtres
  3. for($i=0; $i<count($fields); $i++)
  4. {
  5.   if ( $_GET['val'.$i] != 'on'){ $fields[$i] = "'&nbsp;'";}
  6. }
  7. // tu fais ta requete
  8. $query = "select".implode(',', $fields)."....";
  9. // et tu fais le même traitement tout le temps à partir de la


pas besoin de fonction rien et c'est plus clair ( à mon sens), mais j'attends l'avis des experts.
 
ps pour JagStang: j'ai toujours pas compris si on était d'accord sur le fait que return sort de la fonction :o


Message édité par anapajari le 10-03-2004 à 13:29:10
Reply

Marsh Posté le 10-03-2004 à 14:17:14    

>> anapajari : j'ai toujours dit que le return sort de la fct. tu le fait exprès ou quoi?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 14:20:26    

JagStang> t'énerves pas, j'ai bien fini par comprendre qu'on disait la même chose, mais toi non ;)
Parce que quand je dit:

Anapajari a écrit :

ptain j'ai même pas vu mais ......... C'EST N'IMPORTE QUOI :)
 
quand tu fais un return tu sors de ta fonction, le code en dessous est pas executé!!!


c'est pourtant clair que "quand tu fais un return, tu sors de la fonction".  
Et sur ce tu me réponds que je connais pas les fonctions, ça me surprend.

Reply

Marsh Posté le 10-03-2004 à 14:23:09    

je vois la malentendu en effet. tu as l'air tout étonné (!!!) que le code ne soit pas exécuté.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-03-2004 à 14:38:08    

Oula, ouai, le pb c'est qu'etant debutant j'ai plein de code, alors  qu'un peu de connaissances, permet de reduire considerablement le code :/
 
J'ose meme pas te montrer de quoi il retourne :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed