Petit souci avec les tableaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Petit souci avec les tableaux

par moileraz » 19 août 2008, 23:29

oui c'est une autre parti du projet

par AB » 19 août 2008, 23:22

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

par moileraz » 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>

par AB » 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:

par katagoto » 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

Petit souci avec les tableaux

par moileraz » 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