supprimer une ligne d'un tableau

supprimer une ligne d'un tableau - PHP - Programmation

Marsh Posté le 21-09-2005 à 11:42:16    

salut,
 
j'ai une variable de session contenant un tableau de tableau
j'aimerais que lors d'un clic sur un bouton precis (indiquant l'identifiant de la ligne du tableau)
cette ligne soit supprimer de mon tableau et que donc ma tableau est une longueur plus courte de 1.
 
j'espere que vous comprenez mon probleme, car je ne sais pas trop comment expliquer cela.
 
J'ai essayé d'écraser la ligne du tableau avec ceci:  tab[i] = array()
et de le detruire:  unset(tab[i])
 
mais apparement cela ne marche pas.

Reply

Marsh Posté le 21-09-2005 à 11:42:16   

Reply

Marsh Posté le 21-09-2005 à 11:43:40    

edit: j'ai remarqué que quand mon bouton supprime la derniere ligne du tableau cela fonctionne
mais qd je veux supprimer une ligne au debut ou au milieu du tableau, cela pose probleme.

Reply

Marsh Posté le 21-09-2005 à 11:47:17    

En quoi ca ne marche pas? T'as fait quoi comme vérification?
Si c'est pas déjà fait, vérifie donc le contenu du tableau avec print_r avant et aprés suppression.
Ca te sortira un ensemble de donnée indigeste mais tu véras bien s'il y a une différence.

Reply

Marsh Posté le 21-09-2005 à 11:52:11    

c'est lors de mon affichage que je vois qu'il y a un soucis puisque ma boucle for qui me permet de parcourir chauqe ligne du tableau essaye d'affichaer la ligne supprimer.
et le foreach qui est a l'interieur du for pour afficher les colonnes me donne un warning:
 
Warning: Invalid argument supplied for foreach() in d:\website\fotosport\caddie.php on line 38
 
j'en conclue que les colonnes ont bien été supprimées, mais pas la ligne

Reply

Marsh Posté le 21-09-2005 à 11:55:35    

code de la page? J'ai jamais été fort en divination. ;)

Reply

Marsh Posté le 21-09-2005 à 11:57:06    

Code :
  1. for($iiIndex = 0; $iiIndex < count($_SESSION['COMMANDE']); $iiIndex++)
  2. {
  3.  echo '<tr>';
  4.   foreach($_SESSION['COMMANDE'][$iiIndex] as $cle=>$valeur)
  5.   {
  6.    if($cle == 'PRIX')
  7.    {
  8.     printf('<td align="right" class="tablecommandtd">%01.2f</td>', $valeur);
  9.     $iiTotal = $iiTotal + $valeur;
  10.    }
  11.    elseif($cle != 'TITRE')
  12.    {
  13.     echo '<td class="tablecommandtd">' . $valeur . '</td>';
  14.    }
  15.   }
  16.   echo '<td class="tablecommandtd"><a href="actioncaddie.php?ACTION=delete&amp;ID=' . $iiIndex . '"><img src="images/delete.gif" alt="Supprimer cette photo du caddie" border="0" /></a></td>';
  17.  echo '</tr>';
  18.  echo '<tr><td colspan="6" class="tablecommandedescription">' . $_SESSION['COMMANDE'][$iiIndex]['TITRE'] . '</td></tr>';
  19. }

Reply

Marsh Posté le 21-09-2005 à 12:00:12    

Et ca te choque pas de faire un simple for sur un tableau dans lequel t'as suprimer certains index numérique?
 
Je paris que ta ligne 38, c'est la ligne "foreach($_SESSION['COMMANDE'][$iiIndex] as $cle=>$valeur) ".

Reply

Marsh Posté le 21-09-2005 à 12:01:55    

ben jsai pas
si je supprime uen ligne d'un tableau, j'ai un "trou" dans les index?
ca les redefinit pas automatiquement?

Reply

Marsh Posté le 21-09-2005 à 12:05:42    

Et pourquoi ca le ferait ?


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 21-09-2005 à 12:05:57    

et pourquoi pas?

Reply

Marsh Posté le 21-09-2005 à 12:05:57   

Reply

Marsh Posté le 21-09-2005 à 12:05:59    

Non, ca les redéfini pas.
En php, un index 15 ou un index "toto" c'est du pareil au même. Et comme php ne sait pas quel nom donner à "toto" si on enléve par exemple l'index "tata" et qu'on peut mélanger nombre et chaine de caractére comme indice, alros php ne change rien.
C'est en partie pour ça que foreach est si utilisé pour parcourir un tableau.
On peut aussi se passer de foreach et utiliser des fonctions tel que current, next ...


Message édité par omega2 le 21-09-2005 à 12:07:18
Reply

Marsh Posté le 21-09-2005 à 12:09:29    

tellier a écrit :

et pourquoi pas?


 
Tout simplement parce qu'il ne fait que ce que tu lui dit de faire. Tu ne lui dis pas de réorganiser ton tableau, il ne le fait pas. Et ce n'est pas le cas qu'en PHP :o


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 21-09-2005 à 12:09:40    

donc faut que je remplace mon for par un ofreach si je comprend bien

Reply

Marsh Posté le 21-09-2005 à 12:10:58    

plainsofpain a écrit :

tout simplement parce le but d'un langage de programmation c'est de programmer, pas de taper deux lignes et d'avoir tout ce qu'on veut réalisé automatiquement :o
 
Et puis suppose que tu effaces un éléments de tablea


Sa question est pas conne : pourquoi ca le fait pas alors que ca le fait dans la pluspart des autres langages?
Le tout c'est de lui expliquer le pourquoi sans le prendre de haut.

Reply

Marsh Posté le 21-09-2005 à 12:12:18    

merci omega2
 
sinon, avec le foreach, ca ne change pas le probleme puisque il me trouve 4 lignes pour tableau de 4 lignes dont 2 ont été supprimées

Reply

Marsh Posté le 21-09-2005 à 12:12:23    

J'ai édité mon message. Dans les autres langages, c'est pas courant de réorganiser automatiquement un tableau associatif :o


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 21-09-2005 à 12:13:43    

plainsofpain a écrit :

J'ai édité mon message. Dans les autres langages, c'est pas courant de réorganiser automatiquement un tableau associatif :o


 
ce n'est pas un tableau associatif
 
c'est un tableau avec des index qui contient des tableaux associatif

Reply

Marsh Posté le 21-09-2005 à 12:16:14    

C'est quasiment le meme problème :)


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 21-09-2005 à 12:16:33    

ca me perd tout ca...

Reply

Marsh Posté le 21-09-2005 à 12:16:42    

En php, tous les tableaux sont asociatifs même si les indices sont des nombres. ;)
Mais c'est trompeur quand on a l'habitude que les tableaux que tous les tableaux à indices numériques ne soient pas associatifs.

Reply

Marsh Posté le 21-09-2005 à 12:18:38    

néanmoins j'ai réussi a faire marché le foreach  
donc merci!!

Reply

Marsh Posté le 21-09-2005 à 12:19:12    

Juste qu'il faudrait qu'il y ait un vrai typage des variables en php pour pouvoir intégrer des mécanismes existants dans d'autres langages (par exemple la gestion des tableaux en java est pas mal foutue).
 
C'est un des trucs lourds et chiants de php  :sweat:


Message édité par plainsofpain le 21-09-2005 à 12:19:31

---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 21-09-2005 à 12:20:03    

plainsofpain > :jap:

Reply

Marsh Posté le 21-09-2005 à 12:22:57    

merci!
j'avais fais une erreru dans mon foreach
maintenant ca marche!
 
d'un coté je me me demande pourquoi j'ai utilisé un for et un foreach
au lieu de tout de suite faire deux foreach...
 
Bonne journée.

Reply

Marsh Posté le 21-09-2005 à 12:25:45    

Pour apprendre comment réagissent les tableaux en php. :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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