Page 1 sur 1

Le carrousel vide

Posté : 20 juin 2013, 16:49
par Lyssorus
Bonjour,

Alors voilà mon soucis.

On m'as demandé de rende accessible en hors-ligne, le site web d'une de nos boites...

Jusque là j'étais pas mal, j'ai fait mon ptit serveur Wamp, importé la BDD, les données, photos, scripts, etc.

Et là je me heurte à un soucis... Un carrousel qui est vide...

J'ai quelques liens qui était en absolut dans la BDD et sur le site, j'ai réussi à corrigé ça, j'ai un autre carrousel que j'ai réussi également à faire fonctionner, mais celui là, je n'arrive pas à comprendre comment il fonctionne, où il prend les images, etc.

J'ai mis longtemps à me décider à poster ici parce que je ne sais même pas comment vous expliquer vraiment le soucis, vu que je ne comprends rien... En plus j'avais des variables intéressantes que je voulais afficher pour m'aider, mais pas moyen...

Bon je ne sais pas trop quoi mettre alors voilà déjà le code du carrousel (enfin je pense...)
<div class="jcarousel-big">
  <ul id="first-carousel" class="first-and-second-carousel jcarousel-skin-tango">
  	<? $q = " select * from ".$tbl[$_GET["lg"]]["art_web"]." where 1 ";
	$q.= " and affiche_home = 1 ";
	
	/* DENIS LE 26/01/2011 : Ajout du filtre THEMES SEB INTERDITS */
	$q = " select art_web.*, art_theme_web.idTHEME_WEB from ".$tbl[$_GET["lg"]]["art_web"]." AS art_web,  ";
	$q.= $tbl[$_GET["lg"]]["art_theme_web"]." art_theme_web  ";

	//$q.= " LEFT JOIN ".$tbl[$_GET["lg"]]["theme_web"]." theme_web  ";
	//$q.= " on theme_web.idTHEME_WEB=art_theme_web.idTHEME_WEB  ";
	$q.= " WHERE  art_web.IDART_WEB = art_theme_web.IDART_WEB";
	$q.= " and affiche_home = 1 ";
	
	if ($MyCompte->get_infos(lst_themes_interdits)!='') $q.= "  and art_theme_web.idTHEME_WEB NOT IN (" .$MyCompte->get_infos(lst_themes_interdits).") ";
	/* FIN 26/01/2011  */
	
	$q.= " order by rand() ";
	//$q.= " LIMIT 6 ";
	$r = mysql_query($q);
	/* 17/01/2012 : doublons des produits présents dans plusieurs THEMES WEB */
	$wtb_IDART_WEB = array();
	$wnb_art_home =0;
	while($row = mysql_fetch_array($r)  ){
		$obj_article_rapide = new Article($row["gencod_par_defaut"]);
		if($obj_article_rapide->isValide()){
			if(!in_array($row["IDART_WEB"], $wtb_IDART_WEB) && $wnb_art_home < 7 ){
				$wtb_IDART_WEB[]=$row["IDART_WEB"];
				$wnb_art_home++;
			
				
				$prix_mini = set_prix_art_web_min($row["IDART_WEB"]);
				$tab_prix_mini = explode("|",$prix_mini);
				$prix_mini = $tab_prix_mini[0];
				//$prix_mini_argument = $tab_prix_mini[1];?>
				<li><a href="<?=ecrire_url_produit($row[IDART_WEB])?>"><?=get_visuel_article($row["gencod_par_defaut"],'normal',0,1,"img",$row["IDART_WEB"]);?></a> 
					<? if($row["libelle_pastille"]!="" && $row["libelle_pastille"]!=NULL){?><p class="discount-label"><?=$row["libelle_pastille"]?></p><? }else{
					$q_pastille = " select * from ".$tbl[$_GET["lg"]]["etat_web"]." as etat, ".$tbl[$_GET["lg"]]["article"]." as art where 1 ";
					$q_pastille.= " and art.id_etat_web = etat.id_etat_web ";
					$q_pastille.= " and art.id_etat_web != 0 ";
					$q_pastille.= " and etat.libelle_pastille IS NOT NULL ";
					$q_pastille.= " and art.gencod_flo = '".$row["gencod_par_defaut"]."' ";
					$r_pastille = mysql_query($q_pastille);
					if(mysql_num_rows($r_pastille) > 0){
						$row_pastille = mysql_fetch_array($r_pastille);
						echo "<p class=\"discount-label\">".$row_pastille["libelle_pastille"]."</p>";
					}
					}?>
				  <p class="proname"><a href="<?=ecrire_url_produit($row[IDART_WEB])?>"><?=$row[designation]?></a></p>
<!--				  <p class="proinfo"><?php if($MyCompte->get_existe() && $prix_mini!=''){?>à partir de<?php }?></p>
				  <p class="proprice"><?php if($MyCompte->get_existe() && $prix_mini!=''){?><?=$prix_mini?> €<?php }?></p> -->
				  <?php /* LE 30/03/2012 RETOUR DES PRIX SUR LA HOME MEME SI PAS CONNECTER (JEAN PIERRE)*/?>
				  	<p class="proinfo"><?php if($prix_mini!=''){?>à partir de<?php }?></p>
				  <p class="proprice"><?php if($prix_mini!=''){?><?=$prix_mini?> €<?php }?></p>
				</li>
			<? } // pas déjà 
		}
	} // while
	echo "<!-- ".$q." -->";?>
  </ul>
</div>
<div class="clear"></div>
Et pour voir ce que ça donne en vrai (sur le site quoi) je vous file d'adresse en MP sans problème.

Que dire d'autre...

Bah comme je ne sais pas, ceux qui se sentent de m'aider, posez moi vos questions ^^'.

Merci.

Re: Le carrousel vide

Posté : 20 juin 2013, 20:49
par Mazarini
Bonjour,

Il est possible que <? ne soit pas reconnu comme une balise de début de php (suivant paramétrage php.ini). Il vaut mieux utiliser <?PHP.
(pour vérifier regardes dans le source html, tu retrouveras un bout de code php si ca pose vraiment problème.)

Je n'utilise jamais <?=, donc pas d'avis.

$r = mysql_query($q); => Il faut tester le code retour. Au moins $r = mysql_query($q) or die('Erreur mysql : '.mysql_error());
(normalement le code sql de ta requête est en commentaire dans le html. Testes le manuellement)

Re: Le carrousel vide

Posté : 21 juin 2013, 08:04
par Lyssorus
Bonjour, et merci pour la réponse.

Alors pour ce qui est des <?, ils passent sans problème sur mon serveur, je doute que le problème viennent de là :/
Je n'ai pas de php qui s'affiche dans le code source de la page.

Pour ce qui est des requêtes, j'ai déjà testé effectivement, et elles passe. De plus le site fonctionne très bien online, je dois juste le faire fonctionner en local pour quand la personne qui en fait la promo va sur des salon ou chez des clients ou il n'y à pas de réseau...

Donc j'ai déjà modifié pas mal d'URL qui était dans la BDD ou dans les sources du site qui était en absolue (donc forcément ça pu marche quand on est en local) et pour le deuxième carrousel, quelques URL absolue de modifié et téléchargé les dernières du site à suffit à le refaire tourner.

Mais pour celui-ci je ne trouve pas...

De plus dans cette ligne :
<p class="proname"><a href="<?=ecrire_url_produit($row[IDART_WEB])?>"><?=$row[designation]?></a></p>
J'ai voulus afficher $row[designation] en espérant trouver un <img src="l'endoit où se trouve les images"/> mais niette je n'arrive pas à l'affiché...
En fait, je me demande même si le code est vraiment interprété... Il faut que je teste les if qui sont avant je pense.

Wala.

Re: Le carrousel vide

Posté : 21 juin 2013, 09:36
par Lyssorus
Bon j'en appel à vous parce que je cherche depuis un moment sans trouver...

J'aimerais voir si je vais correctement dans mes if, suivre le trajet du code quoi.

Donc normalement j'utilise des echo ou des alert. Mais là, rien ne fonctionne :/

J'arrive à faire un <? echo "Tralalilala"; ?> juste après le <div class="jcarousel-big">

Mais dès que je vais plus loin, juste devant le premier if par exemple, et bien je n'ai plus rien :(

Auriez vous des idées pour que je puisse voir ça, ou y a t-il possibilité de mettre en route un debug ligne par ligne ?

Merci.

Re: Le carrousel vide

Posté : 21 juin 2013, 10:32
par Mazarini
Il y a xdebug... que je ne connais pas.
Je suis adepte des echo 'if 1'; et autres echo 'else 1'. Ensuite je fais des echo 'xxx = /',$xxx,'/' avec $xxx variable (ou fonction) utilisée dans les if qui coincent.

Re: Le carrousel vide

Posté : 21 juin 2013, 11:07
par Lyssorus
Oui moi aussi je met du echo partout :p

Mais là il ne s'affiche pas :'(

Dans se cas, comment faire ?

Enfin je dois mal faire ...

J'ai mis ça déjà :
<p class="proprice"><?php if($prix_mini!=''){?><?=$prix_mini?> €<?php }?></p>
                               </li>
<? echo "<li><p>Fin dernier if</p></li>";?>
Il y a surement un problème :/

(cette portion de code est tout en bas)

Re: Le carrousel vide

Posté : 21 juin 2013, 21:32
par moogli
salut,


dans la veine de Mazarini, as tu vérifier la requête SQL dans un client ? (pma ou autre).

vous devriez penser au débogueur c'est super pratique et très simple à utiliser.
la plus part des "bons" ide peuvent le faire et vous pourrez voir l'état des variables en temps réel, dérouler le script en pas à pas et vérifier le fonctionnement de la page.

quand on ne connais pas le code et / ou que l'on ne le comprend pas c'est extrêmement pratique.
je l'utilise tout les jours et je gagne beaucoup de temps sans risquer de laisser du debug dans le code ;)


@+

Re: Le carrousel vide

Posté : 24 juin 2013, 08:52
par Lyssorus
Bonjour,

Vous connaissez un débogueur pour "BlocNote" ? :p (Je plaisante hein ^^')

En fait, vu que je dois mettre le site sur le PC portable d'une personne tiers, j'ai pas trop envie de lui installer plein de trucs inutiles (pour elle) donc je fais toute les modifs du code avec le bloc note :/ Mais je pense que je peux envoyer le code sur mon PC pour tester sous DreamWeaver (mais je ne sais pas trop l'utiliser :/) il y a des choses à configurer je crois pour qu'il face tourner le PHP ?

Les requêtes SQL je les ai testé avec la console de WampServer, est-ce que c'est ça qu'il fallait faire ?

Re: Le carrousel vide

Posté : 24 juin 2013, 14:41
par Lyssorus
Alors, j'ai vu qu'apparemment mon while($row = mysql_fetch_array($r) ){ ne se fait pas j'ai fait un while($i<2){ et là effectivement mes echo apparaissent.

Et j'ai dans $r la réponse à :
select art_web.*, art_theme_web.idTHEME_WEB from ART_WEB AS art_web, ART_THEME_WEB art_theme_web WHERE art_web.IDART_WEB = art_theme_web.IDART_WEB and affiche_home = 1 order by rand()
Je n'arrive pas vraiment à comprendre cette requête :/

Et j'ai l'impression qu'il manque un AS entre ART_THEME_WEB et art_theme_web ?

C'est chaud de reprendre un site qu'on à pas fait sois même ^^'

En tout cas merci de m'aider, et désolé si je suis un peu boulet, le PHP c'est pas vraiment mon domaine ^^'.

Re: Le carrousel vide

Posté : 24 juin 2013, 15:14
par moogli
salut,


le sas est facultatif ;)

le select * c'est le mal, autant nommer les champs dont on a besoin cela éviter de récupérer des colonnes qui ne servent qu'a ralentir le select et l'échange réseau.

il s'agit d'une simple requête avec jointure (à la manière de "pépé", c'est une façon de faire plus utilisé depuis une dizaine d'année.

les sgbd étant généralement pas a cheval sur la casse les alias sont inutile.
Par contre il est courant de n'utiliser qu'une ou deux lettre dans l'alias pour limiter la lourdeur, à lire, de la requête.

cela pourrait donner ceci
SELECT aw.id, aw.truc, atw.idTHEME_WEB
  FROM art_web aw
  join art_theme_web atw
 using (idart_web)
 WHERE affiche_home = 1
 ORDER BY rand();
après il faut voir si tu a des données cohérente avec cette requete.

celle que tu indique dans la même chose et est syntaxiquement correcte. Donc si elle ne retourne pas de données c'est qu'il n'y a pas ce qui faut dans les tables ;)


quand au reste je ne classerais pas DreamWeaver comme un ide "correct" sans le tester au préalable. Pour c'est un wysiwyg (voir avec wikipedia ;) ).

eclipse, netbeans, intellij / phpstorm (et un tas d'autre que je ne connais pas) sont des ide et propose énormément de chose permettant de simplifier la vie ;)

@+

Re: Le carrousel vide

Posté : 24 juin 2013, 15:45
par Lyssorus
Merci bien pour les IDE ;) c'est bon à savoir, je ne connais que NetBean et Eclipse, vu que je m'en suis servi pour le C et le Java ^^'

Alors pour la requête, je pense que j'ai à peu près compris ce qu'elle dit en fait.

Donc on sélectionne la totalité de la table art_web et la colonne idTHEME_WEB de art_theme_web depuis les tables ART_WEB (ou art_web) et ART_THEME_WEB (ou art_theme_web), mais on ne prend que les lignes où les IDART_WEB correspondent ET où affiche_home est égale à 1
Ensuite on fout tout ça dans le désordre le plus complet.

J'ai tout bien compris ? :p

Parce que si c'est ça, j'ai les donné qui correspondent à tout ça... Donc je ne pige pas :'(

Bon j'apporte une correction, j'ai réussi à passer le while. C'est souvent ça avec moi, en parlant de mes problèmes, je trouve les solutions :p (un peu comme House XD)

Donc je continue lol, peut-être que la suite me viendra toute seul aussi :D

J'ai donc maintenant un if($obj_article_rapide->isValide()){

Ça bloque ici maintenant... Donc je cherche ce que ça veut dire :p

Re: Le carrousel vide

Posté : 24 juin 2013, 16:26
par Lyssorus
Bon alors, voilà précisément où je bloque,
$obj_article_rapide = new Article($row["gencod_par_defaut"]);
		if($obj_article_rapide->isValide()){
Mon while précédent passe, donc j'ai bien des info dans $row et dans $row, je devrais bien avoir mon gencode_par_defaut

Comment voir tout ce qu'il y a dans $row ?

Re: Le carrousel vide

Posté : 24 juin 2013, 21:43
par moogli
tu a bien compris ce que fait la requête.

maintenant il faut voir ce qui se cache derrière l'étoile de la requête.


un p'tit var_dump($row) pour aider ?



@+

Re: Le carrousel vide

Posté : 25 juin 2013, 08:23
par Lyssorus
Bonjour,

Ok grâce au var_dump j'ai affiché les données présente dans le $row, merci bien pour cette commande bien pratique :)

Par contre j'ai eu beau chercher, je n'ai rien trouvé sur l'opérateur "->" qui me pose problème dans cette ligne
if($obj_article_rapide->isValide()){
Et je ne trouve pas non plus ce que fait "new Article" parce que pour l'instant "$obj_article_rapide" est obstinément vide, alors que '$row["gencod_par_defaut"]' contient bien le gencode :(
$obj_article_rapide = new Article($row["gencod_par_defaut"]);
Et je ne trouve pas non plus le isValide() :(

J'ai un fichier .php où sont définie toute les fonctions, "config_fonction.php", mais je ne trouve pas celle-ci.

Si quelqu'un pouvait m'éclairer de ses lumières :)

Merci.

Re: Le carrousel vide

Posté : 25 juin 2013, 09:37
par Lyssorus
Bon des news...

Ça fonctionne en fait... Et depuis le début appartement ^^'

Mais je ne comprends pas quand même.

Ce carrousel sert à mettre en avant des articles du site en les affichant sur la page d'accueil.

Là j'ai sélectionner 3 articles (sur le site en local, donc ils fonctionnent bien tout les trois vu que j'ai pu les voir), sur les trois, j'en ai un qui s'affiche correctement dans le carrousel, et les deux autres qui semble ne pas être là :'(

Je pense qu'il manque des info quelque part, mais où... Je ne sais pas.

Donc je pense que c'est résolu même si je n'ai pas tout compris ^^'.

Merci pour votre aide en tout cas ;)

À bientôt !!