Pour pouvoir les afficher dans une page html !
Langues parlées : echo $langues
donnera :
Langues parlées : français, allemand et russe
Pour pouvoir les afficher dans une page html !
Langues parlées : echo $langues
donnera :
Langues parlées : français, allemand et russe
Voilà la fonction terminée :
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 <?php //Paramètre de la fonction : $id_langue et le nom de la table require_once 'connectbdd.php'; $id_langue = ('acd'); $table = ('langues'); $langue = donne($id_langue,$table); function donne($id_langue,$table) { $lg_chaine = strlen($id_langue); $tab = array(); for($i = 0 ; $i < $lg_chaine ; $i++) { $resultat = mysql_query('SELECT nom_langue FROM ' . $table . ' WHERE langue_id = "' . ($id_langue[$i]) . '"') or die('Erreur de sélection dans la base de données '.mysql_error()); $row = mysql_fetch_array($resultat); $tab[$i] = $row[0]; } $lg_tab = count ($tab); // Concaténation des variables du tableau // Exemple : avec id_langue = ('acd') $langues = 'français, allemand et russe' if ($lg_tab == 1) {$langues = $tab[0];} // si id_langue ne contient qu'une seule lettre else {$langues = (implode(", ", array_slice($tab,0,count($tab) - 1)) . ' et ' . $tab[count($tab) - 1]);} return $langues; } ?>
Plusieurs choses :
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 <?php require_once 'connectbdd.php'; $ids = array('a', 'c', 'd'); $langues = donne($ids); function donne($ids) { $params = implode(',', $ids); $sql = "SELECT nom_langue FROM langues WHERE langue_id IN ($params)"; $resultat = mysql_query($sql) or die('Erreur de sélection dans la base de données '.mysql_error()); $noms = array(); while($row = mysql_fetch_array($resultat)) $noms[] = $row[0]; // Ici la suite de la fonction qui est en cours d'écriture ! Le but // étant de renvoyer une chaîne $langues qui sera égale à // "français, allemand et russe" dans le cas ou id_langue = ('acd') return $myString; } ?>
- la requête étant très spécifique, passer le nom de la table en paramètre me semble superflu.
- La gestion des paramètres en tableau est plus simple et plus claire.
- La gestion des paramètres en tableau permet de faire une seule requête, donc une économie substancielle des performances.
--- edit ---
Et avec la réponse du saboteur dans ton autre sujet, ta fonction sera finie.
- Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
- Merci d'utiliser les balises de code (# dans l'éditeur)
- N'oubliez pas de vous servir des boutons , et
S.N.A.F.U
La requête n'est pas spécifique !
Le nom de la table est passé en paramètre car j'ai le même problème avec la table 'régions' ou il y a 22 régions !
Attention tu modifies mon paramètre id_langue = ('acd')
tu en fais : $ids = array('a', 'c', 'd');
l'id_langue passé en paramètre n'est pas un tableau mais une chaîne de caractères !
Du coup tu me poses une nouvelle colle ! Transformer id_langue qui est une chaîne ('acd') en tableau ('a', 'c', 'd')!
Tu me dis : "La gestion des paramètres en tableau permet de faire une seule
requête, donc une économie substancielle des performances."
Oui j'avais vu que tu ne fais qu'un seul SELECT. Effectivement le temps de traitement devrait en être sensiblement raccourci.
Je vais essayer de l'adapter... Merci encore (To be continued)...
Un petit coup de main pour la transformation de id_langue en tableau ?
D'une autre table de ma base de données qui est remplie par un formulaire. Les champs "langues" et "régions" sont renseignés grâce à des listes à choix multiples.
En fait j'ai fait ça car au départ j'avais créé 8 champs pour les langues (id_langue_1, id_langue_2, etc) et 22 champs pour les régions (id_region_1, id_region_2, etc). Donc 30 champs en tout, mais les temps d'écriture dans la base était du coup devenus excessivement longs...
Alors j'ai eu l'idée de supprimer les 30 champs et les remplacer par 2. Ca a effectivement accéléré les temps d'écriture dans ma base.
Donc par exemple dans ma base le champ langues peut avoir pour valeur 'abh', et le champ régions 'acghiklm'. J'ai choisi des lettres car pour le champ régions après le nombre 10 le découpage devenait difficile ! J'aurais par exemple le champ regions égal à 1241113141822 ! Heureusement le nombre de régions françaises est inférieur au nombre de lettres de l'alphabet !
Il me restait ensuite à 'décortiquer' ces chaînes de caractères à l'aide d'une fonction pour les afficher sous la forme : français, anglais et allemand
ou alors : Alsace, Bourgogne, Bretagne et Ile-de-France
Il y avait peut-être sans doute une autre manière de procéder mais je suis débutant je fais avec ce que je peux !
Un petit coup de main pour la transformation de id_langue en tableau ?
Je voudrais tester ta méthode
Du coup, si c'est stocké directement en chaîne, peut-être que ta méthode peut le faire.
Sinon, pour la transformation en tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $myString = 'acd'; $myTableau = explode('', $myString);
- Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
- Merci d'utiliser les balises de code (# dans l'éditeur)
- N'oubliez pas de vous servir des boutons , et
S.N.A.F.U
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager