Une fonction de mise en page

Résolu/Fermé
JukeBoy - Modifié par ^Abel^ le 16/10/2016 à 16:59
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 17 oct. 2016 à 01:23
Bonjour a tous,

Voilà, je suis sur un projet en HTML/CSS/PHP et j'ai besoin d'une solution ou du moins une piste.
J'aimerai créer une fonction, où en argument je place 3 variables, un $titre, un $lien, et une $description. Jusqu'à la pas de soucis.

Cependant, j'aimerai que ces informations soit regroupées dans un "Block" où chacune des informations à un style différent (CSS), et que le tout soit cerclé de noir. Si il fallait donner un exemple ça serait comme un statut facebook ou un tweet, je voudrais une boîte contenant ce qu'il me faut.

Et a la fin, sur une simple page blanche (par défaut), cumuler ces boites les unes en dessous des autres, façon mémo.
A chaque appel de fonction sur ma page, cela créer une boite, avec mes infos dedans, le tout prenant un style CSS particulier, et la plaçant en dessous de la boite précédente.

J'espère avoir été clair, merci d'avance :) !
A voir également:

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 oct. 2016 à 19:09
Bonjour,

Quel est ton souci exactement ?
- représenter ces boites en HTML / CSS ?
- Ecrire une fonction PHP ?
- Ecrire LA fonction qui prend 3 paramètres en entrée ?
- Stocker les données quelque part pour pouvoir t'en reservir lors de l'affichage de ta "page blanche" ?

Merci de nous indiquer sur quoi tu bloques exactement et éventuellement le code que tu as commencé à écrire.

NB: Si ta question concerne la partie HTML/CSS je déplacerai la discussion dans le "bon" forum.

0
Non, mon soucis est bien un soucis de PHP. Je sais faire mes styles en CSS, et le corps de la page en HTML. Je bloque sur la fonction. Je n'arrive pas a me representer, comment a partir de la même fonction, on peut générer plusieurs blocks et incrémenter la page.
Mes 3 paramètres viennent d'une base SQL ou je stock le titre, le lien, et une description, mais là n'est pas la question.
Il doit me manquer des connaissances ou des fonctions existantes pour le faire. Comment créer un "Objet" et en mettre plusieurs exemplaires sur la même page ?
(Je n'ai pas mon ordinateur avec moi, je mettrais mes notes des que possible, j'en suis encore a l'étape d'élaboration)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > JukeBoy
16 oct. 2016 à 22:58

<?php
// La fonction
function createBlock($id,$title,$lien,$description=""){
  $html = "";
  $html .= "<div class='block' id='block_".$id."'>";
  $html .= "<div class='title'>".$title."</div>";
  $html .= "<div class='description'>".$description."</div>";
  $html .= "<div class='lien'><a href='".$lien."' rel="nofollow noopener noreferrer" target="_blank">".$lien."</a></div>";
  $html .= "</div>";
  return $html;
}

//Pour simuler le contenu de ta BDD
$arr=array();
$arr[] = array('id'=>1,'title'=>"titre 1",'lien'=>"http://www.google.fr","description"=>"ceci est le premier lien"); 
$arr[] = array('id'=>2,'title'=>"titre 2",'lien'=>"http://www.commentcamarche.net/forum/affich-34002116-une-fonction-de-mise-en-page#p34003060","description"=>"Question sur le fofo CCM");

?>

<!-- un peu de html -->
<html>
 <head>
   <title>TEST</title>
   <meta charset="utf-8">
   <style>
      .block{
		border:1px solid #0D0D00;
		background-color:#3D3D2A;
		-webkit-box-shadow: #B3B3B3 13px 13px 13px;
		-moz-box-shadow: #B3B3B3 13px 13px 13px;
		box-shadow: #B3B3B3 13px 13px 13px;
		width:300px;
		display:block;
		margin:40px
	  }
	  
     .title{
	   background-color:green;
	   
	 }
	 .description{
	   background-color:yellow;
	 }
	 .lien{
	   background-color:lightgrey;
	 }
   </style>
 </head>
 <body>
  <?php
  // Maintenant utilisation de la fonction pour afficher le contenu
  foreach($arr as $R){
    $id = $R['id'];
    $titre = $R['title'];
    $lien = $R['lien'];
    $description = $R['description'];
    echo  createBlock($id,$titre,$lien,$description);
  }
  ?>
 </body>
</html>
0
Merci beaucoup ! Cela ressemble en effet a ce que je veux quand je regarde le code. Ça me permet de comprendre comment répartir efficacement l'HTML, le CSS et le PHP.
Cependant, à la ligne :
$html .= "<div class='lien'><a href='".$lien."' rel="nofollow noopener noreferrer" target="_blank">".$lien."</a></div>";
J'obtiens :
Parse error: syntax error, unexpected T_STRING in W:\var\www\Projet\test.php on line 8
Je me suis contenté de copier coller le code pour tester, j'ai regardé la ligne et je ne vois pas de faute de syntaxe, où est mon erreur :/ ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 17/10/2016 à 00:08
Question de guillemets et d'apostrophes...
$html .= "<div class='lien'><a href='".$lien."' rel="nofollow noopener noreferrer" target="_blank" rel=\"nofollow noopener noreferrer\" target=\"_blank\">".$lien."</a></div>";
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
17 oct. 2016 à 00:10
le site bug... je n'arrive pas à te l'écrire correctement...
voici une image :

0
C'est parfait merci ! Cela fait parfaitement ce que je veux, je vais bidouiller tout ça pour obtenir le résultat que je souhaite, merci beaucoup en tout cas ! Vu comment je galère tu risques de me recroiser d'ici peu sur la section PHP ou HTML ;)
@Arthur
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
17 oct. 2016 à 01:23
Si la question est résolue, pense à cliquer sur le bouton RESOLU sous le titre de ta question.
@+
0