Au secours... implode sur une ligne d'un tableau

yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005 - 24 août 2005 à 18:00
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 25 août 2005 à 11:20
bonjour a tous,
voila j'avais deja posé des questions sur ce sujet et je pensais que mon programme marchait mon non.
En fait, je voudrai utiliser la fonction implode seulement sur une ligne de mon tableau???
Voila le code:

$nbcolumns=$JourMax;
$nblignes=5 + $_SESSION['ajout_ligne'];

$sums_col=array_fill(1,$nbcolumns,0);
$sums_lig=array_fill(1,$nblignes,0);
foreach ($calendrier as $i=>$val) {
$sums_col[1+($i%$nbcolumns)] += $val;
$sums_lig[1+floor($i/$nbcolumns)] += $val;
}
for ($k=1; $k<=$nblignes; $k++){
$valOS='';
if (!empty($_POST['case_os'][$k-1]))
$valOS=' value="'.$_POST['case_os'][$k-1].'"';
$valLib='';
if (!empty($_POST['case_libelle'][$k-1]))
$valLib=' value="'.$_POST['case_libelle'][$k-1].'"';
if ((!empty($_POST['case_os'][$k-1])) && (!empty($_POST['case_libelle'][$k-1]))){
$sql1 = 'INSERT INTO formules (id,valOS,valLib,dateSel) VALUES(\'\',\''.$_POST['case_os'][$k-1].'\',\''.$_POST['case_libelle'][$k-1].'\',\''.$date2.'\')';
$req1 = mysql_query($sql1) or die('erreur de modification1');
}
echo '<tr>
<td width="6%" >
[javascript:popup(\'os.php\') OS :]

</td>
<td width="7%">
[javascript:popup(\'libelles.php\') Libelles :]

</td>';

// affichage des textbox où l'utilisateur remplit les temps de travail
for($l=1; $l<=$JourMax; $l++){
$val='';
if (!empty($calendrier[$i-1]))
$val='value="'.$calendrier[$i-1].'"';
echo '<td width="6%">

</td>';
$i++;
}
echo '<td>'.$sums_lig[$k].'</td>';
}
echo '<tr><td colspan="2"></td>';
//affichage du total par colonne
foreach ($sums_col as $key => $value) {
if ($value>1)
echo '<td bgcolor="#FF0000">'.$value.'</td>';
else
echo '<td>'.$value.'</td>';
}
echo '<td>'.array_sum($calendrier).'</td>';
?></tr></table>





Je vous remercie d'avance.

15 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
24 août 2005 à 19:20
Salut,



Fait un effort de présentation dans ton code STP. Ma pauvre vue d'informaticien est déjà assez mauvaise comme ça !



Si tu pouvais isoler le morceau utile, ou sauter des lignes, et puis
mettre un peu plus de comentaires. Voir le mieux, nous motrer un
exemple "école" de code recréant la situation.



(En plus j'ai pas trouvé de 'implode' dans ton code)



Merci pour mes yeux ;)
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
24 août 2005 à 20:29
php.net -> implode: Rassemble les éléments d'un tableau en une chaîne



Toi tu dis que tu veux faire ca sur une ligne ? "je voudrai utiliser la
fonction implode seulement sur une ligne de mon tableau"... ben $var =
$tableau[numerodetaligne] ! Tu rassemble ta ligne dans une chaîne (c'en
est déjà une mais bon).



Hehe, j'suis sur que c'est pas ça la question, mais vu l'opacité de ta demande, j'peux pas faire mieux!

THINK -> SEEK -> ASK
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 09:20
désolée pour la présentation...

je vais expliquer plus clairement:

j'ai un tableau qui s'appelle calendrier. les deux premieres colonnes sont deux champs 'os' et 'libelle' contenant des textbox.

for ($k= 1; $k<=$nblignes; $k++){

$valOS='';

if (!empty($_POST['case_os'][$k-1]))

$valOS=' value="'.$_POST['case_os'][$k-1].'"';

$valLib='';

if (!empty($_POST['case_libelle'][$k-1]))

$valLib=' value="'.$_POST['case_libelle'][$k-1].'"';

echo '<tr>

<td width="6%" >

[javascript:popup(\'os.php\') OS :]



</td>

<td width="7%">

[javascript:popup(\'libelles.php\') Libelles :]



</td>';

Le reste du tableau est un calendrier avec les jours (de 1 à jours Max) qui contient aussi des textbox

for($l=1; $l<=$JourMax; $l++){


$val ='';

if (!empty($calendrier[$i-1]))

$val='value="'.$calendrier[$i-1].'"';

echo '<td width="6%">



</td>';

$i++;

}

echo '<td>'.$sums_lig[$k].'</td>';

}



J'avais réalisé un implode:
$valeurs = implode(",", $calendrier); mais cela me prend toutes les
valeurs des textbox au niveau des jours.


Je voudrai avoir un implode juste sur une ligne en fait de 1 à jour max



J'espere que j'ai été plus clair...

merci
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 août 2005 à 10:25
Salut,



Ok, ok... En fait tu veux faire un implode sur une colone uniquement (et non un ligne)

Tu veux que tous tes jours se retrouve dans la même chaîne de carctère : "1,2,3,4,5,6,7,8,9,..."



C'est ça ???





Mais alors explique moi comment est structuré ton tableau calendrier :

"les deux premieres colonnes sont deux champs 'os' et 'libelle' contenant des textbox."

$calendrier['os'][0] = ...;

$calendrier['os'][1] = ...;

...

$calendrier['libelle'][0] = ...;

$calendrier['libelle'][1] = ...;

...

$calendrier['jour'][0] = ...;

$calendrier['jour'][1] = ...;

...



???



Dans ce cas : implode(',', $calendrier['jour']);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 10:35
non non c'est bien une ligne que je veux recuperer.

Le probleme c'est qu'une ligne est composé d'un OS et d'un Libelle et
des textbox au niveau des jours et je veux recuperer seulement les
valeurs qui sont dans les textbox sous les jours...merci
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
25 août 2005 à 10:37
Tu peux donner un exemple PRECIS stp car je sais pas pour J_G mais la moi yen a pas comprendre!

Si tu veux recuperer qu'une partie de ligne, y a les expressions regulieres ou toutes les fonctions de la famille strstr, substr, ...



*****
THINK -> SEEK -> ASK
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 août 2005 à 10:39
Alors ton tableau ressemble un peu à ça !

$calendrier[0]['os'] = ...;
$calendrier[0]['libelle'] = ...;
$calendrier[0]['jour'] = ...;
$calendrier[1]['os'] = ...;
$calendrier[1]['libelle'] = ...;
$calendrier[1]['jour'] = ...;
...

???
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 août 2005 à 10:41
Non je ne comprend pas non-plus...
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 10:43
J'ai fait des boucles pour faire le tableau

$calendrier= array();

if (!empty($_POST['calendrier']))

$calendrier=$_POST['calendrier'];

for ($k=1; $k<=$nblignes; $k++){

la je met mes OS et LIBELLES

for($l=1; $l<=$JourMax; $l++){


$val ='';
if (!empty($calendrier[$i-1]))
$val='value="'.$calendrier[$i-1].'"';
echo '<td width="6%">


</td>';
$i++;
}
}
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
25 août 2005 à 10:47
C'est ca que t'appelles un exemple precis? Moi j'entendais par la qu'il aurait ete bien de nous montrer a quoi ressemble un print_r($calendrier) juste avant que tu fasses l'implode en expliquant par un exemple ce que tu veux recuperer de print_r($calendrier)...

enjoy...



*****
THINK -> SEEK -> ASK
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 10:53
je ne peux pas faire de print_r ($calendrier) ca ne m'affiche rien
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 août 2005 à 10:59
echo(nl2br(print_r($calendrier,true)));
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
25 août 2005 à 10:59
alors c'est que ton tableau est vide! Un print_r, c'est justement fait pour afficher le contenu d'un tableau...

Cf l'exemple de http://nl3.php.net/manual/fr/function.print-r.php :



<?php$a array ('a'> 'pomme'
,
               'b' => 'banane'
,
               'c' => array ('x'
,
                             'y'
,
                             'z'
));
print_r ($a
);
?>

Donnera

Array
(
[a] => pomme
[b] => banane
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)



*****
THINK -> SEEK ->
ASK
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
25 août 2005 à 11:19
j'ai reussi a avoir un implode sur ma 1ere ligne. Mais je ne vois pas comment avoir le reste!!!



for($k=0; $k<=$JourMax-1; $k++){

$ligne1[]=$calendrier[$k];

}



$essai2=implode(',', $ligne1);

echo ($essai2);
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
25 août 2005 à 11:20
moi je laisse tomber... c'est si dur de donner un exemple precis et utilisable? Bah... bonne chance quand meme...



*****
THINK -> SEEK -> ASK
0
Rejoignez-nous