Niveau php +++ -> enigme !!

Niveau php +++ -> enigme !! - PHP - Programmation

Marsh Posté le 03-11-2005 à 02:29:12    

Bonjour à tous,
pour la prise de tête d'aujourd'hui voila le procédé !!!
c assez compliqué alors je vais essayer d'etre claire !
 
dans un formulaire avec du javascript j'associe 3 elements grace a un bouton

Code :
  1. <input name="Id_m1" type="hidden" value="0" size=10>
  2. // Id bouton
  3. <input name="id_1" type="hidden" value="0" size=10>
  4. // type d'action effectué sur le bouton  valeur comprise (1,2,3,4,5,6,7)
  5. <input name="t_1" type="hidden" value="0" size=3>
  6. // numéro d'action ( n éme action effectué dans l'ensemble de la page html avec un compteur $i++ a chaque action effectué )  
  7. // si la valeur reste 0 c qu'il ne sait rien passer sur le bouton
  8. // si il y a une action il prend la valeur $i


 
Voila, je pense pas pouvoir etre plus clair,  
il y a 7 boutons du meme type ! ( id_1,id_2,id_3 ... Id_m1,Id_m2....t_1,t_2....)
en fait je voudrais dans mon fichier ne garder que les 3 derniers bouton et savoir quels actions ont été effectué
et resortir toutes les infos id_$i,Id_m$i,t_$i des 3 derniers boutons !
du coup j'ai penser au tableau pour faire des tries mais c le bordel et je vois pas comment faire !!
Voila comment j'ai essayé de faire ma je bloque :

Code :
  1. $ordre=array();
  2. $ar_Idm=array();
  3. $ar_id=array();
  4. if(isset($_POST['t_1'])&& $_POST['t_1']!=0)
  5.  { $t_1=$_POST['t_1'];
  6.  $Id_m1=$_POST['Id_m1'];
  7.  $id_1=$_POST['id_1'];
  8.  $ordre[]=$t_1;
  9.  $ar_Idm[]=$Id_m1;
  10.  $ar_id[]=$id_1;
  11. }
  12. if(isset($_POST['t_2'])&& $_POST['t_2']!=0)
  13.  {
  14.  $t_2=$_POST['t_2'];
  15.  $Id_m2=$_POST['Id_m2'];
  16.  $id_2=$_POST['id_2'];
  17.  $ordre[]=$t_2;
  18.  $ar_Idm[]=$Id_m2;
  19.  $ar_id[]=$id_2;
  20. }
  21. if(isset($_POST['t_3'])&& $_POST['t_3']!=0)
  22.  { $t_3=$_POST['t_3'];
  23.  $Id_m3=$_POST['Id_m3'];
  24.  $id_3=$_POST['id_3'];
  25.  $ordre[]=$t_3;
  26.  $ar_Idm[]=$Id_m3;
  27.  $ar_id[]=$id_3;
  28. }
  29. if(isset($_POST['t_4'])&& $_POST['t_4']!=0)
  30.  { $t_4=$_POST['t_4'];
  31.  $Id_m4=$_POST['Id_m4'];
  32.  $id_4=$_POST['id_4'];
  33.  $ordre[]=$t_4;
  34.  $ar_Idm[]=$Id_m4;
  35.  $ar_id[]=$id_4;
  36. }
  37. if(isset($_POST['t_5'])&& $_POST['t_5']!=0)
  38.  { $t_5=$_POST['t_5'];
  39.  $Id_m5=$_POST['Id_m5'];
  40.  $id_5=$_POST['id_5'];
  41.  $ordre[]=$t_5;
  42.  $ar_Idm[]=$Id_m5;
  43.  $ar_id[]=$id_5;
  44. }
  45. if(isset($_POST['t_6'])&& $_POST['t_6']!=0)
  46.  { $t_6=$_POST['t_6'];
  47.  $Id_m6=$_POST['Id_m6'];
  48.  $id_6=$_POST['id_6'];
  49.  $ordre[]=$t_6;
  50.  $ar_Idm[]=$Id_m6;
  51.  $ar_id[]=$id_6;
  52. }
  53. if(isset($_POST['t_7'])&& $_POST['t_7']!=0)
  54.  { $t_7=$_POST['t_7'];
  55.  $Id_m7=$_POST['Id_m7'];
  56.  $id_7=$_POST['id_7'];
  57.  $ordre[]=$t_7;
  58.  $ar_Idm[]=$Id_m7;
  59.  $ar_id[]=$id_7;
  60. }
  61. // la pour l'instant j'ai uniquement les info sur les boutons ayant eu des actions, je l'ai ai dans un tableau !
  62. // je voudrais les triers $ordre de maniére decroissante pour savoir quel sont les trois derniers elements effectué
  63. rsort($ordre);
  64. // donc il me classe les t_$i dans l'ordre décroissant
  65. // ensuite j'aimerai supprimer les "doublons d'actions" faites sur un meme bouton tous ceux inférieur a t_$imax t_$imax-1 t_$imax-2   
  66. // si je fais  
  67. $ar_id1=array_unique($ar_id);
  68. // donc la je supprime les doublons de boutons mais il ne suit pas l'ordre des 3 dernieres !


 
 je vois pas comment associé 3 array de meme dim et qu'il me trie $ordre avec $ar_id et $âr_Idm
 
 
Aide possible ou trop compliqué ?

Reply

Marsh Posté le 03-11-2005 à 02:29:12   

Reply

Marsh Posté le 03-11-2005 à 09:37:48    

Code :
  1. if(isset($_POST['t_6'])&& $_POST['t_6']!=0)


 
ca ne devrait pas fonctionner correctement çà. Tester si une variable existe et si elle est initialisée au même niveau, ca ne fonctionne pas ;) A moins que PHP soit tres permissif, mais si ta variable n'est pas declarée il va quand la tester.


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 09:47:54    

Bien compliqué tout ça. [:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 03-11-2005 à 09:50:52    

cinocks a écrit :

Code :
  1. if(isset($_POST['t_6'])&& $_POST['t_6']!=0)


 
ca ne devrait pas fonctionner correctement çà. Tester si une variable existe et si elle est initialisée au même niveau, ca ne fonctionne pas ;) A moins que PHP soit tres permissif, mais si ta variable n'est pas declarée il va quand la tester.


 
PHP n'analyse la seconde condition que si nécessaire, donc ce qu'il a écrit fonctionne très bien a priori.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 03-11-2005 à 10:00:33    

C'est ecrit qq part ca. :??:


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:02:38    

sielfried a écrit :

PHP n'analyse la seconde condition que si nécessaire, donc ce qu'il a écrit fonctionne très bien a priori.


 
200% d'accord, et je dirais que oui c'est écrit qquepart, paske non seulement je l'avais djà lu, mais que je l'ai utilisé des 10 aines de fois avec succès.
a chaque traitement que j'ai d'un formulaire, je test tjs en 1 seul "if" si la variable existe et si ça valeur me plait ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 03-11-2005 à 10:04:44    

j'aimerai bien voir les sources. Car je trouve çà bizarre de pouvoir tester une variable qui n'existe pas.


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:06:26    

deux trois trucs tout d'abord au niveau de ton code:
- size dans un hidden c'est pas super utile :/
- ça sert a quoi toutes ces variables :

Code :
  1. $t_1=$_POST['t_1'];
  2. ...
  3. $ordre[]=$t_1;


- vu ce que tu as ecrit toutes tes variables 't_X' sont forcement initialisées vu que tous tes hiddens ont une valeur. Donc le test          $id_1=$_POST['id_1']; est inutile.
 
 
Alors perso moi je ferais des tableaux de parametres dès le html ça serait plus simple:

Code :
  1. <input name="item[1][m]" type="hidden" value="0"/>
  2. <input name="item[1][id]" type="hidden" value="0"/>
  3. <input name="item[1][t]" type="hidden" value="0"/>


Comme ça en php tu recupères directement un tableau de tableau...
Par contre j'ai pas compris ce que tu voulais en faire après!
 
[edit]boulette inside[/edit]


Message édité par anapajari le 03-11-2005 à 10:07:48
Reply

Marsh Posté le 03-11-2005 à 10:19:50    

cinocks a écrit :

j'aimerai bien voir les sources. Car je trouve çà bizarre de pouvoir tester une variable qui n'existe pas.


mais il ne test pas la valeur puisque on te dit qu'il ne regarde la 2eme condition que si la premirer est vrai... et il lit de gauche à droite...
 

Code :
  1. if (isset($toto) && ($toto == 1))


pas d'erreur meme si $toto n'est pas défini
 

Code :
  1. if (($toto == 1) && isset($toto))


un notice si jamais $toto n'est pas définie


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 03-11-2005 à 10:25:38    

cinocks a écrit :

C'est ecrit qq part ca. :??:


 
http://fr.php.net/manual/fr/langua [...] ogical.php
 
Voir parmi les 3-4 plus vieux commentaires. A priori c'est le cas depuis PHP4, au moins.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 03-11-2005 à 10:25:38   

Reply

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

cinocks a écrit :

C'est ecrit qq part ca. :??:


 
c'est écrit par moi :(
 
pour le test  

Code :
  1. if(isset($_POST['t_6'])&& $_POST['t_6']!=0)


ca marche tres bien en local ! et aussi sur serveur  
donc je pense que ca marche tout court
au debut j'avais mis deux boucles puis j'ai essayé une seule et ca marche !
par contre personne n'a repondu a ma question !!!
 
j'ai écrit un nouveau sujet pour trouver mieux poser la question : sujet 79563
 
encore merci
 

Reply

Marsh Posté le 03-11-2005 à 10:46:53    

Xav_ a écrit :

mais il ne test pas la valeur puisque on te dit qu'il ne regarde la 2eme condition que si la premirer est vrai... et il lit de gauche à droite...
 

Code :
  1. if (isset($toto) && ($toto == 1))


pas d'erreur meme si $toto n'est pas défini
 

Code :
  1. if (($toto == 1) && isset($toto))


un notice si jamais $toto n'est pas définie


 
 
Euh tu pourrais de moderer dans le ton.  :pfff:  
 
Tout langage ne fonctionne pas ainsi. Et c'est le premier que je connais qui le fais. Ce n'est pas parce qu'un langage ne verifie pas la seconde condition qu'il ne va pas controler qu'elle est testable. ;)


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:49:24    

sielfried a écrit :

http://fr.php.net/manual/fr/langua [...] ogical.php
 
Voir parmi les 3-4 plus vieux commentaires. A priori c'est le cas depuis PHP4, au moins.


 
Merci pour le lien , je viens de lire la chose. :jap:


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:50:00    

cinocks a écrit :

Euh tu pourrais de moderer dans le ton.  :pfff:


ben heu, dans la mesure où je pense pas l'avoir dit méchament, je vois pas trop ce que je dois modérer, j'ai juste mis un exemple pour que ça soit plus clair...
...je vois pas ce qu'il y a de méchant dans le fait d'illustrer mes propos pas un exemple  :??:  


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 03-11-2005 à 10:51:59    

Xav_ a écrit :

ben heu, dans la mesure où je pense pas l'avoir dit méchament, je vois pas trop ce que je dois modérer, j'ai juste mis un exemple pour que ça soit plus clair...
...je vois pas ce qu'il y a de méchant dans le fait d'illustrer mes propos pas un exemple  :??:


 
 
Merci les louloux,
je corrigerais les boucles if plus tard parce que pour l'instant je lutte depuis deux jours sur ce putain de trie de tableau et j'aimerai avancé !!!
est ce que quelqu'un me comprends ou voit un chemin possible pour trouver une solution ?

Reply

Marsh Posté le 03-11-2005 à 10:52:03    

Citation :

mais il ne test pas la valeur puisque on te dit qu'il ne regarde la 2eme condition que si la premirer est vrai... et il lit de gauche à droite...


 
Ce n'est pas ce que j'appelle un ton jovial. 'puisqu'on te dit que...' ;)


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:54:44    

pour ton probleme, je n'ai rien compris au besoin.


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 10:56:14    

cinocks a écrit :

pour ton probleme, je n'ai rien compris au besoin.


j'ai posté un autre sujet pour le pb !
http://forum.hardware.fr/hardwaref [...] 9563-1.htm

Reply

Marsh Posté le 03-11-2005 à 10:56:42    

 
mais ya pas tout le code  
yen a qui prefere ! alors je laisse les deux

Reply

Marsh Posté le 03-11-2005 à 11:39:55    

cinocks a écrit :

Code :
  1. if(isset($_POST['t_6'])&& $_POST['t_6']!=0)


 
ca ne devrait pas fonctionner correctement çà. Tester si une variable existe et si elle est initialisée au même niveau, ca ne fonctionne pas ;) A moins que PHP soit tres permissif, mais si ta variable n'est pas declarée il va quand la tester.

empty, c'est pas mal non plus, c'est fait exactement pour ça, et c'est plus simple

cinocks a écrit :

Euh tu pourrais de moderer dans le ton.  :pfff:  
 
Tout langage ne fonctionne pas ainsi. Et c'est le premier que je connais qui le fais. Ce n'est pas parce qu'un langage ne verifie pas la seconde condition qu'il ne va pas controler qu'elle est testable. ;)

Me semble que le C et le perl sont comme ça. Pour delphi, je viens de tester, c'est le cas.
En fait, si l'enchainement des conditions est bien pensé par le langage, à partir du moment où on a une condition qu'est pas vérifier avec les diférentes conditions relié par un "AND" alors on a pas besoin de vérifier les autres et on le fait pas. De même pour un "OR", à partir du moment où on en a une qu'est vérifié, on a pas besoin de tester les autres pour savoir que l'ensemble est "vrai".

Message cité 1 fois
Message édité par omega2 le 03-11-2005 à 11:41:39
Reply

Marsh Posté le 03-11-2005 à 12:01:32    

thx


---------------
MZP est de retour
Reply

Marsh Posté le 03-11-2005 à 18:07:16    

cinocks a écrit :

j'aimerai bien voir les sources. Car je trouve çà bizarre de pouvoir tester une variable qui n'existe pas.


Le php c'est pas du C ;) Ne pas l'oublier :) Et les maths boolénnes ça s'oublit pas aussi ;) Et php est logique, si une condition avant une autre est fausse ça retourne false et hop on arrête pas besoin d'aller plus loins ;) Le moins par moins c'est en algèbre pas en logique ;)

Reply

Marsh Posté le 03-11-2005 à 18:16:45    

omega2 a écrit :

empty, c'est pas mal non plus, c'est fait exactement pour ça, et c'est plus simple
Me semble que le C et le perl sont comme ça. Pour delphi, je viens de tester, c'est le cas.
En fait, si l'enchainement des conditions est bien pensé par le langage, à partir du moment où on a une condition qu'est pas vérifier avec les diférentes conditions relié par un "AND" alors on a pas besoin de vérifier les autres et on le fait pas. De même pour un "OR", à partir du moment où on en a une qu'est vérifié, on a pas besoin de tester les autres pour savoir que l'ensemble est "vrai".


 
À part VB (et encore, ils ont peut être arrangé ça pour VB.NET) il ne doit pas y avoir beaucoup de langages où tout est évalué si ce n'est pas nécessaire.
Pour Delphi il y a une option pour tout évaluer (et heureusement elle est désactivée par défaut :D)
 
Pour tout le paquet de code du 1er post, une boucle de 1 à 7 ça aurait pas été plus "simple" que répéter 7x le code avec juste le chiffre qui change ? :o


Message édité par antp le 03-11-2005 à 18:17:39

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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