IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Afficher le module d'un script sur un autre, étant sur le méme serveur


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut [Smarty] Afficher le module d'un script sur un autre, étant sur le méme serveur
    Bonjour,

    je souhaiterais savoir s'il est possible d'afficher le module d'un script
    sur un autre script tout deux étant sur le même serveur dans deux répertoires
    distinct.

    Mon soucis est que j'utilise prestashop et openauto classified et j'aimerais par exemple faire afficher le module nouveauté du script prestashop sur la sidebar du script openauto classified.

    J'ai essayé de faire un include tout simple par rapport à la doc smarty
    mais j'ai un message qui me dit qu'il ne trouve pas le chemin

    J'ai aussi essayé de faire un include sur une simple page php pour voir ce que cela donné et page blanche

    Ma question serait de savoir si déjà cela est possible
    et bien sur comment, un exemple serait le bienvenue

    En cherchant pendant un bon moment je suis tombé sur la fonction php curl
    mais je ne sais pas quel url mettre pour appeler uniquement le module...

    Merci

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour

    Normalement l'include template du module prestashop devrait marcher sur openauto classified

    Peut on voir comment tu fais l'include du module et à quoi ça se ressemble + le message d'erreur exact?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci krachik,

    par rapport à ce que j'ai fait par exemple si je souhaite afficher
    le module homecarousel de Pretashop qui se trouve dans l'arboresence:

    ../boutique/modules/homecarousel/homecarousel.tpl

    sur la page d'index de Open auto classified
    qui se trouve:

    ../templates/Default/index.tpl


    (le script Open auto classified étant à la racine du site
    et le script Prestashop dans le dossier boutique)


    J'ai rajouté sur

    ../templates/Default/index.tpl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {include file="../boutique/modules/homecarousel/homecarousel.tpl"}

    ce qui affiche l'erreur suivante la ou il devrait s'afficher sur la page
    d'index de Open auto classified:

    Warning: Smarty error: unable to read resource: "../boutique/modules/homecarousel/homecarousel.tpl"
    in /home/site/public_html/Includes/libs/Smarty.class.php on line 1094

    Dans Smarty.class.php de la ligne 1086 à la ligne 1109

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
        /**
         * trigger Smarty error
         *
         * @param string $error_msg
         * @param integer $error_type
         */
        function trigger_error($error_msg, $error_type = E_USER_WARNING)
        {
            trigger_error("Smarty error: $error_msg", $error_type);
        }
     
     
        /**
         * executes & displays the template results
         *
         * @param string $resource_name
         * @param string $cache_id
         * @param string $compile_id
         */
        function display($resource_name, $cache_id = null, $compile_id = null)
        {
            $this->fetch($resource_name, $cache_id, $compile_id, true);
        }

  4. #4
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    ils sont sur le même serveur mais est ce qu'ils sont sur le même domaine?
    J'ai l'impression que ton include fait dans Open auto classified est positionné par rapport à prestashop et non à Open auto classified.

    Avec l'index ../templates/Default/index.tpl faut juste voir comment est situé le dossier boutique de prestashop par rapport à au dossier template de Open auto classified

    Tu peux préciser l'arborescence des 2 CMS, tu peux mettre des XXX si tu veux histoire de voir juste les débuts de dossiers genre :
    /home/xxxx/xxxx/... /boutique/modules/homecarousel/homecarousel.tpl

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Alors oui ils sont tous deux sur le même domaine
    dans le même dossier car j'ai en faite deux domaines
    sur ce serveur un .fr et .eu

    le .eu pointe sur le dossier monsite.eu

    le chemin: /public_html/monsite.eu

    j'ai installé le script open auto directement dans ce dossier
    du coup le chemin du template de l'index est:

    /public_html/monsite.eu/templates/Default/index.tpl


    Dans le même dossier (monsite.eu) j'ai rajouté un dossier nomé boutique_auto
    et j'ai mis dedans tous les fichiers de prestashop

    le chemin du dossier: /public_html/monsite.eu/boutique_auto

    et le chemin du module à installer

    /public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl

    (j'ai fait des "copier coller" de filezilla des chemins en remplaçant juste le nom du site)

    Par contre je peux vous donner l'adresse du site si ça ne dérange pas et
    si cela peu être utile.

    Merci en tous cas

  6. #6
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Je vois mieux ce que tu veux faire , le soucis c'est que tes 2 CMS n'utilisent pas la même configuration smarty, pour Open auto classified il faut que le tpl soit dans le répertoire template et contenu le dossier associé. Or prestashop utilise une autre config qui différente, du coup un include en chemin relatif marchera pas.

    Essaies avec ceci en chemin absolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {include file='file:/public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl'}

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci, mais malheureusement ça ne marche pas non plus

    Je reçois le même message d'erreur:

    Warning: Smarty error: unable to read resource: "file:/public_html/monsite.eu/boutique_auto/modules/homecarousel/homecarousel.tpl" in /home/digicars/public_html/monsite.eu/Includes/libs/Smarty.class.php on line 1094
    Serait-il possible que d'un CMS à un autre le htaccess ou une configuration
    du serveur empêche la lecture de homecarousel.tpl ?

  8. #8
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    ah dans ce cas c'est peut être ceci qu'il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {include file='file:/home/digicars/public_html/monsite.eu/boutique_auto/modules/homecarous/homecarousel.tpl'}
    Enfin tu dois savoir mieux que moi le bon chemin mais il faut que le chemin soit absolu

    Serait-il possible que d'un CMS à un autre le htaccess ou une configuration du serveur empêche la lecture de homecarousel.tpl ?
    Possible, si ma mémoire est bonne il semblerait qu'il avait une faille (sur le fait qu'on peut se faire piquer des templates (payants) ) qui a été corrigé sur prestashop qui peut influer sur ta situation. faut vérifier si ça joue pas. A part ça les 2 CMS etant juste côte à côte faudrait vraiment une config super précise au niveau du serveur pour bloquer ce genre de chose .

    Comme j'ai dit les 2 CMS n'ayant pas les mêmes configurations smarty cause ton soucis.

    Le code de ton module que tu veux mettre ressemble à quoi?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Effectivement en rajoutant ce qui manquait ça change tout mais
    (/home/digicars)

    du coup si je met:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {include file='file:/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl'}
    j'ai l'erreur

    Fatal error: Smarty error: [in file:/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl line 42]: syntax error: unrecognized tag 'displayWtPrice' (Smarty_Compiler.class.php, line 590) in /home/digicars/public_html/digicars.eu/Includes/libs/Smarty.class.php on line 1094


    Si je fais par contre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {php}
     
    include("/home/digicars/public_html/digicars.eu/boutique_auto/modules/homecarousel/homecarousel.tpl");
     
      {/php}

    cela m'affiche sur la page le code sans les valeurs peu être est-ce une piste?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    {if $autoplay} {else} {/if} {if isset($products) AND $products}
     
        * {foreach from=$products item=product name=homeFeaturedProducts} {assign var='productLink' value=$link->getProductLink($product.id_product, $product.link_rewrite)} {$product.legend} {if $displayname}
          {$product.name|escape:htmlall:'UTF-8'|truncate:45}
          {/if} {if $displayprice}
     
          {displayWtPrice p=$product.price}
          {/if}
          {/foreach} 
     
    {else}
     
    {l s='No products for carousel' mod='homecarousel'}
    {/if}

  10. #10
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    C'est juste le tag displayWtPrice qui est pas reconnu et encore là c'est dû aux dépendances liées a prestashop.

    Je ne pensais pas que le tpl du module avait autant de variable, et donc ton include ne peut pas passer car il faut aussi tenir compte des variables et où elles ont été initialisées.

    Il faut trouver le php associé a ton tpl


    Je te déconseille l'include php de ton tpl, déjà qu'un include php pur doit être durement justifié, faire un include php d'un tpl alors

    Fais voir le php du module pour voir ce qu'on peut faire

    Une autre solution serait d'inclure en frame sur ta page open auto classified le lien vers ton module prestashop (c'est a dire que tu crées au niveau de prestashop une page dédiée au module que tu mettras en frame au niveau de l'autre CMS)

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    ok merci beaucoup, parce que je comprend la logique de smarty et ce qu'on essaie de faire la, mais c'est loin d'être innée pour moi.

    Pour les frames j'y ai pensé mais apparemment ce n'est pas super super point de vue référencement à ce que j'avais compris?

    Mais en dernier recours, je pense que je le l'utiliserais à ce moment la

    le code de homecarousel.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
     
    <?php
     
    class HomeCarousel extends Module
    {
    	private $_html = '';
    	private $_postErrors = array();
     
    	function __construct()
    	{
    		$this->name = 'homecarousel';
    		$this->tab = 'Home';
    		$this->version = '0.0.0';
     
    		parent::__construct(); // The parent construct is required for translations
     
    		$this->page = basename(__FILE__, '.php');
    		$this->displayName = $this->l('MGC Carousel of products on the home page');
    		$this->description = $this->l('Display a carousel of products in the middle of your homepage');
    	}
     
    	function install()
    	{
    		if (!Configuration::updateValue('HOME_CAROUSEL_NBR', 20) OR !parent::install() OR !$this->registerHook('home'))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_SORT', 0))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_DISPLAY_PRICE', 1))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_DISPLAY_NAME', 1))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_SKIP_CAT', 1))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY', 1))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY_DURATION', 3))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_ITEMS_VISIBLE', 5))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_ITEMS_SCROLL', 3))
    			return false;
    		if (!Configuration::updateValue('HOME_CAROUSEL_IMAGE_TYPE', 'home'))
    			return false;
    		return true;
    	}
     
    	public function getContent()
    	{
    		$output = '<h2>'.$this->displayName.'</h2>';
    		if (Tools::isSubmit('submitHomeCarousel'))
    		{
    			$nbr = intval(Tools::getValue('nbr'));
    			$sort = intval(Tools::getValue('sort'));
    			$displayprice = intval(Tools::getValue('displayprice'));
    			$displayname = intval(Tools::getValue('displayname'));
    			$skipcat = Tools::getValue('skipcat');
    			$autoplay = intval(Tools::getValue('autoplay'));
    			$autoplayduration = intval(Tools::getValue('autoplayduration'));
    			$itemsvisible = intval(Tools::getValue('itemsvisible'));
    			$itemsscroll = intval(Tools::getValue('itemsscroll'));
    			$imagetype = Tools::getValue('imagetype');
     
    			if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
    				$errors[] = $this->l('Invalid number of product');
    			else
    				Configuration::updateValue('HOME_CAROUSEL_NBR', $nbr);
     
    			Configuration::updateValue('HOME_CAROUSEL_SORT', $sort);
    			Configuration::updateValue('HOME_CAROUSEL_DISPLAY_PRICE', $displayprice);
    			Configuration::updateValue('HOME_CAROUSEL_DISPLAY_NAME', $displayname);
     
    			if (!empty($skipcat))
    				Configuration::updateValue('HOME_CAROUSEL_SKIP_CAT', implode(',',$skipcat));
     
    			Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY', $autoplay);
    			Configuration::updateValue('HOME_CAROUSEL_AUTOPLAY_DURATION', $autoplayduration);
    			Configuration::updateValue('HOME_CAROUSEL_ITEMS_VISIBLE', $itemsvisible);
    			Configuration::updateValue('HOME_CAROUSEL_ITEMS_SCROLL', $itemsscroll);
    			Configuration::updateValue('HOME_CAROUSEL_IMAGE_TYPE', $imagetype);
     
    			if (isset($errors) AND sizeof($errors))
    				$output .= $this->displayError(implode('<br />', $errors));
    			else
    				$output .= $this->displayConfirmation($this->l('Settings updated'));
    		}
    		return $output.$this->displayForm();
    	}
     
    	function recurseCategory($categories, $current, $id_category = 1, $selectids_array)
    	{
    		global $currentIndex;		
     
    		echo '<option value="'.$id_category.'"'.(in_array($id_category,$selectids_array) ? ' selected="selected"' : '').'>'.
    		str_repeat('&nbsp;', $current['infos']['level_depth'] * 5) . preg_replace('/^[0-9]+\./', '', stripslashes($current['infos']['name'])) . '</option>';
    		if (isset($categories[$id_category]))
    			foreach ($categories[$id_category] AS $key => $row)
    				$this->recurseCategory($categories, $categories[$id_category][$key], $key, $selectids_array);
    	}
     
     
    	public function displayForm()
    	{
    		global $cookie,$currentIndex;
     
    		$output = '
    					<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    						<fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
    						
    						<label>'.$this->l('Autoplay Carousel').'</label>
    						<div class="margin-form">
    							<input type="radio" name="autoplay" id="autoplay_on" value="1" '.(Tools::getValue('autoplay', Configuration::get('HOME_CAROUSEL_AUTOPLAY')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="autoplay_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
    							<input type="radio" name="autoplay" id="autoplay_off" value="0" '.(!Tools::getValue('autoplay', Configuration::get('HOME_CAROUSEL_AUTOPLAY')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="autoplay_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
    						</div>		
    						
    						<label>'.$this->l('Autoplay time').'</label>
    						<div class="margin-form">
    							<input type="text" size="5" name="autoplayduration" value="'.Tools::getValue('autoplayduration', Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION')).'" />
    							<p class="clear">'.$this->l('The time between each carousel move').'</p>
    						</div>		
    						<label>'.$this->l('Number of products in the carousel').'</label>
    						<div class="margin-form">
    							<input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_CAROUSEL_NBR')).'" />
    							<p class="clear">'.$this->l('The number of products in the carousel (default: 20)').'</p>
    						</div>
    						
    						<label>'.$this->l('Number of product visible').'</label>
    						<div class="margin-form">
    							<input type="text" size="5" name="itemsvisible" value="'.Tools::getValue('itemsvisible', Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE')).'" />
    							<p class="clear">'.$this->l('The number of products displayed in the visible part of the carousel').'</p>
    						</div>				
    									
    						<label>'.$this->l('Number of product to scroll by').'</label>
    						<div class="margin-form">
    							<input type="text" size="5" name="itemsscroll" value="'.Tools::getValue('itemsscroll', Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL')).'" />
    							<p class="clear">'.$this->l('The number of products to scroll by when clicking on the arrows or during the autoplay').'</p>
    						</div>			
    					';
     
    		/* Get the images type */
    		$imagestypes = ImageType::getImagesTypes('products');
     
    		$output .= '
    						<label>'.$this->l('Select Carousel image type').'</label>
    						<div class="margin-form">		
    							<select name="imagetype">
    					';
     
    		$currentimagetype = Configuration::get('HOME_CAROUSEL_IMAGE_TYPE');
     
    		foreach ($imagestypes AS $key => $imagetype)
    		{	
    			if ($imagetype['name'] == $currentimagetype)
    			{
    				$output .= '<option selected="selected" value="' . $imagetype['name'] . '">' . $imagetype['name'] . ' ' . $imagetype['width'] . 'x' . $imagetype['height'] . '</option>';
    			}
    			else
    			{
    				$output .= '<option value="' . $imagetype['name'] . '">' . $imagetype['name'] . ' ' . $imagetype['width'] . 'x' . $imagetype['height'] . '</option>';
    			}
    		}
     
    		$output .= '
    							</select>
    							<p class="clear">'.$this->l('Select the image type you want to use for the Carousel').'</p>									
    						</div>						
    
    						<label>'.$this->l('Display Product name').'</label>
    						<div class="margin-form">
    							<input type="radio" name="displayname" id="displayname_on" value="1" '.(Tools::getValue('displayname', Configuration::get('HOME_CAROUSEL_DISPLAY_NAME')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="displayname_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
    							<input type="radio" name="displayname" id="displayname_off" value="0" '.(!Tools::getValue('displayname', Configuration::get('HOME_CAROUSEL_DISPLAY_NAME')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="displayname_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
    						</div>	
    		
    						<label>'.$this->l('Display Price').'</label>
    						<div class="margin-form">
    							<input type="radio" name="displayprice" id="text_list_on" value="1" '.(Tools::getValue('text_list', Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="text_list_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
    							<input type="radio" name="displayprice" id="text_list_off" value="0" '.(!Tools::getValue('text_list', Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE')) ? 'checked="checked" ' : '').'/>
    							<label class="t" for="text_list_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
    						</div>						
    				  ';
     
    		/* Retrieval of the shop cats to construct the multiple select */
     
    		/* Get Skip Cat */
    		$skipcat = Configuration::get('HOME_CAROUSEL_SKIP_CAT');
     
    		if (!empty($skipcat))
    		{
    			$skipcat_array = explode(',',$skipcat);
    		}
    		else
    		{
    			$skipcat_array = array();
    		}
     
    		/* Get Skip cat select */
    		$output .= '
    						<label>'.$this->l('Shop categories to skip').'</label>
    						<div class="margin-form">		
    							<select name="skipcat[]" multiple="multiple">';
    		$categories = Category::getCategories(intval($cookie->id_lang));
    		ob_start();
    		$this->recurseCategory($categories, $categories[0][1], 1, $skipcat_array);
    		$output .= ob_get_contents();
    		ob_end_clean();
    		$output .= '
    							</select>
    							<p class="clear">'.$this->l('Select the categories you want to exclude from the carousel (Hold CTRL to select multiples)').'</p>									
    						</div>						
    					';
     
    		$output .= '
    						<label>'.$this->l('Choice of sort').'</label>
    						<div class="margin-form">
    							<select name="sort" id="sort">
    								<option value="0" '.(Configuration::get('HOME_CAROUSEL_SORT') == 0 ? 'selected' : '').'>'.$this->l('No Sort - Sort by Back Office => Catalogue -> Position').'</option>
    								<option value="1" '.(Configuration::get('HOME_CAROUSEL_SORT') == 1 ? 'selected' : '').'>'.$this->l('Random').'</option>
    								<option value="2" '.(Configuration::get('HOME_CAROUSEL_SORT') == 2 ? 'selected' : '').'>'.$this->l('Price Asc').'</option>
    								<option value="3" '.(Configuration::get('HOME_CAROUSEL_SORT') == 3 ? 'selected' : '').'>'.$this->l('Price Desc').'</option>
    								<option value="4" '.(Configuration::get('HOME_CAROUSEL_SORT') == 4 ? 'selected' : '').'>'.$this->l('Last update in first').'</option>
    								<option value="5" '.(Configuration::get('HOME_CAROUSEL_SORT') == 5 ? 'selected' : '').'>'.$this->l('Last add in first').'</option>
    								<option value="6" '.(Configuration::get('HOME_CAROUSEL_SORT') == 6 ? 'selected' : '').'>'.$this->l('Alphabetical').'</option>
    							</select>
    						</div>	
    						
    						<center><input type="submit" name="submitHomeCarousel" value="'.$this->l('Save').'" class="button" /></center>
    		
    					</fieldset>
    				</form>
    			  ';
    		return $output;
    	}
     
    	public function getProducts($idcat, $id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL)
    	{
    		global $cookie;
     
    		if (empty($idcat))
    		{
    			return false;
    		}
     
    		if ($p < 1) $p = 1;
    		if (empty($orderBy))
    			$orderBy = 'position';
    		if (empty($orderWay))
    			$orderWay = 'ASC';
    		if ($orderBy == 'id_product' OR	$orderBy == 'price' OR	$orderBy == 'date_add')
    			$orderByPrefix = 'p';
    		elseif ($orderBy == 'name')
    			$orderByPrefix = 'pl';
    		elseif ($orderBy == 'manufacturer')
    		{
    			$orderByPrefix = 'm';
    			$orderBy = 'name';
    		}
    		elseif ($orderBy == 'position')
    			$orderByPrefix = 'cp';
     
    		$sql = '
    		SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new
    		FROM `'._DB_PREFIX_.'category_product` cp
    		LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`)
    		LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)
    		LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
    		LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`)
    		LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
    		WHERE cp.`id_category` NOT IN ('.$idcat.') AND p.`active` = 1
    		GROUP BY cp.`id_product`
    		ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
    		LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n);
     
    		$result = Db::getInstance()->ExecuteS($sql);
     
    		if ($orderBy == 'price')
    			Tools::orderbyPrice($result, $orderWay);
    		if (!$result)
    			return false;
     
    		/* Modify SQL result */
    		return Product::getProductsProperties($id_lang, $result);
    	}
     
    	function hookHome($params)
    	{
    		global $smarty;
     
    		$nb = intval(Configuration::get('HOME_CAROUSEL_NBR'));
    		$sort = intval(Configuration::get('HOME_CAROUSEL_SORT'));
    		$skipcategory = Configuration::get('HOME_CAROUSEL_SKIP_CAT');
     
    		switch ($sort) {
    		    case '0':
    			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));
    			break;
    		    case '1':
    			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, 1000);
    			shuffle($products);
    			array_splice($products, ($nb ? $nb : 10));
    			break;
    		    case '2':
    			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'price', 'ASC');  
    			break;
    		    case '3':
    			$products = $this->getProducts($skipcategory,intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'price', 'DESC');  
    			break;
    		    case '4':
    			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_upd', 'DESC');  
    			break;
    		    case '5':
    			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');  
    			break;
    		    case '6':
    			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'name', 'ASC');  
    			break;
    		    default:
    			$products = $this->getProducts(intval($skipcategory,$params['cookie']->id_lang), 1, ($nb ? $nb : 10));
    			break;
    		}		
     
    		$smarty->assign(array(
    			'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
    			'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
    			'category' => $category,
    			'products' => $products,
    			'currency' => new Currency(intval($params['cart']->id_currency)),
    			'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
    			'productNumber' => sizeof($products),
    			'displayname' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_NAME'),
    			'displayprice' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE'),
    			'autoplay' => Configuration::get('HOME_CAROUSEL_AUTOPLAY'),
    			'autoplayduration' => Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION'),
    			'itemsvisible' => Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE'),
    			'itemsscroll' => Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL'),
    			'imagetype' => Configuration::get('HOME_CAROUSEL_IMAGE_TYPE')
    		));
    		return $this->display(__FILE__, 'homecarousel.tpl');
     
    	}
     
    }

  12. #12
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Citation Envoyé par poupou19 Voir le message
    Pour les frames j'y ai pensé mais apparemment ce n'est pas super super point de vue référencement à ce que j'avais compris?
    Tout à fait

    Pour revenir au problème, c'est beaucoup plus compliqué que ça, il y a pas mal de dépendances vu le code php et pour pouvoir le placer hors de son cadre il faut ajuster tout ça. En plus il y a les fichiers js, css etc à ajouter pour avoir l'effet voulu. Ce qui fait que même un include de HomeCarousel.php dans le php de open auto classified ne suffirait pas.

    Ce dont tu as besoin c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $smarty->assign(array(
    			'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
    			'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
    			'category' => $category,
    			'products' => $products,
    			'currency' => new Currency(intval($params['cart']->id_currency)),
    			'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
    			'productNumber' => sizeof($products),
    			'displayname' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_NAME'),
    			'displayprice' =>	Configuration::get('HOME_CAROUSEL_DISPLAY_PRICE'),
    			'autoplay' => Configuration::get('HOME_CAROUSEL_AUTOPLAY'),
    			'autoplayduration' => Configuration::get('HOME_CAROUSEL_AUTOPLAY_DURATION'),
    			'itemsvisible' => Configuration::get('HOME_CAROUSEL_ITEMS_VISIBLE'),
    			'itemsscroll' => Configuration::get('HOME_CAROUSEL_ITEMS_SCROLL'),
    			'imagetype' => Configuration::get('HOME_CAROUSEL_IMAGE_TYPE')
    		));
    Enfin précisément les variables qui apparaissent dans le tpl. je vais voir ça ce soir de plus près

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Vraiment je te dis merci pour ton aide!

    Pour les fichiers css et js le fichier homecarousel.tpl les appelle je suppose que ce sera une question de chemin par la suite, j espère...

    Et donc du coup il faudra carrément appeler toutes les variables directement sur open auto, mais il faudra placer le code ou ça?

    (Car il y a le fichier index.tpl, un fichier template cache (qui se modifie tout seul d'ailleur quand je modifie le .tpl) il s'appelle index.tpl.php et l'index.php à la racine)

    Du coup j'ai du mal à comprendre lequel traite index.tpl

    Merci encore, pas sympas de ma part de t'embêter le week-end par contre...

  14. #14
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Désolé du retard

    Et donc du coup il faudra carrément appeler toutes les variables directement sur open auto, mais il faudra placer le code ou ça?
    Il faudra les(homecarousel.php) placer dans le php sur lequel tu veux voir apparaître la chose. En gros si tu veux mettre ton carousel sur l'index, il faut faire un include du homecarousel.php dans l'index.php de open auto classified. De ce fait, le tpl pourra display les variables.

    (Car il y a le fichier index.tpl, un fichier template cache (qui se modifie tout seul d'ailleur quand je modifie le .tpl) il s'appelle index.tpl.php et l'index.php à la racine)

    Du coup j'ai du mal à comprendre lequel traite index.tpl
    Tu n'a pas besoin de toucher aux fichierx dans le cache, il est généré automatiquement comme tu le dis suivant dans le tpl correspondant.

    Je viens de voir de plus près comment prestashop gérait ses modules, les structures sont bien définies et bien précises et ce qui corse la chose c'est qu'il faut exporter un module sur une autre config de smarty. Pour les tags non reconnu comme displayWtPrice, c'est parce que prestashop défini aussi ses propres fonctions pour smarty dans core.assemble_plugin_filepath.php, ensuite il faut faire des définitions dans init.php etc, bref toute une bonne structure qui ne marchera pas dans une autre config de smarty différente. C'est intéressant mais j'ai pas trop de temps pour me pencher d'avantage dessus . La configuration smarty de open auto classified est plus simple.

    Les solutions que je te proposerais :
    -Vu qu'il s'agit d'un module payant, tu peux toujours essayer de voir avec eux s'il n'ont pas prévu quelque chose pour ce que tu veux faire
    -D'après ce que j'ai vu du module en question, pour ton affichage tu as juste besoin de la liste de produit + les infos comme le prix, l'image et le nom : ce que tu peux faire juste en te connectant à la base et en sachant sur quelles tables jouer, et après pour l'animation t'as le js et le css. Je vais te donner un exemple indicatif:
    Supposons que tu veux afficher la chose sur l'index, dans ton index.php open auto classified, tu vas juste faire une requête SQL pour récupérer la liste de produits sur prestashop; ce que fait la fonction getProducts présente dans le module homecarousel.php et donc tu sais sur quelles tables jouer
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $sql = '
    		SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new
    		FROM `'._DB_PREFIX_.'category_product` cp
    		LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`)
    		LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)
    		LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
    		LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`)
    		LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
    		LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
    		WHERE cp.`id_category` NOT IN ('.$idcat.') AND p.`active` = 1
    		GROUP BY cp.`id_product`
    		ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
    		LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n);
    Bien sûr il faut renseigner les variables
    Comme ça si tu mets la liste de produits dans la variable $products tu peux dans l'index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $smarty->assign("products", $products);
    Et alors dans le index.tpl ce qui est vraiment important c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     {foreach from=$products item=product name=homeFeaturedProducts} {assign var='productLink' value=$link->getProductLink($product.id_product, $product.link_rewrite)} {$product.legend} {if $displayname}
          {$product.name|escape:htmlall:'UTF-8'|truncate:45}
          {/if}
          {/foreach}
    Tu peux prendre le reste mais bon(il y aura des tags non reconnu concernant les traductions prestashop c'est à dire les {l s=''} et les fonctions prestashop). et après tu associes le css et le js qui va bien et tu as ton homecarousel adaptée à la situation . ça demande juste quelques modifs pas énormes.

    -Ou tu optes pour la solutions de frame pointant vers une page qui présente l'affiche

    -Ou alors la même chose que le point précédent mais en js en se servant de l'ajax

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup krachik,

    je vais essayer cela et l'adapter en fonction.

    je te dirais si j'arrive à me dépatouiller, Merci encore!


  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,

    et bien j'ai finalement réussi, j'ai revue les cours sur smarty et sur les jointures de table ici même et ça ma beaucoup aidé et j'ai appris pas mal de chose par la même occasion.

    Il ne me reste que deux soucis:

    Un souci sur les accents du genre é ou à qui s'affiche avec un symbole carré
    pourtant j'ai bien bien enregistré mes pages en UTF-8

    cela donne dans la base de donné Multim&egrave;tre pour Multimètre qui s'affiche comme ça Multim�tre

    En faisant de cette manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$product.name|escape:htmlall:'UTF-8'|truncate:45}
    le truncate pour raccourcir le texte et logiquement l'autre pour les accents ça ne résous rien... et c'est pire car ça supprime complétement les phrases ou il y a des accents...

    Après le dernier soucis c'est sur le ORDER BY aléatoire, sur le code du homecarousel.php posté un peu plus haut je vois qu'il y a une condition
    qui le défini, mais dans la ligne du ORDER BY j'ai une erreur qui me dit qu'il ne connait pas la fonction .pSQL

    Du coup j'avais cherché une autre solution pour un ORDER BY plus accessible à mon niveau, j'ai donc trouvé cette astuce qui ne marche pas avec moi bizarement...

    cf. SQL Server : Renvoyer les données aléatoirement Tri aléatoire ou tirage aléatoire par Christian Robert

    Du coup voila s'il peu y avoir des astuces qui me permettrait de corriger ses deux problèmes ce serait super.

    Merci mille fois en tous cas!

  17. #17
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Cool, tu as réussi à avoir ce que tu voulais

    -En ce qui concerne l'encodage, je suppose que tu as réécris la fonction qui récupère la liste de produits : vérifies si tu n'as pas mis un ut8_encode là dedans, si ton charset en bien en utf-8 ou encore si tes fichiers sont en utf-8 (tpl et php).

    -
    Après le dernier soucis c'est sur le ORDER BY aléatoire, sur le code du homecarousel.php posté un peu plus haut je vois qu'il y a une condition
    qui le défini, mais dans la ligne du ORDER BY j'ai une erreur qui me dit qu'il ne connait pas la fonction .pSQL
    pSQL est une fonction que prestashop a défini dans la class/db.php histoire de protéger les requêtes SQL d'éventuelles injections; donc si t'as ton erreur c'est que ça n'a pas été défini du côté de open auto classified:
    Dans le fichier nommé en haut ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /**
     * Sanitize data which will be injected into SQL query
     *
     * @param string $string SQL data which will be injected into SQL query
     * @param boolean $htmlOK Does data contain HTML code ? (optional)
     * @return string Sanitized data
     */
    function pSQL($string, $htmlOK = false)
    {
    	if (_PS_MAGIC_QUOTES_GPC_)
    		$string = stripslashes($string);
    	if (!is_numeric($string))
    	{
    		$string = _PS_MYSQL_REAL_ESCAPE_STRING_ ? mysql_real_escape_string($string) : addslashes($string);
    		if (!$htmlOK)
    			$string = strip_tags(nl2br2($string));
    	}
     
    	return $string;
    }
    Tu peux toujours la définir dans un fichier pour l'utiliser , mais vu que tu as là main sur toutes les variables passées dans la requête à toi de voir.

    Concernant l'autre question, il ne s'agit pas d'un tirage aléatoire mais de fixer l'ordre de récupération et suivant un champs déterminé et tu sais à quoi ressemble tes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if (empty($orderBy))
    			$orderBy = 'position';
    		if (empty($orderWay))
    			$orderWay = 'ASC';
    		if ($orderBy == 'id_product' OR	$orderBy == 'price' OR	$orderBy == 'date_add')
    			$orderByPrefix = 'p';
    		elseif ($orderBy == 'name')
    			$orderByPrefix = 'pl';
    		elseif ($orderBy == 'manufacturer')
    		{
    			$orderByPrefix = 'm';
    			$orderBy = 'name';
    		}
    		elseif ($orderBy == 'position')
    			$orderByPrefix = 'cp';
     
     
    ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'
    En gros ORDER BY champ_dans_la_table (ASC ou DESC) ces derniers concernent l'ordre de récupération. Tout devrait passer avec les variables à part pSQL dont tu as la connaissance maintenant.

    J'espère avoir répondu à tes questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de 2 scripts sur une même page
    Par incent_bzh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/11/2008, 18h54
  2. Réponses: 12
    Dernier message: 30/09/2008, 13h33
  3. [MySQL] afficher le résultat de deux tables sur un même tableau
    Par gpsevasion dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2007, 09h38
  4. Comment afficher la suite d'un texte sur la même page (sans scripts)
    Par unreal2me dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/05/2007, 23h27
  5. Réponses: 7
    Dernier message: 23/03/2007, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo