ZeDevil Posté 13 Juin 2006 Auteur Posté 13 Juin 2006 (modifié) Bon j'ai réussi à inserer le tableau dans une autre page, il s'affiche pas de probleme, mais par contre au niveau de la taille du tableau, c'est pas bon car il redimensionne tout mes autres tableaux. Pfffffffff, j'm'en sortirais pas.......en plus j'ai chaud !!! Modifié 13 Juin 2006 par ZeDevil
captain_torche Posté 13 Juin 2006 Posté 13 Juin 2006 Tu le dimensionnes en CSS, ou dans des attributs HTML ?
ZeDevil Posté 13 Juin 2006 Auteur Posté 13 Juin 2006 (modifié) Dans les attributs HTML. ils sont en % et une bordure de "0". Donc evidemment ca me met une bordure partout. Pour ecrire du texte dans ton tableau avec les fond de couleur........tu met le texte ou ? Parce que, pour un calendrier, le plus pratique consiste quand même à utiliser une base de données. Sans que tu m'explique tout car tu m'as deja a mon avis assez aidé et tu dois te dire, mais alors lui il est pas doué. Bah non, pour une fois ca n'est pas le cas....... Je fais comme je peux Un calendrier avec db ? Modifié 13 Juin 2006 par ZeDevil
captain_torche Posté 13 Juin 2006 Posté 13 Juin 2006 Là, de la manière où il est construit dynamiquement en fonction des paramètres qui lui sont passés), le seul moyen d'y ajouter du texte, est de le mettre dans un array, comme pour les couleurs. Mais si ton tableau a une taille fixe, tu peux le construire 'à la main'.
ZeDevil Posté 13 Juin 2006 Auteur Posté 13 Juin 2006 le seul moyen d'y ajouter du texte, est de le mettre dans un array, comme pour les couleurs. Mais si ton tableau a une taille fixe, tu peux le construire 'à la main'. Oui, ca va faire un peu compliqué apres, j'vais essayer à la main. Merci
captain_torche Posté 13 Juin 2006 Posté 13 Juin 2006 Par contre, tu perds l'avantage de la boucle, ce qui fait que tu devras faire autant de vérifications de style, que de cellules.
ZeDevil Posté 13 Juin 2006 Auteur Posté 13 Juin 2006 Oui c'est ce que je viend de voir. As tu lu mon message un peu plus haut, j'ai édité au moment ou tu as posté. Pour la db.
ZeDevil Posté 16 Juin 2006 Auteur Posté 16 Juin 2006 (modifié) le seul moyen d'y ajouter du texte, est de le mettre dans un array, comme pour les couleurs. Salut, J'ai essayé d'afficher les semaines de 1 à 52 dans un array, mais je n'y arrive pas. J'ai compris qu'il fallait afficher les nombres à la place de l'espace ici: echo '<td'.$class.'> </td>'; Mais cela m'affiche 'array' dans les cases. J'ai en haut mis ca: $semaines = array(1 => array('10'),2 => array('20'),); J'imagine que ca ne va pas.... Je crois qu'il faut mettre cette phrase afin ca puisse marcher, mais je ne vois pas le code a mettre foreach($semaines as $num => $tab_coul)echo '.coul_'.$num.' { background-color: #'.$tab_coul[1].'}';?> Si tu pouvais m'expliquer une derniere fois comment afficher mes semaines dans le 'array'....... Merci. Modifié 16 Juin 2006 par ZeDevil
captain_torche Posté 16 Juin 2006 Posté 16 Juin 2006 $semaines = array(1 => array('10'),2 => array('20'),); Dans la logique de l'array, il est à utiliser lorsque tu veux mettre en relation plusieurs valeurs. Là, tu me crées un tableau multidimensionnel, alors que tu n'en as pas réellement besoin. Ton souci, c'est que j'imagine qur tu appelles ton truc, de cette manière: echo $semaines[1]; Ce qui se passe, c'est que la valeur de 1, est un array (d'où le retour 'Array'). Dans ce cas de figure, il faut retourner le premier index de cet array (c'est-à-dire la valeur numéro 0) : echo $semaines[1][0]; Mais ça ne reste logique que si ce dernier array peut contenir plusieurs valeurs. Dans le cas contraire, une simple assignation de valeur est suffisante : $semaines = array(1 => '10',2 => '20'); Et dont tu pourras appeler les valeurs par : echo $semaines[1];
ZeDevil Posté 16 Juin 2006 Auteur Posté 16 Juin 2006 Merci pour ta réponse captain, Alors ca marche, mais je n'ai pas fait le tableau à la main, mais laissé comme tu l'avais fait, donc en dynamique et simplement modifié la taille de celui ci dans la valaur <table>. Ce qui rend tres bien..... Tout ca pour dire que si je met: <? echo $semaines[18] ?> Dans la cellule, bah ca me le met dans toute.........
captain_torche Posté 16 Juin 2006 Posté 16 Juin 2006 Si tu mets '18' en dur, c'est normal qu'à chaque boucle, il te ressorte la même chose Tu pourras mettre un screenshot de ton tableau, pour qu'on voie bien comment il est affiché ? Parce que tel que je l'ai créé, les valeurs d'un élément sont valables pour une cellule d'une ligne, ce qui donnerait : echo $semaines[$l][$c];
ZeDevil Posté 16 Juin 2006 Auteur Posté 16 Juin 2006 (modifié) Bah oui, c'est en dur, je sais bien c'est pour ca que je cherche le dynamisme.... Mais je ne sais pas comment augmenter le nombre de 1 à chaque fois que ca change de cellule. Voilà le screen J'espere que c'est ca que tu voulais. J'ai pas osé mettre trop grand. Modifié 16 Juin 2006 par ZeDevil
captain_torche Posté 19 Juin 2006 Posté 19 Juin 2006 Bon, j'ai modifié un peu le code, pour gérer un aujout d'élément textuel pour chaque ligne du tableau. Tu auras besoin de créer un nouveau fichier, appelé valeurs.csv, au même endroit que le script (renomme également tableau.txt en tableau.csv) : comme on utilise des valeurs séparées par des points-virgules (= Comma Separated Values), il est logique d'utiliser une extension appropriée. Je te copie-colle le nouveau code, avec en rouge les nouveaux éléments. <?php// On définit le nombre de lignes et de colonnes qu'on désire pour les tableaux$nb_lignes = 10;$nb_cell = 10;// On choisit un fichier dans lequel seront stockéés les infos de couleur$fichier_coul = 'tableau.csv';[color="#FF0000"]// On choisit un fichier dans lequel seront stockées les infos textuelles$fichier_val = 'valeurs.csv';[/color]// On met les couleurs disponibles dans un array, pour pouvoir en ajouter facilement si besoin$couleurs = array( 1 => array('Noir', '000'), 2 => array('Blanc', 'FFF'), 3 => array('Rouge', 'F00'), 4 => array('Bleu', '00F'), 5 => array('Vert', '0F0'), 6 => array('Orange', 'FF8247'));?><html><head><style type="text/css">td { width: 30px; height: 30px;}table, td { border: 1px solid black;}<?php // On effectue une boucle pour créer une classe CSS par élément de notre tableau $couleurs foreach($couleurs as $num => $tab_coul) echo '.coul_'.$num.' { background-color: #'.$tab_coul[1].'}';?></style></head><body><?php// Le code qui remplit le tableau (array) avec les valeurs demandées dans le formulaire$tab_couleurs = array();if(isset($_POST['Envoi'])) { for($l = 1; $l <= $nb_lignes; $l++) { for($c = 1; $c <= $nb_cell; $c++) { $tab_couleurs[$l][$c] = $_POST['sel_'.$l.'_'.$c]; [color="#FF0000"]$tab_valeurs[$l][$c] = str_replace(';', '{POINTVIRGULE}', $_POST['val_'.$l.'_'.$c]);[/color] } } // On enregistre le résultat dans le fichier tableau.txt $contenu_coul = ''; foreach($tab_couleurs as $liste_couleurs) $contenu_coul .= implode(';', $liste_couleurs)."\r\n"; $file = fopen($fichier_coul, 'w+'); fwrite($file, $contenu_coul); fclose($file); [color="#FF0000"]// On enregistre le résultat dans le fichier valeurs.txt $contenu_val = ''; foreach($tab_valeurs as $liste_valeurs) $contenu_val .= implode(';', $liste_valeurs)."\r\n"; $file = fopen($fichier_val, 'w+'); fwrite($file, $contenu_val); fclose($file);[/color]}// On lit le fichier pour créer l'array couleurs$array = file($fichier_coul);array_unshift($array, 0);foreach($array as $l => $cellules) { $tab_cellules = explode(';', $cellules); array_unshift($tab_cellules, 0); foreach($tab_cellules as $c => $couleur) $tab_couleurs[$l][$c] = $couleur;}[color="#FF0000"]$array = file($fichier_val);array_unshift($array, 0);foreach($array as $l => $cellules) { $tab_cellules = explode(';', $cellules); array_unshift($tab_cellules, 0); foreach($tab_cellules as $c => $valeur) $tab_valeurs[$l][$c] = str_replace('{POINTVIRGULE}', ';', $valeur);}[/color]// Tu peux activer ce morceau de code si tu veux voir le contenu de l'array/*echo '<pre>';print_r($tab_couleurs);[color="#FF0000"]print_r($tab_valeurs);[/color]echo '</pre>';*/// Construction du premier tableau, en fonction du nombre de lignes et de colonnesecho '<table>';for($l = 1; $l <= $nb_lignes; $l++) { echo '<tr>'; for($c = 1; $c <= $nb_cell; $c++) { $class = (isset($tab_couleurs[$l][$c])) ? ' class="coul_'.$tab_couleurs[$l][$c].'"' : ''; echo '<td'.$class.'>'.[color="#FF0000"]htmlentities($tab_valeurs[$l][$c])[/color].'</td>'; } echo '</tr>';}echo '</table>';echo '<h2>Formulaire : </h2>';// Constructiion du même tableau que précédemment, mais avec les champs de formulaireecho '<form name="test" method="post" action="'.$_SERVER['PHP_SELF'].'">';echo '<table>';for($l = 1 ; $l <= $nb_lignes; $l++) { echo '<tr>'; for($c = 1; $c <= $nb_cell; $c++) { $class = (isset($tab_couleurs[$l][$c])) ? ' class="coul_'.$tab_couleurs[$l][$c].'"' : ''; echo '<td'.$class.'>'; // Chaque select est construit de la manière suivante : sel_numeroligne_numerocolonne echo '<select name="sel_'.$l.'_'.$c.'">'; // On génère ici autant d'options qu'on a d'éléments dans l'array $couleurs foreach($couleurs as $num => $tab_couleur) { $selected = ($tab_couleurs[$l][$c] == $num) ? ' selected="selected"' : ''; echo '<option value="'.$num.'"'.$selected.'>'.$tab_couleur[0].'</option>'; } echo '</select>'; [color="#FF0000"]echo '<input type="text" name="val_'.$l.'_'.$c.'" value="'.$tab_valeurs[$l][$c].'" />';[/color] echo '</td>'; } echo '</tr>';}echo '</table>';echo '<input type="submit" name="Envoi" value="Envoyer" />';echo '</form>';echo '</body>';echo '</html>';?> Comme les valeurs sont enregistrées dans un fichier équivalent à un CSV (j'ai modifié l'extension par confort), il est important de ne pas avoir de point-virgule dans tes textes. C'est pourquoi je fais une transformation avec str_replace, que tu verras dans le code, en une entité {POINTVIRGULE}, qu'il faut bien évidemment retransformer pour l'affichage. J'ai également ajouté quelques couleurs (mais il ne tient qu'à toi d'en ajouter d'autres), pour améliorer la lisibilité de ton tableau. Pour finir, un conseil : Lis, relis et comprends le code. Ca ne sert à rien de copier-coller. L'idéal étant que tu puisses le refaire 'à ta sauce', sans avoir à regarder l'original.
ZeDevil Posté 19 Juin 2006 Auteur Posté 19 Juin 2006 Merci pour ce travail captain, Il est evident que je ne vais pas faire un simple copier coller. Ca ne m'apprendra pas grand chose. En plus ca m'a l'air assez complexe, vu d'ou je suis. Donc, à comprendre obligatoirement. Je vais deja voir ce que donne ton code. Encore merci pour ta précieuse aide.
ZeDevil Posté 19 Juin 2006 Auteur Posté 19 Juin 2006 (modifié) Bon apres compréhesion du script, j'ai une petite question. J'ai réussi à faire tout ce que je voulais au niveau des modification sauf une chose. Les champs de texte, je n'en ai en fait pas réélement besoin pour ce que je veux faire actuellement (mais ca va me servir pour autre chose). Vu que mon texte est fixe, je n'ai pas besoin de le changer tout le temps. J'ai essayé de virer les input, enfin j'ai pas essayé je les ai enlevé, mais lors de l'envoie, ca envoie comme si ils étaient vide. Alors qu'il faudrait juste qu'il ne modifie pas le fichier valeur.csv. Je fais en fait juste afficher le texte à la place du input. Modifié 19 Juin 2006 par ZeDevil
captain_torche Posté 19 Juin 2006 Posté 19 Juin 2006 Il faut donc tout d'abord que tu enlèves la création de l'array $tab_valeurs, puis que tu enlèves l'écriture du fichier. Ensuite, il faudra juste gérer l'affichage dans ton second tableau, en faisant comme pour le premier.
ZeDevil Posté 19 Juin 2006 Auteur Posté 19 Juin 2006 (modifié) Pour l'affichage, y'a pas de probleme, c'est deja fait, mais c'est le fait d'avoir l'ecriture du fichier que je n'arrivais pas a comprendre. Je vais tester. EDIT: Voilà je pense que c'est bon, en tout cas ca ne modifie plus les données mais les laisse affichées. Ca m'a l'air terminé, j'ai encore des modif de couleurs a faire et des changements de tableau, mais rien que je ne puisse faire seul je pense. Merci captain !!! Modifié 19 Juin 2006 par ZeDevil
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant