Petit souci avec les tableaux

Eléphant du PHP | 248 Messages

17 août 2008, 17:56

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

Mammouth du PHP | 1668 Messages

17 août 2008, 18:06

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
AB
ViPHP | 5818 Messages

18 août 2008, 06:54

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:

Eléphant du PHP | 248 Messages

19 août 2008, 18:44

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>

ViPHP
AB
ViPHP | 5818 Messages

19 août 2008, 23:22

Et ça a un rapport avec le sujet précédent ?

Eléphant du PHP | 248 Messages

19 août 2008, 23:29

oui c'est une autre parti du projet