[RESOLU] Distribuer une liste $body sur 2 colonnes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Distribuer une liste $body sur 2 colonnes

Re: Distribuer une liste $body sur 2 colonnes

par cignet » 02 déc. 2013, 20:41

Nico !!!!
Tu es un Prince, c'est GENIAL, PARFAIT les mots même me manquent.
Tu peux jeter un coup d'oeil à l'url donnée précédemment si tu veux.

Merci Nico et encore merci à tous

Re: Distribuer une liste $body sur 2 colonnes

par nico63800 » 02 déc. 2013, 20:15

ok je cerne mieux ton pb :)
voilà une seconde proposition
essaies çà:


$body .= "\n
<table><tr>
<td><h5><strong>Horizontal</strong></h5>\n<ul>\n";
$i = 0;
foreach ($question_array as $value) {
$body .= '<li class="eci-list">' . ($i + 1) . '. ' . str_replace('"', '', stripslashes($value)) . "</li>\n";
if ($i == $last_across) {
$body .= "</ul>\n</td><td><h5><strong>Vertical</strong></h5>\n<ul>\n";
}
$i++;
}
$body .= "</ul></td></tr></table>\n";

Re: Distribuer une liste $body sur 2 colonnes

par cignet » 02 déc. 2013, 19:26

Merci beaucoup,

Mais encore une fois ce qui me perturbe c'est que je travaille sur la base de la déclaration d'un plugin déjà existant.
Je ne peux pas tout retravailler puisque certaines données prennent leurs sources dans d'autres fichiers ou à d'autres niveaux (que je ne maîtrise donc pas).

En fait dans les exemples que vous me proposez je ne vois jamais reprise la déclaration suivante :
foreach ($question_array as $value) {
$body .= '<li class="eci-list">' . ($i + 1) . '. ' . str_replace('"', '', stripslashes($value)) . "</li>\n";

qui me semble indispensable pour la redistribution des données

Voic la page concernée pour vous rendre compte, et voici le mot de passe pour y accéder : colombe
http:// www. brazza-va- bien. com / mots-croises /

Merci

Re: Distribuer une liste $body sur 2 colonnes

par sirakawa » 02 déc. 2013, 15:48

Un essai. Reste à savoir comment tu veux disposer les définitions:
DEFS HOR GRILLE
GRILLE
GRILLE
DEF VERT
ou autrement?
<style>
body {
  margin: 10px;
  font-family: helvetica, arial, sans-serif;
}
.columns {
			-webkit-columns: 4;
			-moz-columns: 4;
			columns: 4;
}
		
p {
			color: #333;
			padding: 10px;
			margin: 0;
			background: beige;
}
</style>
<?PHP

$definitions_h = array(
1=> array ("armoire"),
2 => array("chaise", "table"),
3 => array("maison", "cheminer"),
);
$nb_h = count($definitions_h);

$definitions_v = array(
1=> array ("homme"),
2 => array("femme", "pendule"),
3 => array("corps", "Levy-Strauss"),
);
$nb_v = count($definitions_v);

$textes_h ="";
for ( $i = 1; $i<= $nb_h; $i ++)
{
	$defs = $definitions_h[$i];
	$textes_h .= "<p>".$i." ";
	foreach ($defs as $definition)
	{
		$textes_h .= " ".$definition.".";	
	}
	$textes_h .= "</p>";
}
print "$textes_h";


$textes_v ="";
for ( $i = 1; $i<= $nb_v; $i ++)
{
	$defs = $definitions_v[$i];
	$textes_v .= "<p>".$i." ";
	foreach ($defs as $definition)
	{
		$textes_v .= " ".$definition.".";	
	}
	$textes_v .= "</p>";
}
print "$textes_v";
?>

Re: Distribuer une liste $body sur 2 colonnes

par cignet » 02 déc. 2013, 14:20

Bonjour et merci beaucoup à tous pour vos retours.

Mon problème ne se situe pas vraiment dans la construction du tableau ou de la div, en fait j'y ai pensé, ai essayé, mais sans résultats juste plein d'erreurs.
C'est la déclaration $body ainsi que la condition/boucle (?) foreach qui englobent et gèrent les 2 données (vertical, horizontal). Je ne sais pas comment distribuer correctement la déclaration dans sa forme actuelle… Je ne sais pas si je suis claire…
Je suis vraiment nulle en php et c'est le seul exemple sympa de mots croisés interactif que j'ai pu trouver. J'ai réussi à modifier quelques éléments à ma convenance, mais cette imbrication là me rend plus nerveuse

Re: Distribuer une liste $body sur 2 colonnes

par sirakawa » 02 déc. 2013, 10:52

Je vois peu de echo dans le code d'origine...
Un exemple non testé se trouve ici:
http://codepen.io/raphaelgoetter/pen/ehfxb

Re: Distribuer une liste $body sur 2 colonnes

par nico63800 » 02 déc. 2013, 10:35

bonjour, la remarque de orenx22 est tout à fait pertinente
faire afficher du code html par php n'est pas une bonne pratique
elle consomme du temps serveur et des ressources alors qu'on a nul besoin de php pour afficher le contenu de la page

la mise en forme par tableau pour avoir 2 colonnes est une solution , une autre est d'utiliser des div

pour exemple, dans ton cas:
(adapte la largeur des div à ton template)
<?php
	$tableau_defin_horiz  = array();
	$tableau_defin_vertic = array();
	
	for($indice=1; $indice<=15; $indice++)
	{
		$tableau_defin_horiz[$indice]   = "definition horizontale ".$indice;
		$tableau_defin_vertic[$indice]  = "definition verticale ".$indice;
	}
	
	$last_across = 15;
?>
	
<div style="width: 800px; height: auto;">

	<div style="display: block; float: left; width: 380px;">
	<h2>Horizontal</h2>
		<?php for($i=1; $i<=$last_across; $i++) : ?>
			<?php echo $tableau_defin_horiz[$i]?><br />
		<?php endfor; ?>
	</div>
	
	<div style="display: block; float: left; width: 380px;">
	<h2>Vertical</h2>
		<?php for($i=1; $i<=$last_across; $i++) : ?>
			<?php echo $tableau_defin_vertic[$i]?><br />
		<?php endfor; ?>
	</div>	
</div>
bien sur ceci n'est qu'une piste à améliorer
ca te donne une base de travail
salutations :D

Re: Distribuer une liste $body sur 2 colonnes

par orenx22 » 02 déc. 2013, 04:36

Bonjour, pourquoi tu n'utilises pas la balise 'table' ?

Je te conseil fortement aussi de ne pas confondre les deux langages, entend par là que tu n'as pas besoin de faire echo "plein de code html", la ou tu as besoin d'afficher une variable tu ouvre et tu fermes une balise php style <?php echo $var ?>

exemple pour faire un tableau html :

<div id="grille">
<table>
<thead>
<tr>
<th>col1</th>
<th>col2</th>
<th>col3</th>
</tr>
</thead>
<tbody>
<?php foreach( $result as $item) ?>
<!-- tr représente les lignes -->
<tr>
<!-- td les cellules donc les colonnes -->
<td><?php echo $item['col1'] ?></td>
<td><?php echo $item['col2'] ?></td>
<td><?php echo $item['col3'] ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
ciao

Distribuer une liste $body sur 2 colonnes

par cignet » 02 déc. 2013, 02:34

Bonjour,

Je ne suis pas du tout familiarisée avec la syntaxe php (l'html va (très) bien mais là…) et je ne sais pas comment résoudre ou en tout cas distribuer les éléments suivants sur deux colonnes (données "Vertical" et "Horizontal" cf. titre des parties en h5). MERCI D'AVANCE pour vos lumières :

-------------------------------------------

$body .= "\n<h5><strong>Horizontal</strong></h5>\n<ul>\n";
$i = 0;
foreach ($question_array as $value) {
$body .= '<li class="eci-list">' . ($i + 1) . '. ' . str_replace('"', '', stripslashes($value)) . "</li>\n";
if ($i == $last_across) {
$body .= "</ul>\n<h5><strong>Vertical</strong></h5>\n<ul>\n";
}
$i++;
}
$body .= "</ul>\n";

-------------------------------------------

Une liste de définitions (générées ailleurs et sans limite de nombre) apparaissent pour chaque catégorie (vertical ou horizontal). C'est pour des mots croisés.