pb recup tableau php en javascript

pb recup tableau php en javascript - HTML/CSS - Programmation

Marsh Posté le 15-06-2006 à 09:31:54    

bonjour,
 
j'ai un tableau créé en php.
 
print_r($tab) donne : Array ( [61] => 4 [62] => 4 [63] => 4 [64] => 2 [65] => 2 [66] => 4);
 
lorsque je clique sur une case du tableau je veut changer la valeur de la case du tableau. et ensuite je veus pouvoir le récupérer dans le php pour pouvoir y afficher les valeurs.
 
Comment je peus le faire?

Reply

Marsh Posté le 15-06-2006 à 09:31:54   

Reply

Marsh Posté le 15-06-2006 à 09:40:30    

En fait il faut que que tu récupéres dans une variable la nouvelle valeur entrée : cette variable peut soit être un input hidden, soit être un input text, puis tu dois valider ton formulaire pour envoyer les valeurs des variables au serveur et donc y accéder grâce à $_POST, tu me suis?

Reply

Marsh Posté le 15-06-2006 à 10:00:42    

Voilà j'ai défini mon input hidden:  

Code :
  1. echo "<input type=hidden name=\"change\">";


 
Dans ma fonction changecouleur je fais :

Code :
  1. function changecouleur(obj){
  2.  obj.style.background="#007FFF";
  3.  var casier=obj.id+"/";
  4.  document.change+=casier;
  5. }


 
ensuite je fais dans ma page $recup = $REQUEST["change"];
                                           echo $recup  
 
mais cela ne m'affiche rien.

Reply

Marsh Posté le 15-06-2006 à 10:10:13    

Vérifie d'abord en JS si la valeur du tab est bien mise dans ton input : pour cela fait un sorte de alert(document.change.value) dans une fonction appelée par l'évènement validation du formulaire ou clique sur le bouton submit....
 
à mon avis, déjà là t'auras pas d'affichage, essaye alors de mettre "document.change.value += casier" puis teste l'affichage du alert...
 
au fait ton formulaire il a quel attribut method? POST? car dans ce cas essaye plutôt dans ton script php de faire : $recup = $_POST["change"]

Reply

Marsh Posté le 15-06-2006 à 10:11:23    

c'est bon en fait j'avais oublié de mettre le nom du form
 
function changecouleur(obj){
  obj.style.background="#007FFF";
  var casier=obj.id+"/";
  document.monform.change.value+=casier;
}
 
Mainteant j'obtiens bien les différentes valeurs :
 
711/725/61/...
 
il faut que le les mette dans un tableau ya t'il un moyen de le faire?

Reply

Marsh Posté le 15-06-2006 à 10:19:24    

autre problème dans la fonction changecouleur
si la couleur est deja égale à #007FFF je veut la mettre comme elle était à l'origine.
ya t'il un moyen de le faire

Reply

Marsh Posté le 15-06-2006 à 10:24:09    

pour mettre tes valeurs dans le tableau, il existe une fonction php qui te permettent de le faire : je t'invite à voir la doc de la fonction explode sur http://fr2.php.net/manual/fr/function.explode.php
 
Pour la couleur, il te suffit de faire un test genre if(obj.style.background == '#007FFF'), etc.

Reply

Marsh Posté le 15-06-2006 à 11:50:54    

c bon çà marche pour les id.
Mais la comparaison de couleur ne marche pas.
 

Code :
  1. function changecouleur(obj) {
  2.  if(obj.style.background=='#007FFF'){
  3.  obj.style.background='#FF0000';
  4.  }else {
  5.         obj.style.background='#007FFF';
  6.          }      
  7.  var casier=obj.id+"/";
  8.  document.monform.change.value+=casier;
  9.  alert(document.monform.change.value);
  10. }


 
si ma couleur est bleue (#007FFF) je veut la mettre a rouge (#FF0000) mais cela ne fait rien

Reply

Marsh Posté le 15-06-2006 à 14:51:13    

il faut d'abord essayer de récupérer la couleur de l'élément,
 
alert(obj.style.background) ou peut-être background-color, ... voir doc JS ...

Reply

Marsh Posté le 15-06-2006 à 15:10:21    

ca serait pas mieux de jouer plutot sur le className du TR ?
 
<table>
<tr class="odd">
<td></td>
</tr>
<tr class="even">
<td></td>
</tr>
 
if (monTR.className == "odd" ) {
  monTR.className == "even";
}
 
comme ca tu change les couleurs dans la feuille de style et pas dans le JS

Reply

Marsh Posté le 15-06-2006 à 15:10:21   

Reply

Marsh Posté le 15-06-2006 à 15:37:38    

en fait voilà une définition de case :  

Code :
  1. echo "<td align=center width=\"3%\" value=\"macase\" id=$ident bgcolor=\"#00FF00\" onclick=changecouleur(this)><b>$j</b></td>";


 
ma fonction changecouleur:  

Code :
  1. function changecouleur(obj) {
  2.  alert(obj.value);
  3.  if(obj.style.background!="" ){
  4.  obj.style.background="#FF0000";
  5.  }else {
  6.         obj.style.background="#007FFF";
  7.          }      
  8.  var casier=obj.id+"/";
  9.  document.monform.change.value+=casier;
  10. }


 
quand je clique sur une case le alert(obj.value) me dit "undefined"
 
alors que quand je fais alert(obj.id) cela me rend bien la valeur de l'id.
Je ne comprend pas.
 

Reply

Marsh Posté le 15-06-2006 à 16:18:25    

le contenu d'un element HTML (donc pas element formulaire) est innerHTML (mais là tu as le HTML qu'il y a dedans),
et si tu veux que le texte :  
sous IE c'est innerText
sous FF c'est textContent
 
sinon jette moi ton bgcolor="" et utilise plutot style="background:#FF0000"
car là bgcolor c'est de la merde en barre :o
 
et pour le onclick tu me le met entre guillemets bordel et meme tous les attributs :fou:

Reply

Marsh Posté le 15-06-2006 à 16:19:56    

c'est bon j'ai résolu le pb. Il faut utiliser axis dans le td
 

Code :
  1. <td align=center axis=\"rc\" width=\"3%\" id=$ident value=1 bgcolor=\"#FF0000\" onclick=changecouleur(this)><b>$j</b></td>";


 
et le recupérer dans la fonction changecouleur.
 
Merci a tous

Reply

Marsh Posté le 15-06-2006 à 17:36:54    

nan mais là tu t'y prend mal

Reply

Sujets relatifs:

Leave a Replay

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