8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,
J'ai une incompréhension et je viens vous demander un coup de main Smiley cligne
Je vous monte tous les codes pour mieux cerner mon soucis
J'ai un code que je génère après inscription
<!-- Begin Regie CODE -->
<SCRIPT LANGUAGE="JavaScript" SRC="http://www.monsite.com/regie/banner.php?id=5">
</SCRIPT>
<NOSCRIPT>
<A HREF="http://www.monsite.com/regie/bannerclick.php?id=5" TARGET="_top">
<IMG SRC="http://www.monsite.com/regie/bannerdisplay.php?id=5" BORDER="0"></A>
</NOSCRIPT>
<!-- End Regie CODE -->

id=5 c'est normalement (st_id) l'affichage de la bannière et ben non ça n'affiche rien
alors que si je remplace 5 par 4 (4 qui est l'id ---ur_id de l'user ça fonctionne ?? c'est fou non ?
Je nage complet

(24):$sql = "SELECT st_id FROM site WHERE st_id = '$id'";
adm_show.php (29):	$sql2 = "SELECT ba_id, ba_banner FROM banner WHERE ba_id = '$id'";
banner.php (34):          st_id != '$id' AND
banner.php (74):echo "  \"$bannerex_url/bannerdisplay.php?id=$id&tid=$tid\",\"$bannerex_url/bannerclick.php?id=$id&tid=$tid\"";
banner.php (74):echo "  \"$bannerex_url/bannerdisplay.php?id=$id&tid=$tid\",\"$bannerex_url/bannerclick.php?id=$id&tid=$tid\"";
bannerclick.php (30):    $sql = "INSERT INTO log (lg_time, lg_site_ref, lg_click_me, lg_ipaddr) VALUES (now(), '$id', 1, '$REMOTE_ADDR')";
bannerclick.php (37):$sql = "UPDATE site SET st_click_me=st_click_me+1 WHERE st_id='$id'";
bannerdisplay.php (34):              st_id != '$id' AND
bannerdisplay.php (95):$sql = "SELECT lg_site_ref FROM log WHERE  lg_site_ref='$id' AND lg_ipaddr='$REMOTE_ADDR' AND (TO_DAYS(lg_time)>TO_DAYS(now())-($banner_reloaddays))";
bannerdisplay.php (102):	$sql = "INSERT INTO log (lg_time, lg_site_ref, lg_show_me, lg_ipaddr) VALUES (now(), '$id', 1, '$REMOTE_ADDR')";
bannerdisplay.php (109):    $sql = "UPDATE site SET st_show_me=st_show_me+1 WHERE st_id='$id'";
 

Vous voyez le truc ?
Merci pour vos indices Smiley biggrin
Modifié par marquito (09 Apr 2009 - 01:51)
Bonjour,

j'ai rien compris Smiley biggrin

la question est :
qu'est ce qui est faux le code généré ou l'id?

tu peux etre plus précis? (partie de code php, structure base de données?)
Ben le code qui est généré que j'ai montré plus haut est bon enfin je pense ?
Malheureusement il ne montre pas la bannière MAIS si je remplace manuellement id=5 par 4 qui est l'id de user la bannière s'affiche c'est ça que je ne pige pas ??
Pourtant dans le code que j'ai aussi posté ont peux voir st_id != '$id
voici la structure de la base
CREATE TABLE site (
   st_id int(12) NOT NULL auto_increment,
   st_user_ref int(12) DEFAULT '0' NOT NULL,
   st_cat_ref int(12) DEFAULT '0' NOT NULL,
   st_name varchar(100) NOT NULL,
   st_url varchar(100) NOT NULL,
   st_desc text NOT NULL,
   st_show_me int(32) DEFAULT '0' NOT NULL,
   st_click_me int(32) DEFAULT '0' NOT NULL,
   st_status int(2) DEFAULT '0' NOT NULL,
   st_banner blob NOT NULL,
   st_show_my int(32) DEFAULT '0' NOT NULL,
   st_click_my int(32) DEFAULT '0' NOT NULL,
   PRIMARY KEY (st_id),
   KEY st_user_ref (st_user_ref)
);
 


CREATE TABLE user (
   ur_id int(12) NOT NULL auto_increment,
   ur_name varchar(32) NOT NULL,
   ur_pasw varchar(32) NOT NULL,
   ur_mail text NOT NULL,
   ur_fname varchar(50) NOT NULL,
   ur_lname varchar(50) NOT NULL,
   PRIMARY KEY (ur_id)
);
qu'est ce que tu as dans la table 'site' ?
je parle en terme d'enregistrement.

je ne vois ni tes requêtes sql ni ton code php? donc comment comprendre?
-- Contenu de la table `site`
--

INSERT INTO `site` (`st_id`, `st_user_ref`, `st_cat_ref`, `st_name`, `st_url`, `st_desc`, `st_show_me`, `st_click_me`, `st_status`, `st_banner`, `st_show_my`, `st_click_my`) VALUES
(5, 4, 1, 'test', 'http://www.test.fr/', 'test', 9, 0, 1, '', 8, 0);


    $sql = "INSERT INTO site
              (st_user_ref, st_cat_ref, st_name, st_url, st_desc, st_status) VALUES
              ('$user[ur_id]', '$st_cat_ref', '$st_name','$st_url','$st_desc','$st_status')";
    $res = db_query($sql);
    $st_id = mysql_insert_id();
    $banner_bin = addslashes($banner_bin_temp);
    $sql = "INSERT INTO banner VALUES ('$st_id', '$banner_bin')";
    $res = db_query($sql);

ces codes là ? merci pour ton aide Smiley cligne
à quoi correspond ton :
a écrit :
bannerdisplay.php (34): st_id != '$id' AND

ou encore :
a écrit :
(24):$sql = "SELECT st_id FROM site WHERE st_id = '$id'";


ou encore :
a écrit :

adm_show.php (29): $sql2 = "SELECT ba_id, ba_banner FROM banner WHERE ba_id = '$id'";


c'est quelle code qui affiche la baniere et ou elle prend ces informations?

si tu veux de l'aide il va falloir donner plus d'informations....
Modifié par blackkus (09 Apr 2009 - 11:19)
Pas de problème je peux montrer tous le script sans soucis Smiley smile
a écrit :
c'est quelle code qui affiche la baniere et ou elle prend ces informations?

c'est celui là celui qui est généré
<!-- Begin Regie CODE -->
<SCRIPT LANGUAGE="JavaScript" SRC="http://www.monsite.com/regie/banner.php?id=5">
</SCRIPT>
<NOSCRIPT>
<A HREF="http://www.monsite.com/regie/bannerclick.php?id=5" TARGET="_top">
<IMG SRC="http://www.monsite.com/regie/bannerdisplay.php?id=5" BORDER="0"></A>
</NOSCRIPT>
<!-- End Regie CODE -->


le bannersdisplay affiche d'autres bannières en rotation ça fonctionne
le véritable soucis c'est l'affichage (banner.php?id=5")
Modifié par marquito (09 Apr 2009 - 11:38)

require("admin/config.php");
require("library.php");

db_connect();
ReadConfig();

if(check_bad_ips($REMOTE_ADDR)) {
    $tid = 0;
    $banner = fread(fopen($banner_selfadv, "r"), filesize($banner_selfadv));
    SetCookie("ctid", "$tid", "0", "/");
    echo $banner;
    exit;
}

$sql = "SELECT st_id
    FROM site
    WHERE st_show_my/st_show_me <= $show_factor AND
          st_id != '$id' AND
          st_status";

$res = db_query($sql);
$cnt = mysql_num_rows($res);

if($cnt > 0) {
    srand ((double) microtime() * 1000000);
    if($cnt == 1) {
        $show_id = 0;
    } else {
        $show_id = rand(0,$cnt-1);
    }

    $sql .= " LIMIT $show_id,1";
    $res = db_query($sql);
    $ban = mysql_fetch_array($res);
    $tid = $ban[st_id];

} else {
    $tid = 0;
}

if ($banner_selfaddon) {
    $selfadv_str="<A HREF=\"$bannerex_url\" TARGET\"_blank\"><IMG SRC=\"$bannerex_url/$banner_selfaddon\" BORDER=\"0\"></A></TD><TD>";
}

?>

function adArray() {
 for (i=0; i*2<adArray.arguments.length; i++) {
   this[i] = new Object();
   this[i].src = adArray.arguments[i*2];
   this[i].href = adArray.arguments[i*2+1];
 }
 this.length = i;
}

<?
echo "var ads = new adArray(";
echo "  \"$bannerex_url/bannerdisplay.php?id=$id&tid=$tid\",\"$bannerex_url/bannerclick.php?id=$id&tid=$tid\"";
if ($banner_self_img01 && $banner_self_url01) {echo " ,\"$banner_self_img01\",\"$banner_self_url01\"";}
if ($banner_self_img02 && $banner_self_url02) {echo " ,\"$banner_self_img02\",\"$banner_self_url02\"";}
if ($banner_self_img03 && $banner_self_url03) {echo " ,\"$banner_self_img03\",\"$banner_self_url03\"";}
echo " );\n";

?>

var ad_num = 0;
document.write('<CENTER><TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0><TR><TD><? echo $selfadv_str;?>'+
    		    '<A HREF="'+ads[ad_num].href+'" TARGET="_top"><IMG SRC="'+ads[ad_num].src+'" '+
		    'HEIGHT=60 WIDTH=468 BORDER=0 name=jsbanner></A></TD></TR></TABLE></CENTER>');

<?
if($banner_rotation_time>0) {
    $timeshift=$banner_rotation_time."000";
    ?>
    function rotateBanner() {
     if (document.images) {

	for (var i=0; i<document.links.length; i++) {
            if (document.links[i].href == ads[ad_num].href) {
		var ad_link = i;
	    }
	}

      ad_num = (ad_num+1)%ads.length;
      document.jsbanner.src = ads[ad_num].src;
      document.links[ad_link].href = ads[ad_num].href;
      setTimeout('rotateBanner()',<?echo $timeshift;?>);
     }
    }
    setTimeout('rotateBanner()',<?echo $timeshift;?>);
    <?
}
?>
[/i][/i][/i][/i]
remarque :


$sql = "SELECT st_id FROM site st_show_my/st_show_me <= $show_factor 
AND st_id != '$id' AND st_status" order by rand() limit 1"

je pense que cela peux remplacer une grande parti de ton code....

sinon

peux tu me donner le resultat d'un print $sql de ça :
marquito a écrit :

$sql = "SELECT st_id
    FROM site
    WHERE st_show_my/st_show_me <= $show_factor AND
          st_id != '$id' AND
          st_status";


puis la même chose apres que tu rajoutes t'as limites

si tu as une console sur ton MySQL lance les requetes et regarde s'il te renvoie des resultats
puis transmets la nous...
Smiley confused Vraiment c'est super sympa de m'aider
j'ai honte
a écrit :
peux tu me donner le resultat d'un print $sql de ça :

Comment tu fais ça ?
tu mets par example un :

print $sql;
die();


après le bout de code..


il ne faut pas avoir honte de ne pas savoir,

par contre il faut avoir honte de ne pas demander (du moins, quand on ne sait pas )....
Modifié par blackkus (09 Apr 2009 - 14:03)
Merci Smiley smile
Alors j'ai fais ça

$sql = "SELECT st_id
    FROM site
    WHERE st_show_my/st_show_me <= $show_factor AND
          st_id != '$id' AND
          st_status";
print $sql;

die();

et voila ce qui est affiché
a écrit :
SELECT st_id FROM site WHERE st_show_my/st_show_me <= 0.8 AND st_id != '' AND st_status

Ensuite j'ai fais
    $sql .= " LIMIT $show_id,1";
    $res = db_query($sql);
    $ban = mysql_fetch_array($res);
    $tid = $ban[st_id];
print $sql;
die();

et la j'ai ....je joins l'image c'est plus parlant
upload/6731-affichage.gif
Smiley ohwell
Modifié par marquito (09 Apr 2009 - 14:29)
t'as variable $id est vide, est ce que la requete est encore juste???
pour le second fait le print avant d'executé la requete....
Modifié par blackkus (09 Apr 2009 - 14:34)
je la refais...

dans ta requete :
a écrit :

SELECT st_id FROM site WHERE st_show_my/st_show_me <= 0.8 AND st_id != '' AND st_status


a quoi sert ton
AND st_id != ''


ou est ce que tu initialises ta variable $id?
est ce que le code viens vraiement de toi?
non le script n'est pas de moi
je l'ai trouvé sur un site allemand et il correspondait à ce que je recherchais
c'est à dire afficher des bannières en fonction des pages appelées
il génère le code en fonction que j'ai montré plus haut
<!-- Begin Regie CODE -->
<SCRIPT LANGUAGE="JavaScript" SRC="http://www.monsite.com/regie-pub/banner.php?id=5">
</SCRIPT>

ensuite il fait une rotation sur une autre bannière qui est prédéfini c'est pour ça je pense que le
AND st_id != ''
c'est pour dire ajouter la bannière id=5 à la bannière prédéfini
Modifié par marquito (09 Apr 2009 - 14:54)
non,

je pense que le
AND st_id != ''

est la pour ne pas remettre plusieurs fois la même bannière.

si tu exécutes cette requête dans un phpMyAdmin ça donne quoi?
ça affiche emplacement d'une bannière avec un point rouge et ensuite vient la bannière prédéfini
Mais tu ne trouve pas bizarre que quand je remplace le numéro de l'id site par l'id user ça marche ?
il y aurait pas une inversion qlq part ?
Bon j'ai désinstallé et réinstallé pour prendre du recul Smiley sweatdrop
Alors après plusieurs test c'est pas avec l'id de l'user que ça fonctionne...
Mais en faite avec le chiffre de id site -1 (si il me dit lors de l'enregistrement de mettre 5 ça ne fonctionne pas mais si je remplace manuellement par 4 ça affiche bien la bannière) Smiley biggol
Bon je crois que je vais essayé de trouver un autre script ça me prends trop le chou
si tu en connais un je suis preneur il y avais bien openx mais il ne fonctionne pas avec mon hébergeur dommage il avait l'air super
En tous cas ct très sympa de ta part de m'avoir aidé Smiley cligne
Modifié par marquito (09 Apr 2009 - 22:58)
Pages :