Syntaxe pour un array à deux colonnes

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 : Syntaxe pour un array à deux colonnes

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 10 déc. 2010, 18:31

Oui merci je l'avais vu
Je l'ai imprimé pour m'en imprégner

Re: Syntaxe pour un array à deux colonnes

par stealth35 » 10 déc. 2010, 18:21

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 10 déc. 2010, 18:17

vue que c'est dans une classe, je te dirais de mettre ça dans une variable de classe et d'utiliser une méthode pour aller chercher ces infos

ensuite j'aurais plutôt vu l'id en clef du tableau afin de savoir si l'id est dans le tableau un simple isset suffit.

ex array ( '1'=> array ( les donnéesde l'utilisateur 1), etc).

après je ne comprend pas pourquoi tous ceci ne peut provenir d'une table? au pire pourquoi ne pas utiliser SQLite ?

@+
Bonjour
Ben finalement j'ai décidé, que comme on me demandait de gérer ça seul dans mon coin, de créer une table avec mes valeurs dedans ce qui rend du coup la chose plus simple. et surtout correspond à un process "normal"
J'ai donc réussi avec votre aide à construire mon select avec le code déjà en place.
Du coup ma fonction donne ceci :
function listvalidation(){

        $this->select = '';

		$sql = "SELECT id_sygapuser, nom FROM  sygapuser_validation";
		$user = new DBRecordSetPostgreSQL($this->db, $sql);

        while ($user->GetArray()){
			$this->select .= $this->optionsVar[0].$user->row[0];
			$this->select .= $this->optionsVar[1].$user->row[1];
                        $this->select .= $this->optionsVar[3].$user->row[3];
			$this->select .= "\n";
		}
		return $this->select;
    }
avec une autre fonction importante pour que cela fonctionne
function getSelectOptions($db,$loca_langue){

		$this->db = $db;
		$this->loca_langue = $loca_langue;
		array_push($this->optionsVar,"<option value=\"");
		array_push($this->optionsVar,"\">");
		array_push($this->optionsVar,"\" selected>");
                array_push($this->optionsVar,"</option>");
	}
Je vous remercie de l'intérêt que vous avez porté à mes questions
Bonnes fêtes à vous
Et à bientôt car je pense que j'aurai d'autres soucis :roll: :roll: :roll: :roll: :roll:

Re: Syntaxe pour un array à deux colonnes

par xTG » 10 déc. 2010, 08:05

Sinon comme l'a préconisé moogli voici comment on pourrait s'en sortir en mode recherche :
$tab = array(
    1 => array('id' => 1, 'nom' => 'Alfred'),
    2 => array('id' => 2, 'nom' => 'Fred')
);
$id_recherche = 2;
$user = array();
foreach($tab as $id => $second_tab)
{
  if( $id == $id_recherche )
  {
    $user = $second_tab;
    break;
  }
}
if( !empty($user) )
  print_r($user);

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 10 déc. 2010, 00:03

vue que c'est dans une classe, je te dirais de mettre ça dans une variable de classe et d'utiliser une méthode pour aller chercher ces infos

ensuite j'aurais plutôt vu l'id en clef du tableau afin de savoir si l'id est dans le tableau un simple isset suffit.

ex array ( '1'=> array ( les donnéesde l'utilisateur 1), etc).

après je ne comprend pas pourquoi tous ceci ne peut provenir d'une table? au pire pourquoi ne pas utiliser SQLite ?

@+
Bonsoir
Je te décrirai demain mon environnement de travail afin que tu en saches plus
Sinon j'ai envie de tester une solution avec une table sur laquelle je requêterai
A demain

Re: Syntaxe pour un array à deux colonnes

par moogli » 09 déc. 2010, 23:31

vue que c'est dans une classe, je te dirais de mettre ça dans une variable de classe et d'utiliser une méthode pour aller chercher ces infos

ensuite j'aurais plutôt vu l'id en clef du tableau afin de savoir si l'id est dans le tableau un simple isset suffit.

ex array ( '1'=> array ( les donnéesde l'utilisateur 1), etc).

après je ne comprend pas pourquoi tous ceci ne peut provenir d'une table? au pire pourquoi ne pas utiliser SQLite ?

@+

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 09 déc. 2010, 16:49

salut,
effectivement ce n'est pas du tout clair ;)
pour tes "valeurs" d’où viennent les données ? qu'elle est le "modèle de données" ?
@+
J'en étais sur :D :D
Rappel du contexte : je dois alimenter un select avec des valeurs bien précises.
Je voulais de ce fait créer une table avec ces valeurs (id_user et nom_user).
MAIS un développeur beaucoup plus confirmé que moi préconise afin de ne pas rajouter une table dans le modèle de données de créer un array de mes valeurs dans mon fichier Php. (voir messages ci-dessus) et faire en sorte d'alimenter mon select avec une variable contenant les différentes options.
Une proposition faite ci-dessus fonctionne très bien. C'est cool.
Mais on est dans une page qui fait la création, donc qui ajoute les données en base.

Maintenant, mon appli me permet d'ouvrir cet item ajouté en mode consultation.
Je souhaite évidemment dans mon select retrouver le contenu qui se trouve dans nom et qui se trouve dans le tableau suivant
$users = array (
                        array('id'=>1, 'nom'=>'Moi'),
                        array('id'=>2, 'nom'=>'Lui'),
                        array('id'=>3, 'nom'=>'Eux'),
                        array('id'=>4, 'nom'=>'Nous')
                );
Autant avec une table j'entrevoyais sans trop de souci la réponse autant avec ce tableau je me pose la question de comment récupérer en mode consultation le nom du user sélectionné

Est-ce plus clair ???? :?: :?: :?: :?:

Merci de votre intérêt

Re: Syntaxe pour un array à deux colonnes

par moogli » 09 déc. 2010, 16:34

salut,

effectivement ce n'est pas du tout clair ;)

pour tes "valeurs" d’où viennent les données ? qu'elle est le "modèle de données" ?

@+

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 09 déc. 2010, 16:09

Re encore moi.....on ne se quitte plus

On m'a conseillé de ne pas passer par des valeurs dans une table afin de ne pas toucher au modèle de données.
Vu ma très jeune expérience je n'ai pas voulu aller contre ça :oops: :oops:

Mais autant cela fonctionne très bien pour alimenter la liste autant je me pose la question suivante :
la page dans laquelle est présente mon select est construite pour la création et donc enregistrer l'information dans la base.

Comment dois-je procéder quand en consultation, pour en fonction de l'id dans la base réafficher le nom de l'utilisateur dans le select, celui présent dans $nom ?
Je ne sais pas si je suis clair là. :oops: :oops: :oops:

Merci

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 09 déc. 2010, 15:36

Je pense que c est plutot comme ça que tu devrais écrire ton foreach :
foreach($users as $id=>$nom) {
            $this->select .= '<option value="' . $nom['id']. ' ">' . $nom['nom'] . '</option>' ."\r\n";
 }
Dans la boucle foreach que tu as fait, le $id correspond à la clé de chaque sous-tableau et non pas à la clé dans le sous-tableau :).
Pour mieux comprendre la hierarchie du tableau et mieux voir le parcours du foreach()
tu peux afficher ton tableau comme ça :
echo '<pre>';
print_r($users );
echo '</pre>';
Tu verra qu'il y a une clé devant chaque sous-tableau (celle qui correspond à ton $id dans ton foreach)

Merci cela fonctionne très bien comme ça
Super !!!!!
Et en plus j'ai compris ce que tu as écrit
Merci à toi et aux autres qui m'ont aidé avant aussi
Bonne fin de journée

Re: Syntaxe pour un array à deux colonnes

par BaLiSTiK » 09 déc. 2010, 15:31

Je pense que c est plutot comme ça que tu devrais écrire ton foreach :
foreach($users as $id=>$nom) {
            $this->select .= '<option value="' . $nom['id']. ' ">' . $nom['nom'] . '</option>' ."\r\n";
 }
Dans la boucle foreach que tu as fait, le $id correspond à la clé de chaque sous-tableau et non pas à la clé dans le sous-tableau :).
Pour mieux comprendre la hierarchie du tableau et mieux voir le parcours du foreach()
tu peux afficher ton tableau comme ça :
echo '<pre>';
print_r($users );
echo '</pre>';
Tu verra qu'il y a une clé devant chaque sous-tableau (celle qui correspond à ton $id dans ton foreach)

Re: Syntaxe pour un array à deux colonnes

par iviewclear » 09 déc. 2010, 15:16

Bonjour

Voici ce que j'ai fait
 function listUserValidation (){
        $this->select = '';
        $users = array (
                        array('id'=>1, 'nom'=>'Moi'),
                        array('id'=>2, 'nom'=>'Lui'),
                        array('id'=>3, 'nom'=>'Eux'),
                        array('id'=>4, 'nom'=>'Nous')
                );

        foreach($users as $id=>$nom) {
            $this->select .= '<option value="' . $id . ' ">' . $nom . '</option>' ."\r\n";
            }

       return $this->select;
}
Par contre dans mon select j'ai 4 items nommés Array qui s'affichent au lieu de mes items Moi, Lui, Eux et Nous.
Je n'arrive pas à voir ce que je n'ai pas bien fait pour que cela affiche Moi, Lui, Eux et Nous et que quand j'en sélectionne un ce soit bien la valeur de l'id correspond qui soit envoyé.

Vous auriez une idée s'il vous plait messieurs dames

Merci à vous

Re: Syntaxe pour un array à deux colonnes

par xTG » 08 déc. 2010, 21:23

La construction de ton array est correcte.

Pour le parcourir aisément je te recommande d'utiliser la boucle foreach qui te simplifiera la tâche :
foreach( $mon_tableau as $clé_tableau => $valeur_case ){...}

Syntaxe pour un array à deux colonnes

par iviewclear » 08 déc. 2010, 21:17

Bonsoir à tous,
Bon petite précision : je suis débutant en PHP et cette question a du être posée mille trois cent fois au moins !!!!

Voilà je voulais savoir si la syntaxe suivante était correcte :
Ma problématique : construire un tableau avec 2 données : un identifiant et un nom de user
$users = array (
array('id'=>1, 'nom'=>'Moi'),
array('id'=>2, 'nom'=>'Lui'),
array('id'=>3, 'nom'=>'Eux')
);
Je ne suis pas sur de cette syntaxe.

Ensuite je voudrais parcourir $users afin de constituer une variable qui alimentera le contenu d'un select présent dans un fichier HTML.
Donc je coince sur le parcours de mon tableau pour obtenir le contenu qui va alimenter mon select.
Il n'y aura pas d'option sélectionnée par défaut.

Précision : le site sur lequel je travaille utilise FastTemplate.
Donc le Php prépare les données et ensuite les envoie par une variable que le HTML récupère.

Pourriez-vous me filer un petit coup de main s'il vous plait ?
D'avance merci à ceux qui pourront m'aider

Bonnes fêtes à tous