IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Se déplacer dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Points : 106
    Points
    106
    Par défaut Se déplacer dans un tableau
    Bonjour

    voila mon problème.

    j'aimerai partir de ce tableau,:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $contact = array(
    	"amis" => array("a1", "a2"),
    	"famille" => array("f1", "f2"),
    	"bureau" => array("b1", "b2", "b3", "b4", "b5", "b6", "b7")
    	);
    ensuite, choisir une clé: supposons "bureau", et me déplacer à l'intérieur.

    Mais, au départ on va afficher l'élément courant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $current = current($contact["bureau"]);
    ...jusque là tout va bien.

    Mon prblème c'est que j'ai du mal à me servir des fonction current(), next() et prev().

    plus précisément, j'aimerai faire ça depuis un interface crée par html, en utilisant deux boutons "next" et "prev" et en fonction du bouton sur lequel je clique, la valeur courant évolue. (et sans changer de page... si possible )

    p.s.
    j'aimerai surtout m'en passer à le faire en javascript

    voila.
    merci pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    essaie cet exemple qui utilise trois fichiers ne changer pas leur noms pour utiliser appeler le fichier index.php

    data.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php  
    $contact = array(
    	"amis" => array("a1", "a2"),
    	"famille" => array("f1", "f2"),
    	"bureau" => array("b1", "b2", "b3", "b4", "b5", "b6", "b7")
    	);
     
    $response='';
     
    if(isset($_POST['action']))
    {
    	$key=rawurldecode($_POST['key']);
    	$idx=(int)$_POST['idx'];
    	 switch($_POST['action'])
    	 {
    	 	case 'next':
    		case 'prev':
    		case 'first':
    		case 'last':
    			$response= rawurldecode($contact[$key][$idx]);
    			break;
    		case 'Count':
    			$response= count($contact[$key]);
    			break;
     
    	 }
    	echo $response;
    }
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?php   
    include('data.php');
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <script type="text/javascript" src="java_ajax.js"></script>
    </head>
     
    <body>
      <table width="80%" border="1" align="center">
        <tr>
          <td colspan="4">
    	  <select name="menu1" onChange="getcount(this);">
    	  <option>&nbsp;</option>;
    	  <?php  
    	  foreach($contact as $key=>$val)
    	  	{
    	  		echo "<option>{$key}</option>\r\n";
    	 	}
    		?>
     	 </select></td>
        </tr>
        <tr>
          <td colspan="4" id="viewer">&nbsp;</td>
        </tr>
        <tr>
          <td width="23%" id="first">&nbsp;</td>
          <td width="23%" id="prev">&nbsp;</td>
          <td width="23%" id="next">&nbsp;</td>
          <td width="23%" id="last">&nbsp;</td>
        </tr>
      </table>
    </body>
    </html>
    java_ajax.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    var indexs=-1;
    var activekey='';
    var ACount=0;
    var Isfree=true;
    function getcount(Obj)
    {
    	activekey=Obj.options[Obj.selectedIndex].text;
    	ajax('Count');
     
    }
     
    function j_first()
    {
    	if(ACount>0)
    	{
    		indexs=0;
    		ajax('first');
    	}
    	return false;
    }
    function j_prev()
    {
    	indexs=Math.max(0,indexs-1);
    	ajax('prev');
    	return false;
    }
    function j_next()
    {
    	indexs=Math.min(ACount-1,indexs+1);
    	ajax('next');
    	return false;
    }
    function j_last()
    {
    	if(ACount>0)
    	{
    		indexs=ACount-1;
    		ajax('last');
    	}
    	return false;
    }
     
     
    function setlink()
    {
     
    	if (ACount>0 && activekey!='')
    	{
    		var d=document;
    		if(indexs>0) 
    		{
    			d.getElementById('first').innerHTML='<a href="#" onClick="return j_first();">Premier</a>';
    			d.getElementById('prev').innerHTML='<a href="#" onClick="return j_prev();">Pr&eacute;c&eacute;dent</a>';
    		}else
    		{
    			d.getElementById('first').innerHTML='&nbsp;';
    			d.getElementById('prev').innerHTML='&nbsp;';
    		}
    		if(indexs<ACount-1) 
    		{
    			d.getElementById('next').innerHTML='<a href="#" onClick="return j_next();">Suivant</a>';
    			d.getElementById('last').innerHTML='<a href="#" onClick="return j_last();">d&egrave;rnier</a>';
    		}else
    		{
    			d.getElementById('next').innerHTML='&nbsp;';
    			d.getElementById('last').innerHTML='&nbsp;';
    		}
     
    	}
    }
     
    function ajax(ac)
    {
    	var xhr=null;
    	if(window.XMLHttpRequest)
    	{
    		xhr=new XMLHttpRequest();
    	}
    	else if(window.ActiveXObject)
    	{
    		xhr=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	xhr.onreadystatechange=function()
    	{
    		if(xhr.readyState==4)
    			{
    		     ready(xhr.responseText,ac);
    			 Isfree=true;
    			}
    	}
    	xhr.open("POST","data.php",true);
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	xhr.send("action="+ac+"&key="+escape(activekey)+"&idx="+indexs);
    }
    function ready(str,op)
    {
    		switch(op)
    		{
    			case 'next':
    			case 'prev':
    			case 'first':
    			case 'last':
    			document.getElementById('viewer').innerText=unescape(str);
    			break;
    			case 'Count':
    				ACount=str;
    			break;
    		}
    		setlink();
     
    }

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Linu6 Voir le message
    j'aimerai partir de ce tableau,:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $contact = array(
    	"amis" => array("a1", "a2"),
    	"famille" => array("f1", "f2"),
    	"bureau" => array("b1", "b2", "b3", "b4", "b5", "b6", "b7")
    	);
    OK

    ensuite, choisir une clé: supposons "bureau", et me déplacer à l'intérieur.
    OK

    Mais, au départ on va afficher l'élément courant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $current = current($contact["bureau"]);
    ...jusque là tout va bien.
    OK, mais prendre en compte que la notion d'élément courant associée à current( ) n'est valable que dans le cadre du bouclage d'un tableau dans un script.

    Mon prblème c'est que j'ai du mal à me servir des fonction current(), next() et prev().
    Aucun intérêt. Ces fonctions ne sont présentes que pour une rétrocompatibilité avec PHP3 qui n'implémentait pas foreach( ).

    plus précisément, j'aimerai faire ça depuis un interface crée par html, en utilisant deux boutons "next" et "prev" et en fonction du bouton sur lequel je clique, la valeur courant évolue. (et sans changer de page... si possible)
    Tu veux créer un paginateur / un système de pagination, ni plus ni moins. Il faudra jouer sur les index, tout simplement
    Me semble déjà avoir vu un tuto sur developpez.net.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre régulier Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Points : 106
    Points
    106
    Par défaut
    ok, merci à vous deux!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] macro simple pour déplacer des lignes dans un tableau
    Par akka01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2010, 16h24
  2. Fonction pour se déplacer dans un tableau 2D ?
    Par guipe dans le forum Collection et Stream
    Réponses: 72
    Dernier message: 16/12/2009, 11h23
  3. Se déplacer dans un tableau 2x2
    Par holdboy dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 02/12/2008, 16h35
  4. Se déplacer dans un tableau
    Par holdboy dans le forum C
    Réponses: 8
    Dernier message: 02/12/2008, 15h07
  5. Déplacer champs dans un tableau
    Par blacksnake dans le forum Langage
    Réponses: 2
    Dernier message: 01/05/2007, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo