Annonce

Important, migration recommandée : WordPress 2.6.3 est disponible en français.À lire avant la migration !
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.

#1 16-08-2008 14:05:07

baudry
Expert WP
Date d'inscription: 17-03-2008
Messages: 201

Creation de damier en php,avec lecture de table dans wordpress

Bonjour,

Ma configuration WP actuelle   Wordpress 2.61
- Version de WordPress :
- Thème utilisé :
- Plugins en place :
- Nom de l'hebergeur :
- Adresse du sitehttp://olivierbaudrydesign.free.fr

Problème(s) rencontré(s) :Création de damier en php,avec lecture de table dans wordpress.

Bonjour

Toujours suite à mon idée de damier en php de 6 colonnes 4 rangées à affichage aléatoire d'images, ne voulant pas avoir un truc trop lourd au niveau affichage, délai de traitement du php j'ai fais ceci, seulement comment intégrer un compteur l'idée étant toujours d'afficher les images aléatoirement et qu'un clic suffise à voir la rubrique contenant l'image:

création de la basephotos.php
:

Code:

  1. <?
  2.  
  3. $connexion=mysql_connect("localhost","root","");
  4.  
  5.  
  6. $db=mysql_select_db("monsite",$connexion);
  7.  
  8. $sql = mysql_query ("CREATE TABLE photos (
  9. id INT NOT NULL AUTO_INCREMENT,
  10. image_nom VARCHAR(40) NOT NULL,
  11. image_date DATE NOT NULL,
  12. image_taille VARCHAR(20) NOT NULL,
  13. image_categorie VARCHAR(40) NOT NULL,
  14. image_sujet VARCHAR(40) NOT NULL,
  15. image_type VARCHAR(20) NOT NULL,
  16. image_commentaire LONGTEXT NOT NULL,
  17. image_vignette LONGBLOB NOT NULL,
  18. image_fichier VARCHAR(200),
  19. PRIMARY KEY (id))");
  20.  
  21. $sql = mysql_close();
  22.  
  23. ?>
  24.  
  25. randomizer.php
  26.  
  27. <?php
  28. /*
  29. Template Name: Randomizer
  30. */
  31. ?>
  32. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transiti
  33. onal.dtd">
  34. <html xmlns="http://www.w3.org/1999/xhtml">
  35.  
  36. <head profile="http://gmpg.org/xfn/11">
  37. <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
  38. <meta name="Description" content="<?php bloginfo('description'); ?>" />
  39. <title><?php bloginfo('name'); ?><?php wp_title(); ?></title>
  40.  
  41. <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please -->
  42.  
  43. <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/common.css" type="text/css" media="screen" />
  44. <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/links.css" type="text/css" media="screen" />
  45. <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/lists.css" type="text/css" media="screen" />
  46. <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/randomizer.css" type="text/css" media="screen" />
  47. <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/menu.css" type="text/css" media="screen" />
  48.  
  49. <link rel="Shortcut Icon" href="<?php echo get_settings('home'); ?>/wp-content/themes/oupocreanum/images/favicon.
  50. ico" type="image/x-icon" />
  51. <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
  52. <link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
  53. <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" />
  54.  
  55. <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
  56. <?php wp_get_archives('type=monthly&format=link');
  57. ?>
  58. <?php //comments_popup_script(); // off by default ?>
  59. <?php wp_head(); ?>
  60.  
  61. </head>
  62.  
  63. <body>
  64. <div id="block"><!-- begin blog -->
  65. <div id="content">
  66. <h1 id="header"><a href="<?php echo get_settings('home'); ?>"><?php bloginfo('name'); ?></a></h1>
  67. <div id="random">
  68. <?
  69. include "entete.php";
  70.  
  71. $rep="randomizer";
  72. $id_rep = opendir($rep);
  73.  
  74. function vignette($fichier)
  75. {
  76. $size = getimagesize("randomizer/$fichier");
  77. $source_image = imagecreatefromjpeg("randomizer/$fichier");
  78. $dest_image = imagecreatetruecolor(120,120);
  79.  
  80. imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, 120, 120, $size[0], $size[1]);
  81. imagejpeg($dest_image, "vignettes/_$fichier", 60);
  82. imagedestroy($source_image);
  83. imagedestroy($dest_image);
  84. }
  85.  
  86. ?>
  87.  
  88. <table border=0>
  89. <tr>
  90.  
  91. <?
  92. $n=0;
  93.  
  94. while ($fichier = readdir($id_rep))
  95. {
  96. $extension=substr($fichier,-3);
  97. if($fichier!="." && $fichier!=".." && (eregi("gif",$extension)||eregi("jpg",$extension
  98. )))
  99. {
  100. vignette($fichier);
  101. echo "\n <td valign='middle' align='center'>";
  102. echo "\n <a href='Affichagephoto.php?fichier=$rep/$fichier'>
  103. <img src='vignettes/_$fichier' border='0' alt='$fichier'></a>";
  104. echo "\n </td>";
  105. $n++;
  106. if ($n==6)
  107. {
  108. echo "</tr> <tr>";
  109. $n=0;
  110. }
  111.  
  112. }
  113. }
  114. ?>
  115. </tr>
  116. </table>
  117.  
  118. <?
  119. include "basdepage.php";
  120. ?>
  121. </div>
  122.  
  123.  
  124. <?php
  125. $language=<<<LANGUAGE
  126. <ul id="menu_language">
  127. <li><a href="/" title="lire en français" id="menu_french_inactive"><span class='off'>french</span></a></li>
  128. <li><a href="/" title="read in english" id="menu_english_active"><span class='off'>english</span><a></li>
  129. </ul>
  130. LANGUAGE;
  131. $lines = split("\n", $language);
  132. foreach ($lines as $line) {
  133. $current = false;
  134. preg_match('/href="([^"]+)"/', $line, $url);
  135. if (substr($_SERVER["REQUEST_URI"], 0, 5) == substr($url[1], 0, 5)) {
  136. $line = str_replace('<a h', '<a id="current" h', $line);
  137. }
  138. echo $line."\n";
  139. }
  140. ?></ul>
  141.  
  142. <?php
  143. $menu = <<<MENU
  144. <ul id="menu_nav">
  145. <li><a href="http://olivierbaudrydesign.free.fr" title="home" id="menu_home"><span class='off'>home</span></a></li>
  146. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  147. d=5/" title="biographie" id='menu_biography'><span class='off'>biographie</span></a></li>
  148. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  149. d=22" title="cv" id="menu_cv"><span class='off'>cv</span></a></li>
  150. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  151. d=9/" title="workingprogress" id="menu_workingprogress"><span class='off'>workingprogress</span></a><
  152. /li>
  153. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  154. d=6/" title="randomizer" id="menu_randomizer_on"><span class='off'>randomizer</span></a></li>
  155. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  156. d=25/" title="videos" id="menu_videos"><span class='off'>videos</span></a></li>
  157. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  158. d=23/" title="photographies" id="menu_pictures"><span class='off'>photographies</span></a></l
  159. i>
  160. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  161. d=12/" title="sons" id="menu_sounds"><span class='off'>sons</span></a></li>
  162. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  163. d=20/" title="expositions" id="menu_exhibitions"><span class='off'>expositions</span></a></li>
  164.  
  165. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  166. d=21/" title="publications" id="menu_publications"><span class='off'>publications</span></a></li
  167. >
  168. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  169. d=15/" title="logiciels" id="menu_software"><span class='off'>logiciels</span></a></li>
  170. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  171. d=13/" title="abstracts" id="menu_abstracts"><span class='off'>abstracts</span></a></li>
  172. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  173. d=14/" title="machines" id="menu_machines"><span class='off'>machines</span></a></li>
  174. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  175. d=29/" title="artistes" id="menu_artists"><span class='off'>artistes</span></a></li>
  176. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  177. d=16/" title="bibliographie" id="menu_bibliography"><span class='off'>bibliographie</span></a></l
  178. i>
  179. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  180. d=31/" title="discographie" id="menu_discography"><span class='off'>discographie</span></a></li
  181. >
  182. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  183. d=30/" title="webographie" id="menu_webography"><span class='off'>webographie</span></a></li>
  184.  
  185. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  186. d=19/" title="citations" id="menu_citations"><span class='off'>citations</span></a></li>
  187. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  188. d=17/" title="lexique" id="menu_lexique"><span class='off'>lexique</span></a></li>
  189. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  190. d=28/" title="liens" id="menu_links"><span class='off'>liens</span></a></li>
  191. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  192. d=35/" title="forum" id="menu_forum"><span class='off'>forum</span></a></li>
  193. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  194. d=26/" title="téléchargement" id="menu_upload"><span class='off'>téléchargement</span></a></
  195. li>
  196. <li><a href="http://olivierbaudrydesign.free.fr/?page_i
  197. d=24/" title="remerciements" id="menu_thanks"><span class='off'>remerciements</span></a></l
  198. i>
  199. </ul>
  200.  
  201. MENU;
  202.  
  203. $lines = split("\n", $menu);
  204. foreach ($lines as $line) {
  205. $current = false;
  206. preg_match('/href="([^"]+)"/', $line, $url);
  207. if (substr($_SERVER["REQUEST_URI"], 0, 5) == substr($url[1], 0, 5)) {
  208. $line = str_replace('<a h', '<a id="current" h', $line);
  209. }
  210. echo $line."\n";
  211. }
  212. ?>
  213. </ul>
  214.  
  215.  
  216. <div id="search">
  217. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" name="searchform" id="searchform">
  218. <input type="text" name="s" id="s" value="search in blog..." />
  219. <input type="image" alt="submit" src="/wp-content/themes/oupocreanum/images/retur
  220. n.gif" />
  221. </form>
  222. </div>
  223. </div>
  224. <!-- end header -->
  225.  
  226.  
  227. <?php get_footer(); ?>
  228.  
  229. extr_basephoto.php
  230.  
  231. <?php
  232. include "entete.php";
  233. $connexion=mysql_connect("localhost","root","");
  234.  
  235. $db=mysql_select_db("monsite",$connexion);
  236. $requete = mysql_query ("SELECT * FROM randomizer", $connexion);
  237.  
  238. echo "<table border='0'>";
  239.  
  240. $n=0;
  241. while ($enregistrement=mysql_fetch_assoc($requete)) {
  242. $filename= "~" . $enregistrement["image_nom"] . ".jpg";
  243. $filehandle = fopen($filename, "w");
  244. $file_url = "Affichagephoto.php?fichier=" .$enregistrement["image_fichier"];
  245. fwrite($filehandle, $enregistrement["image_vignette"]);
  246. fclose($filehandle);
  247. echo "<td> <a href=$file_url> <img src=\"", $filename, "\" alt=\"", $enregistrement["nom"], "\"></td></a>\n";
  248. $n++;
  249. if ($n==6)
  250. {
  251. echo "</tr> <tr>";
  252. $n=0;
  253. }
  254. }
  255. echo "</tr></table>\n";
  256. mysql_free_result($requete);
  257. mysql_close();
  258. include "basdepage.php";
  259. ?>
  260.  
  261. affichage photo.php :
  262. <?php
  263. include "entete.php";
  264. $photo=$_GET["fichier"];
  265. echo "<br> <center>";
  266. echo "<img src='$photo' border='0'> <br>";
  267. echo "<a href='randomizer.php'>Retour sur la page Photos</a>";
  268. echo "</center>";
  269. include "basdepage.php";
  270. ?>
  271. et rempl_basephoto.php :
  272.  
  273. <?
  274.  
  275. $connexion=mysql_connect("localhost","root","");
  276.  
  277. $db=mysql_select_db("monsite",$connexion);
  278.  
  279. $rep="vignettes";
  280. $rep2="randomizer";
  281.  
  282. $id_rep = opendir($rep);
  283.  
  284. while ($fichier = readdir($id_rep))
  285. {
  286. $extension=substr($fichier,-3);
  287. if($fichier!="." && $fichier!=".." && (eregi("gif",$extension)||eregi("jpg",$extension
  288. )))
  289. {
  290. $nomimage = "$rep/$fichier";
  291. $emplacement_fichier = $rep2 . "/" .substr("$fichier",1);
  292. $nom_fichier= substr("$fichier",1,strpos("$fichier",".")-1);
  293. $mavignette = addslashes(fread(fopen($nomimage, "rb"), filesize($nomimage)));
  294. $result=mysql_query("INSERT INTO randomizer (image_nom,image_vignette,image_fichier)
  295. VALUES ('$nom_fichier','$mavignette','$emplacement_fich
  296. ier')");
  297. }
  298. }
  299.  
  300. $sql = mysql_close();
  301.  
  302. ?>
  303.  
  304. seulement voilà j'aurais besoin d'afficher un compteur et aussi je pense qu'il est possible de limiter le nombre de fichiers php pour n'en faire qu'un bizarrement le fichier randomizer ne permet pas l'affichage de la grille or si je ne grde que le traitement d'image cela fonctionne.
  305.  
  306. Je tiens à préciser que dans le répertoire du site j'ai créer un dossier randomizer afin d'y stocker les images.
  307.  
  308. Et mes pistes de bases étaient celles ci :
  309.  
  310. <?php if eregi("\.(jpeg|jpg|png)$";
  311.  
  312. <div id="random">
  313. <table id="random_table">
  314. <?php
  315. $nb_lignes=4;
  316. $nb_colonnes=6;
  317.  
  318. for($i=1;$i<=$nb_lignes;$i=$i+1){
  319.  
  320. echo "<tr>";
  321.  
  322. for($j=1;$j<=$nb_colonnes;$j=$j+1){
  323. echo '<td class="'.$couleur.'">'.$img.'</a></td>/n';
  324.  
  325. }
  326.  
  327. echo "</tr>\n";
  328.  
  329. }
  330. ?>
  331. </table>
  332.  
  333. ou encore ceci : <--- ici une bidouille php
  334. dont je ne suis pas sur pour envoyer une requette mysql histoire de récupérer les images contenues dans les posts, pages ou se trouvent les images ( workingprogress, pictures :
  335.  
  336. $query = "SELECT id FROM wp_posts WHERE post_status='publish' AND post_content REGEXP '![\[][^\]\)]([^\)])' ORDER BY RAND()";
  337. // these are regular expressions for extracting urls from above results
  338. $full_pattern = "/!\[.*?\]\(.*?\)/s";
  339. $url_pattern = "/\]\(.*?\)/s";
  340. $title_pattern = "/!\[.*?\]/s";
  341. $url_start = 2;
  342. $title_start = 2;
  343. // a function that grabs all the above data and puts it into an array named $urls
  344. $urls = getImages('workingprogress','pictures','exhibiti
  345. ons', 'abstracts', $how_many, $query, $content_query, $full_pattern, $url_pattern, $url_start, $title_pattern, $title_start); */
  346.  
  347. $files = array(); $i = -1; // Initialize some variables
  348. if ('' == $folder) $folder = './';
  349.  
  350. $handle = opendir($folder);
  351. $exts = explode(' ', $exts);
  352. while (false !== ($file = readdir($handle))) {
  353. foreach($exts as $ext) { // for each extension check the extension
  354. if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
  355. $files[] = $file; // it’s good
  356. ++$i;
  357. }
  358. }
  359. }
  360. closedir($handle); // We’re not using it anymore
  361. mt_srand((double)microtime()*1000000); // seed for PHP < 4.2 pour le raffraichissement de la page
  362. $rand = mt_rand(0, $i); // $i was incremented as we went along
  363.  
  364. header('Location: '.$folder.$files[$rand]); // Voila!
  365. ?>

Seulement ceci n'était pas correct or l'idée d'utilisée la fonction microtime était intéressante pour l'affichage aléatoire.

Un compteur servant à compter les images et permettant ainsi de n'afficher que le nombre correspondant aux cases du damier au lieu de traiter toutes les pages du sites. Mon site est à l'adresse olivierbaudrydesign.free.fr.l'idée est que sur la page randomizer je puisse ainsi cliquer sur une des cases et me retrouver ainsi sur un article dépendant de sound.php etc


C'est mon premier site web! Les css ne sont pas encore tous au point, je le sais, mais je vais le corriger une fois le php valide. Le damier n'est pas encore en place ( en fait je sais l'aspect visuel que cela devrait avoir mais on ne peut ici mettre de fichier image joint. hélas) mais justement j'essaie de simplifier la chose et voulais avoir une idée sur les scripts. Pour l'intégrer dans les pages. en html j'ai pas de soucis cela marche mais c'est pas très dynamique.

On m'a conseillé ceci : En gros l'idée pour la requête ça va être, pour chaque rubrique ( workingprogress, sounds, lexique...):
- faire un count des posts dans ma base. Si la base est indexée, c'est
une requête très légère.
(la suite est à répéter x fois selon le nombre d'images souhaitées par
rubrique)
- calculer un random entre 0 et mon count
- récupèrer la ligne dont mon id >= à mon random (et pas = parce si il
y a des trous ou que il y a un statut foireux ça va pas le faire) et dont le
statut="publish" et mettre un LIMIT 0,1 pour ne ramener que cette ligne.

Ainsi ça va faire x requêtes, mais comme il n'est ramèné qu'une ligne à
la fois, ça sera beaucoup plus léger que de laisser à la base le soin de tout filtrer puis tout trier, pour finalement ne garder que quelques lignes.

Pour être plus clair , sur
http://www.tenbyten.org/10x10.html
on peut voir un damier et à droite des liens correspondants aux page dans mon cas ceux ci n'apparaitront pas mais lors du clic dessus on doit trouver l'image dans la page correspondante. L'affichage doit être aléatoire et changer à chaque rafraichissement c'est un peu en quelque sorte l'accroche de l'article.

Pour voir en Visuel ce que ça devrait donner voir :

http://olivierbaudrydesign.free.fr/dossier damier recherche.rar

De plus j'aimerais avoir une idée sur mes scripts , j'ai essayé de suivre une méthode pas à pas pour les nuls, mais bizarrement je n'arrive pas à l'intégrer dans ma page.

Dernière modification par baudry (16-08-2008 14:06:33)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.20
© Copyright 2005-2006 WordPress France