Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 09h35   #1
Invité de passage
 
Femme
Urbaniste
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Urbaniste
Secteur : Bâtiment

Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Par défaut Tri de tableau

Bonjour à tous,

Cela fait quelque temps que je cherche une solution pour un programme sur un site Intranet dans le cadre de la gestion du base de données ou je dois une fois récupérer faire des tris sur des tableaux avant de renvoyer le tout à la bdd.
En fait, j'ai à l'origine 2 tableaux qui contiennent par exemple :
Tableau 1
770
771
771
781
781
790
Tableau 2
0
0
1
0
2
0

Et je souhaite obtenir un ou deux tableaux qui contiendra
770 0
771 0-1
781 0-2
790 0

Les lignes des tableaux devant rester "liés" pour exécuter la bonne requete.

Bref j'ai beau tenter des boucles ou autre mais j'arrive pas à m'en sortir.
Pour la gestion du tableau 1 array_unique et c'est réglé mais comment lié ça au fait qu'il faut bidouiller le tableau 2.
Après je pensais au fonction pregmatch_all si je convertis le tout en chaine de caractère avant traitement mais bon je maîtrise pas trop.
Si vous avez des idées de méthodes, j'avoue être preneur étant bloqué.
Merci d'avance.
Jaja13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 09h44   #2
Membre habitué
 
Inscription : décembre 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 181
Points : 140
Points : 140
bonjour,
ton exemple ne présentant par de cas de "code" concret, ma première réponse serait de te suggérer d'utiliser des tableau multidimensionnel, y as tu pensé?
roduce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 10h03   #3
Invité de passage
 
Femme
Urbaniste
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Urbaniste
Secteur : Bâtiment

Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Oui, je pensais au multidimensionnel effectivement. CEpendant array unique ne s'applique pas

Pour le code c'est celui-ci :

Code :
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
 
header("Content-Type: text/html; charset=UTF-8");
session_start();
include ('../scripts/bdd_connect.php');
 
$addtr=$bdd->prepare('UPDATE element_projet SET tranche=:tr WHERE Id_item_proj= :Id_item ');
// Function permettant de décomposer l'i de l'élément et la tranche associée
function decompose($valeur)
{
$pieces = explode("-", $valeur);
$id_element=$pieces[0]; 
$tranche=$pieces[1];
return array($id_element,$tranche);
}
 
$a=$_POST['case_a_cocher'];
$c = count($a);
$b=decompose($a[1]);
// Je crais deux tablaux ayant le même nombre d'éléments, un contenant l'id et l'autre la tranche
for ($i=0;$i<$c;$i++)
{
$retour=decompose($a[$i]);
$tableau_id[]=$retour[0];
$tableau_tr[]=$retour[1];
}
// On a ci-dessous la liste unique des id
$tableau_id_uniq = array_unique($tableau_id);
//Ensuite, on va chercher dans le tableau le numéro associé à chaque id pour vérifier les doublons et créer la chaine de tranches
Je récupère de ma page précédente une liste d'id de mes objets au quel je veux associer des listes séparées par des -
Je veux donc supprimer les doublons de $tableau_id (facile avec array_ unique) mais pour les valeurs supprimées de $tableau_id il doit aussi travailler sur $tableau_tr en "fusionnant" les les lignes supprimés.
Bref pas facile à expliquer c pour ça que j'ai mis un exemple concret sans le code.
Merci
Jaja13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 10h24   #4
Membre habitué
 
Inscription : décembre 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 181
Points : 140
Points : 140
je suis pas sur d'avoir tous compris tes règles métiers.
n'hésite pas à nous dire conretement le but de ton algo, classer des pommes et poires par couleur etc...

Bref je pense que ton souci vient de ton algo globalement.
Il suffit sans doute de n'initialiser qu'un seul tableau:
Code :
1
2
3
4
5
for ($i=0;$i<$c;$i++)
{
$retour=decompose($a[$i]);
$tableau[$retour[0]]=$retour[1];
}
avec derrière un array unique pour purger les ids en double
Dis moi si ça t'aide?
roduce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 10h30   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Salut,

pour faire ce que tu souhaites il y a beaucoup plus simple :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
 
$a = array(770, 771, 771, 781, 781, 790);
$b = array(0, 0, 1, 0, 2, 0);
$r = array();
 
foreach($a as $i => $v) {
   $r[$v] .= ((strlen($r[$v])) ? '-' : NULL) . $b[$i];
}
 
?>
Enfin, j'espère que cela répond à la question
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h42   #6
Invité de passage
 
Femme
Urbaniste
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Urbaniste
Secteur : Bâtiment

Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Ok, je vais tester un peut tout ça et je vous faits part d'un retour dans le week-end, merci à tous pour vos contributions.
Jaja13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 14h36   #7
Invité de passage
 
Femme
Urbaniste
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Urbaniste
Secteur : Bâtiment

Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Merci bcp à tous et Xysyo particulièrement, ton script fonctionne. Je vais maintenant bien analyser tout ça pour comprendre en détail ta fonction.

C'est vraiment cool de m'avoir dépanner, ça faisait deux jours que je me cassais la tête, encore merci à vous.
Jaja13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h48.


 
 
 
 
Partenaires

Hébergement Web