Page 1 sur 1

Petit souci avec les tableaux

Posté : 17 août 2008, 17:56
par moileraz
Bonjour,

dans le cadre d'une construction d'un formulaire, j'utilise des sessions avec des tableaux. voici un exemple de la sessions que je sauvegarde

Code : Tout sélectionner

$_SESSION['formulaire']['id'];
mon problème est de savoir comment faire pour supprimer deux dernières entrées d'un coup.

ex j'ai 1, 2, 3, 4

je veut supprimer 3 et 4 pour garder juste 1 et deux

merci d'avance pour votre aide

Posté : 17 août 2008, 18:06
par katagoto
Bonjour,

Ce qui est formidable avec PHP, c'est toutes ses fonctions de gestions des tableaux et des chaines, exemple :
<?
$tableau=array(1, 2, 3, 4, 5);
$debut=0;
$nombre=2;
$tableau=array_splice($tableau, $debut, $nombre, true);
print_r($tableau);
Et ça nous donnera : array(1, 2)

Explication : $debut nous donne l'index initiale de la capture, $nombre nous donne le nombre d'éléments à prendre, true préserve l'ordre... nous travaillons sur $tableau, la fonction va écraser le premier $tableau en renvoyant un tableau de la capture

Posté : 18 août 2008, 06:54
par AB
J'aurais conseillé array_splice() également mais je trouve ta façon de faire bien compliquée :
Tu retourne le tableau de capture des éléments à supprimer.

Pourquoi ne pas retourner simplement le tableau avec les deux derniers éléments déjà supprimés :-k

En reprenant l'exemple de moileraz cela donnerait :
$sup_derniers = 2;
array_splice($_SESSION['formulaire'], -$sup_derniers);
//visualisation du résultat :
print_r($_SESSION['formulaire']); 
Par ailleurs le paramètre optionnel preserve_keys n'est pas implémenté avec array_splice() (si l'on s'en tient à la doc). Donc dans ton exemple, "true" sera source de bug.
Tu dois confondre avec array_slice() :wink:

Posté : 19 août 2008, 18:44
par moileraz
Bonjour à vous tous. J'ai un gros souci avec un code. Ce que j'essaye de faire est comme si dessous:

j'ai une session qui stock des noms.

Je dois créer un formulaire pour que l'utilisateur puisse faire des paires (une paire à la fois) et s'il veut refaire une paire, les noms qui ont déjà étaient sélectionné ne saffiche plus. Je suis perdu je ne sais pas par ou aller merci de votre aide ci dessous mon code:
<?php
session_start(); 


if(!isset($_SESSION['foyer-fiscal'])) 
{ 
  
    $_SESSION['foyer-fiscal'] = array(); 
    $_SESSION['foyer-fiscal']['id'] = array();
    $_SESSION['foyer-fiscal']['nom1'] = array(); 
	$_SESSION['foyer-fiscal']['nom2'] = array(); 
	
}


if($_POST['envoie']){


//Début variable envoyé par le formulaire
$id=$_POST['id'];

$nom1=$_POST['personne1'];
$nom2=$_POST['personne2'];

list($i_caution,$nom_caution,$prenom_caution)=split("-",$nom1);
list($i_caution2,$nom_caution2,$prenom_caution2)=split("-",$nom2);

$foyer_fiscal_commun=$_POST['foyer_fiscal_commun'];


$_SESSION['foyer-fiscal-pair']=$id+1;


function ajout($select) 
{ 
    array_push($_SESSION['foyer-fiscal']['id'],$select['id']);
	array_push($_SESSION['foyer-fiscal']['nom1'],$select['nom1']); 
    array_push($_SESSION['foyer-fiscal']['nom2'],$select['nom2']); 
} 

$select = array(); 
$select['id'] = $i_caution; 
$select['nom1'] = $nom_caution."-".$prenom_caution;
$select['nom2'] = $nom_caution2."-".$prenom_caution2;
ajout($select);


if(($foyer_fiscal_commun=="oui")){
header('Location: foyer-fiscal-commun.php');
}elseif($foyer_fiscal_commun=="non"){
header('Location: autre-ressource.php');
}


}










?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>//</title>


<link rel="stylesheet" href="caution.css" />
<?php $id=$_GET['id'];?>

</head>

<body >
<div align="center">
<div class="container">

  <div class="header_fond"><div class="menu">
    <table width="85%" height="20" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="51%"><div align="center" ><a href="index.php" target="_parent" class="style7">ACCUEIL</a></div></td>
        <td width="49%"><div align="center"><a href="agrement.php" target="_parent" class="style7"><u>AGREMENT</u></a></div></td>
      </tr>
    </table>
	  
  </div></div>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form" target="_parent">
  <div class="body_fond"></div>
  <div class="footer_fond">
    <div class="contact"><a href="contact.php" class="lien style8">CONTACT</a> &nbsp;&nbsp;&nbsp;<a href="" class="style9">SACAPP.COM</a></div>
  </div>
  
<div class="header_contenu"><div class="fil_ariane">
  <table width="100%" height="28" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td><div align="left"><span class="style11">&nbsp;&nbsp;Identification > Description du bail ></span> <span class="style11"><img src="image/locataire_rouge.png" width="64" height="29" border="0" align="absmiddle" />> Recapitulatif > R&eacute;ponse</span> </div></td>
    </tr>
  </table>
</div>
</div>
<div class="body_contenu">
  <table width="85%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td height="33" valign="top">&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    </tr>
	<tr><td height="150"><table width="100%" height="87" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="61%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td height="35" class="lien"><div align="left"><strong>Foyer fiscal partager </strong><br />
              <span class="style3">Merci d'indiquer si les cautions faisant partis d'un m&ecirc;me foyer fiscal</span> </div></td>
          </tr>
          <tr>
            <td height="35"><div align="left">
			               
               
              <select name="personne1" id="personne1">
 <?php 
	  $nbr=count($_SESSION['caution']['id']);
      $nb2=count($_SESSION['foyer-fiscal']['id']);


	  for($a=1; $a<$nbr; $a++){
	
	$nom=$_SESSION['caution']['nom'][$a]."-".$_SESSION['caution']['prenom'][$a];
	
	if($_SESSION['foyer-fiscal']['nom1'][$a]!==$nom){
 echo "<option value=\"".$a."-".$_SESSION['caution']['nom'][$a]."-".$_SESSION['caution']['prenom'][$a]."\">".$_SESSION['caution']['nom'][$a]." ".$_SESSION['caution']['prenom'][$a]."</option>";
	}else{

	}
	  }
	  
	?>
        
              </select>
              <span class="style3">contribue au meme foyer fiscal que</span> 
      <select name="personne2" id="personne2">
               
                <?php 
	  $nbr=count($_SESSION['caution']['id']);
      $nb2=count($_SESSION['foyer-fiscal']['id']);


	  for($a=1; $a<$nbr; $a++){
	
	$nom=$_SESSION['caution']['nom'][$a]."-".$_SESSION['caution']['prenom'][$a];
	
	if($_SESSION['foyer-fiscal']['nom2'][$a]!==$nom){
 echo "<option value=\"".$a."-".$_SESSION['caution']['nom'][$a]."-".$_SESSION['caution']['prenom'][$a]."\">".$_SESSION['caution']['nom'][$a]." ".$_SESSION['caution']['prenom'][$a]."</option>";
	}else{

	}
	  }
	  
	?>
        
              </select>
			  
            </div></td>
          </tr>
          <tr>
            <td height="35"><div align="left"><span class="style3">&nbsp;</span><span class="style3">Y a-t-il d'autres cautions qui partage un m&ecirc;me foyer fiscal ? </span>
			    <select name="foyer_fiscal_commun" id="foyer_fiscal_commun">
			    <option value="oui" selected="selected">Oui</option>
			    <option value="non">Non</option>
              </select></div></td>
          </tr>
          <tr>
            <td height="35">&nbsp;</td>
          </tr>
        </table></td>
        <td width="39%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td>&nbsp;</td>
          </tr>
        </table></td>
      </tr>
	  
    </table></td>
	</tr>
  </table>
</div>
<div class="footer_contenu">


	<div class="bouton_formulaire"><input name="envoie" type="submit" id="envoie" value=" " /></div>

</div></form>
</div>
</div>

</body>
</html>

Posté : 19 août 2008, 23:22
par AB
Et ça a un rapport avec le sujet précédent ?

Posté : 19 août 2008, 23:29
par moileraz
oui c'est une autre parti du projet