Rechercher : dans
Par :

Mettre des éléments ds un tableau

Dernière réponse le 16 mai 2008 à 13:49:06 ladj59, le 16 mai 2008 à 13:00:08 
 Signaler ce message aux modérateurs

Bonjour,


avc le code ci-dessous je récupére une liste de sujets(que je'affiche avec echo $data['$n'];)
mais cette liste présente des doublons donc je voudrais les enlever et mettre tous les sujets dans un formulaire
Comment dois-je faire svp?

j'avais pensé mettre tous les sujets dans un tableau et trier le tableau en éliminant les doublons mais je n'y arrive pas trop

merci d'avance pour votre aide

<code type="php">
<?php

$sujets=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet ");


while($sujet = mysql_fetch_array($sujets)) #propose tous les sujets présents dans la base de donnée
{
$data=explode(",",$sujet['sujet']);
for($n=0;$n<100;$n++)
if($data[$n] != "")
{
echo $data[$n];
}
}
</code>

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « mettre des éléments ds un tableau » dans :
Trier un tableau sans utiliser la fonction sort Voir Trier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Tri par fusion - récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par fusion : Procedure Tri_Fusion (Var t : TAB; g, d : integer); Var m, i, j, k : integer; s : TAB; Begin If d > g Then ...
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Télécharger DS Monkey Audio - Filtre APE VoirLe format MonkeysAudio (extension *.ape) est un format de compression audio lossless (sans pertes) permettant de réduire la taille d'un fichier de moitié sans aucune perte d'information. Le filtre audio DS Monkey Audio Filter utilise la librairie...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Tableau de bord VoirNotion de tableau de bord Un tableau de bord est une représentation graphique synthétique d'un ensemble d'indicateurs donnant à un responsable tous les éléments lui permettant de prendre visuellement et rapidement des décisions. Compte-tenu de sa...
Javascript - Les tableaux VoirIntroduction à la notion de tableau Les variables de Javascript ne permettent de stocker qu'une seule donnée à la fois. Or, étant donné qu'il est souvent utile de manipuler de nombreuses données, le concept de variable se révéle parfois...

1

macgawel, le 16 mai 2008 à 13:06:19

Bonjour.

Je ne comprends pas trop : ton SELECT DISTINCT devrait suffire à éviter les doublons...

sinon, il faut que tu te crées une fonction SupprimerDoublons($tableau). Pour les détails de la fonction, un petit tour sur google t'en donne pas mal...

Répondre à macgawel

2

ladj59, le 16 mai 2008 à 13:10:49

Oui mais comment faire pour rentrer tous mes sujets dans un tableau
je n'y arrive pas...
merci

Répondre à ladj59

3

Dr Zoidberg, le 16 mai 2008 à 13:15:38

Je ne comprend pas tout non-plus. Qui a t 'il dans ta colonne 'sujet' ? plusieurs sujets séparés par une virgule ?

Si c'est le cas un truc comme (le tableau final est $tableau):

 <?php

$sujets=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet ");

while($sujet = mysql_fetch_array($sujets)) #propose tous les sujets présents dans la base de donnée
{
$data=explode(",",$sujet['sujet']);
foreach($data as $unsujet)
 {
  if(!in_array($unsujet, $tableau))
    {
      $tableau[] = $unsujet;
    }
  }
}

Répondre à Dr Zoidberg

4

ladj59, le 16 mai 2008 à 13:20:59

Oui il y a plusieurs sujets séparés par une virgule
avec ton code
quand je echo $unsujet;
il me met que le derrnier sujet( il ecrase surement a chaque fois)

comment faie pour récupérer tous les sujets dans le tableau ?

merci

Répondre à ladj59

5

macgawel, le 16 mai 2008 à 13:21:46

// On se connecte à la base
mysql_connect($host,$user,$password);

$data = array();
$result = mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet");

// Pour chaque ligne récupérée dans la requête, on récupère le premier élément dans $data
while($row = mysql_fetch_array($result)) {
   $data[] = $row[0];
 }
 mysql_free_result($result);


En fait, mysql_fetch_array te renvoie la prochaine réponse donnée par ta requête, il faut donc faire une boucle...

Répondre à macgawel

6

Dr Zoidberg, le 16 mai 2008 à 13:24:34

Pour mon exemple de code si tu veux tout afficher.
Rajoute a la fin

echo '<table>';
foreach($tableau as $ligne)
{
echo '<tr><td>',$ligne,'</td></tr>';
}
echo '</table>';

Répondre à Dr Zoidberg

7

ladj59, le 16 mai 2008 à 13:31:02

Merci ca marche impec

Répondre à ladj59

8

ladj59, le 16 mai 2008 à 13:40:20

J'ai aussi un autre souc

Dans mon application je peux faire un recherche par sujets dans ma bdd
donc j'affiche le formulaire avec tous les suets présents (comme on vient de le voir) et une fois le sujet sélectionné je peux coché d'autres critéres pour affiner la recherche
sur la pge qui sert à afficher le résultat, mon probléme est que je récupére le sujet sélectionné grâce à une session et ensuite je fais ma requete mais le probléme c'est que je fais SELECT sujet=$_SESSION['sujet'] mais le probléme c'est que cela ne marche pas car dans le champ sujet, il peut y avoir plusieurs sujets(séparés par des virgules) et donc ce ne sera jamais égal si il y a plus d'un sujet

Comment faire svp?

Répondre à ladj59

9

macgawel, le 16 mai 2008 à 13:44:12

Là, c'est du SQL...

$requete = "SELECT * FROM table where sujet like '%".$_SESSION['sujet']."%'";


Sélectionne les lignes de la table, où sujet contient $_SESSION['sujet']

Répondre à macgawel

10

 ladj59, le 16 mai 2008 à 13:49:06

C'est ce que j'ai fait mais cela ne marche pas car le champs sujet contient plusieurs sujets en général et il ne sera donc pas égal à $_SESSION['sujet' ], il faudrait que $_SESSION['sujet' ] soit comparé avec tous les sujets y compris ceux d'un même champ mais je ne sais pas comment faire...

merci d'avance

Répondre à ladj59