Recuperer des donnees de 2 tables differentes

Fermé
joboy84 - 15 sept. 2007 à 23:16
 koko - 19 sept. 2007 à 23:25
Bonjour,

j ai creer une section membre dans laquelle figurent certainent campagne pour lesquelles les utilisateurs sont rétribués à l inscription. Je souhaite faire en sorte que les publicites pour lesquelles le membre a deja valider son inscription, ne s'affichent plus dans son espace membre ! Une fois que le membre s est inscrit a la campagne, il doit cliquer sur le bouton "confirmer votre inscription" qui envoie sous forme de formulaire des données a la page confirmerinscription.php qui alimente une table "confirmecampagne" et il faudrait donc recuperer les donnees dans cette table pour que l id de la campagne a laquelle il s est inscrit ne soit plus affiche...

J ai essaye avec les jointures mais apparemment je fais quelque chose de faux car la page reste vierge et rien ne s affiche dans le navigateur...

Voila le code de la page payinscription.php...qui est la page sur laquelle s affichent les publicites et apres inscription le membre doit donc confirmer en cliquant sur un bouton de confirmation. Etant donné que c est cette page qui affiche les pub il faut donc y inserer le code pour eviter d afficher les pubs auxquelles le membre a deja souscrit... :
<?php 
 
include ('dbconnect.php'); 
 
$pseudo = .$_SESSION['pseudo'].
 
// on crée la requete SQL
$sql = "SELECT FROM campagne LEFT JOIN confirmecampagne ON campagne.idcampagne, campagne.codecampagne, campagne.nomcampagne, campagne.nombrepoints, confirmecampagne.idcampagne2 WHERE campagne.idcampagne!='confirmecampagne.idcampagne2' AND pseudo!='$pseudo'"; 
 
 
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
 
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req)) 
    {
        echo '<table width="352" height="101" border="0">
                  <tr>
                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                    <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$_SESSION['pseudo'].'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
        </div></td><br>
                  </tr>
                </table>';
   }   
 
// on ferme la connexion à mysql
mysql_close(); 
?>

J'ai une premiere table nommée "campagne" qui contient les diverses campagnes a affiche :
CREATE TABLE campagne (
  idcampagne int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  nomcampagne varchar(40) DEFAULT '0',
  regiecampagne varchar(40) DEFAULT NULL,
  codecampagne text(3000) DEFAULT NULL,
  typesupport varchar(50) DEFAULT NULL,
  datedebutcampagne date NOT NULL DEFAULT '0000-00-00',
  datefincampagne date NOT NULL DEFAULT '0000-00-00',
  nombrepoints int(10) DEFAULT '0',
  PRIMARY KEY  (idcampagne)
) TYPE=MyISAM;

Puis une autre table nommée "confirmecampagne" dans laquelle sont ajoutée les données quand le membre confirme son inscription :

CREATE TABLE confirmecampagne (
  idconfirmation int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  idcampagne2 int(10) DEFAULT '0',
  nomcampagne varchar(40) DEFAULT '0',
  nombrepoints int(10) DEFAULT '0',
  pseudo varchar(15) DEFAULT '0',
  traiteparadmin varchar(15) DEFAULT 'Non',
  dateinscription datetime NOT NULL DEFAULT '0000-00-00',
 PRIMARY KEY  (idconfirmation)
) TYPE=MyISAM;

Voici egalement la page avec le code traitant la demande de confirmation si cela vous aide..meme si elle n a rien a voir dans l histoire....juste pour que vous compreniez mieux...

confirmerinscription.php

<?php 
 
include ('dbconnect.php');
 
$sql=mysql_query("SELECT * FROM confirmecampagne WHERE idcampagne2='$idcampagne' AND pseudo='$pseudo'");
if(mysql_num_rows($sql))
{
echo"<font color=red size=3><u><b>ERREUR :</b></u><br></font><b>Vous avez déjà confirmé une inscription à cette campagne !</b>";
exit;
}  
 
$sql=mysql_query("INSERT INTO confirmecampagne (idcampagne2, nomcampagne, nombrepoints, pseudo, dateinscription) VALUES ('$idcampagne', '$nomcampagne', '$nombrepoints', '$pseudo', now())") or die('Impossible de confirmer l\inscription suite à une erreur technique...Veuillez nous en excuser !'.mysql_error());
 
 
$sq=mysql_query("SELECT * FROM confirmecampagne WHERE idcampagne2='$idcampagne' AND pseudo='$pseudo'") or die(mysql_error());
$arr=mysql_fetch_array($sq); extract($arr);
if(mysql_affected_rows) echo "<center><P><P><P><b>Votre confirmation d'inscription à la campagne $nomcampagne à été effectuée avec succès ! Vos points seront crédité après vérification de la validité de votre inscription chez notre partenaire. Cela ne devrait pas prendre plus de 48h...</b><p></center>";
?>[/code]
Et voila ! si quelqu un peut eclairer ma lanterne...Je precise que j utlise les joitures pour la premiere fois et que je pense que le probleme viens donc de la:

[code]$sql = "SELECT FROM campagne LEFT JOIN confirmecampagne ON campagne.idcampagne, campagne.codecampagne, campagne.nomcampagne, campagne.nombrepoints, confirmecampagne.idcampagne2 WHERE campagne.idcampagne!='confirmecampagne.idcampagne2' AND pseudo!='$pseudo'"; or die('Impossible dexecuter le requete avec LEFT JOIN !'.mysql_error());

merci

26 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 sept. 2007 à 23:42
Hum, regarde directement le contenu de ta table campagne avec PhPMyAdmin et surtout le champ codecampagne : si tu vois le texte $pseudo alors c'est normal que ça ne fonctionne pas !

En effet PHP ne va pas interpréter le contenu de ton champ (pourquoi le ferait-il ?) mais l'afficher tel quel c'est à dire ceci : ...$pseudo... en toutes lettres car pour lui ici c'est du texte !

Essai en remplaçant :
<td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>


par

<td colspan="2"><div align="center">'.str_replace("'.$"."pseudo.'" ,$pseudo,$data['codecampagne']).'</div></td>

Ca donne quoi ?
1
re bonsoir,

J ai reflechi et j ai peut etre trouve la solution...mais je sais pas trop comment faire..

$sql = "SELECT idcampagne, codecampagne, nomcampagne, nombrepoints FROM campagne"; 
$sql2= "SELECT idcampagne2 FROM confirmecampagne WHERE pseudo='$pseudo';

if idcampagne!=$sql2

la il faudrait mettre quelquechose?...Puis....

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req)) 
    {
        echo '<table width="352" height="101" border="0">
                  <tr>
                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                    <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$_SESSION['pseudo'].'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
        </div></td><br>
                  </tr>
                </table>';
   }   
 
// on ferme la connexion à mysql
mysql_close(); 
?>


Ca devrait aussi aller a peu pres ainsi non? Mais il faudrait effectuer la requete sql ¨+ sql2 en une seule requete mais je vois pas trop comment...
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 sept. 2007 à 09:28
Bjr

Hum, le code de ta requête SQL est fausse !

Pour récupérer les compagnes auxquels un adhérent n'a pas encore souscrit essai ceci :

select * from
campagne left join confirmecampagne
on campagne.idcampagne = confirmecampagne.idcampagne2
and confirmecampagne.pseudo='$pseudo' 
where confirmecampagne.pseudo is null



Attention le test du pseudo doit bien se fairer dans la clause "on" et pas dans la clause "where" !
0
Bonjour "PhP'..

Meme en faisant comme tu le decris cela ne fonctionne toujours pas... :-( Il ya toujours encore une page blanche...

J'ai essaye de diverses manieres differentes mais rien a faire...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 sept. 2007 à 15:57
Re

J'ai dit que ça fontionne lorsqu'on teste directement la requête dans MySQL ou PhpMyAdmin.

Mais avec ton code j'en sais rien ...

Tu es sûr que tu n'as pas une erreur PHP ?

Déjà la syntaxe $pseudo = .$_SESSION['pseudo']. c'est faux !
Ensuite es-tu bien sûr que ta session est valide ?
Fait un test en forçant la valeur du pseudo en dur.


Le code suivant fonctionne (modifie qd même les paramètres de connexion et le pseudo)

Nota : ce n'est qu'un test j'ai donc viré les sessions !


<html>
<body>
<?php 

$cfg_hostname="localhost";  // <-- Renseigne ici les paramètres pour ta propre base MySQL
$cfg_username="root";
$cfg_password="";
$cfg_database="campagne";


$link=mysql_connect($cfg_hostname, $cfg_username, $cfg_password) or die("Can\'t connect to MySql server !");

 

$pseudo = "moi";  // <-- place ici un de tes pseudos !
 
// on crée la requete SQL
$sql = "select * from ";
$sql.= "campagne left join confirmecampagne ";
$sql.= "on campagne.idcampagne = confirmecampagne.idcampagne2 ";
$sql.= "and confirmecampagne.pseudo='".$pseudo."' ";
$sql.= "where confirmecampagne.pseudo is null";
 
 
// on envoie la requête

$req=mysql_db_query($cfg_database,$sql,$link);

if (!$req)
{
	echo "query = ".$sql."\n";
	echo "mysql_errno = ".mysql_errno($link)."\n";
	echo "mysql_error = ".mysql_error($link)."\n";	
	exit;
} 

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req)) 
    {
        echo '<table width="352" height="101" border="0">
                  <tr>
                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                    <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$pseudo.'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
        </div></td><br>
                  </tr>
                </table>';
   }   
 
// on ferme la connexion à mysql
mysql_close(); 
?>
</body>
</html>

0
Re,

J ai tout fait comme tu as indique, j ai modifier les donnees de connection et ai inserer un peudo que j utilise mais la page est toujours blanche, aucune erreur mysql..

Les sessions fontionnent car si j utilise l ancien code qui ne servait qu a afficher les campagnes, cela fonctionne sans probleme.

L ancien code etait:

 <?php 

include ('dbconnect.php'); 

// on crée la requete SQL
$sql = "SELECT idcampagne, codecampagne, nomcampagne, nombrepoints FROM campagne"; 

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 


// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req)) 
    {
        echo '<table width="352" height="101" border="0">
                  <tr>
                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                    <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$_SESSION['pseudo'].'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
	</div></td><br>
                  </tr>
                </table>';
   }   

// on ferme la connexion à mysql
mysql_close(); 
?> 
0
Arf, j ai vidé mon cache et en effet cela fonctionne avec ton code...

J ai un peu modifier en ajoutant a nouveau les sessions et cela fonctionne...

Par contre les données que je récupérai avec le formulaire ne sont pas recuperees apparemment...c'est a dire codecampagne, nombrepoints et nomcampagne...?!

Voivi le nouveau code :

   <?php 


include ('dbconnect.php'); 
 

$pseudo = $_SESSION['pseudo'];  // <-- place ici un de tes pseudos !
 
// on crée la requete SQL
$sql = "select * from ";
$sql.= "campagne left join confirmecampagne ";
$sql.= "on campagne.idcampagne = confirmecampagne.idcampagne2 ";
$sql.= "and confirmecampagne.pseudo='".$pseudo."' ";
$sql.= "where confirmecampagne.pseudo is null";
 
 
// on envoie la requête

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

if (!$req)
{
	echo "query = ".$sql."\n";
	echo "mysql_errno = ".mysql_errno($link)."\n";
	echo "mysql_error = ".mysql_error($link)."\n";	
	exit;
} 

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req)) 
    {
        echo '<table width="352" height="101" border="0">
                  <tr>
                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                    <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$pseudo.'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
        </div></td><br>
                  </tr>
                </table>';
   }   
 
// on ferme la connexion à mysql
mysql_close(); 
?> 
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 sept. 2007 à 17:20
Ha oui le cache c'est vrai faut y penser ! Lol


Par contre les données que je récupérai avec le formulaire ne sont pas recuperees apparemment

Apparemment ces chamsp cachés sont initialisés avec des valeurs qui proviennent de ta base de données non ?

Nulle part tu n'utilises $_POST['idcampagne'] par ex
0
oui je n'utilise cela nulle part car avec le code d 'avant cela fonctionnait tout de meme.. D'ailleurs je viens de regarder de plus pres et en fait, il transmet certaines données, notemment le pseudo et l idcampagne... par contre pas le nombrepoints ni le nomcampagne... La variable "nombrepoints" ne s affiche meme plus sur la page alors qu avant cela s affichait...

<td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>


Alors que l idcampagne et codecampagne s affichent...

Je ne comprends pas trop vu qu on recupere toutes les données de la table "campagne" avec ton code.. non?!
0
En fait j ai trouvé! Cela est du a la jointure ! J avais en fait dans la table campagne les champs "nomcampagne" et nombrepoints" et dans la table "confirmecampagne" j avais 2 tables avec les memes nom...J ai donc simplement modifié les noms dans la 2eme table et c etait bon.

En tout cas un grand merci a toi PhP !

Juste une derniere petite question...voila si maintenant il n y a plus aucunes campagne a affiché car le membre aurait deja soucrite a toutes les campagnes disponibles, je voudrais afficher un message...

echo"<font color=red size=3><u><b>ERREUR :</b></u><br></font><b>Vous avez déjà souscrit à toutes les campagnes disponibles actuellement !</b>";


J'ai tente ma chance avec else...en faisant a la fin du formulaire mais j ai une erreur car il m affiche page blanche... :-/ :

       <tr>
                    <td colspan="2"><div align="center"><form action="confirmerinscription.php" method="post">
 <input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
 <input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
 <input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
  <input name="pseudo" type="hidden" value="'.$pseudo.'">
  <input type="submit" class="fondblanc" value="Confirmer votre inscription">
 </form>
        </div></td><br>
                  </tr>
                </table>';
   }   
 else echo"<font color=red size=3><u><b>ERREUR :</b></u><br></font><b>Vous avez déjà souscrit à toutes les campagnes disponibles actuellement !

// on ferme la connexion à mysql
mysql_close(); 
?> </b>";
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 sept. 2007 à 19:57
Ben tu vois tout à une explication :-)

Pour le message je sais pas trop ce que tu as écris mais le plus simple est de testé le nombre de lignes retournées par ta requête SQL.

PHP te fournit une fonction toute faite pour ça : que demande le peuple ? lol

La fonction s'appelle mysql_num_rows


<?php 


include ('dbconnect.php'); 
 

$pseudo = $_SESSION['pseudo'];  // <-- place ici un de tes pseudos !
 
// on crée la requete SQL
$sql = "select * from ";
$sql.= "campagne left join confirmecampagne ";
$sql.= "on campagne.idcampagne = confirmecampagne.idcampagne2 ";
$sql.= "and confirmecampagne.pseudo='".$pseudo."' ";
$sql.= "where confirmecampagne.pseudo is null";
 
 
// on envoie la requête

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

if (!$req)
{
	echo "query = ".$sql."\n";
	echo "mysql_errno = ".mysql_errno($link)."\n";
	echo "mysql_error = ".mysql_error($link)."\n";	
	exit;
} 


if (mysql_num_rows($req) > 0)
{

	// on fait une boucle qui va faire un tour pour chaque enregistrement
	while($data = mysql_fetch_array($req)) 
    	{	
        	echo '<table width="352" height="101" border="0">
                	  <tr>
	                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
        	            <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                	  </tr>
	                  <tr>
        	            <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                	  </tr>
	                  <tr>
        	            <td colspan="2"><div align="center"><form action="confirmerinscription.php" 	method="post">
		<input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
		<input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
		<input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Confirmer votre inscription">
		 </form>
	        </div></td><br>
                  </tr>
                </table>';
 	  }   
}
else
{
	echo "<font color=red size=3><u><b>ERREUR :</b></u><br></font><b>Vous avez déjà souscrit à toutes les campagnes disponibles actuellement !</b>";
}

// on ferme la connexion à mysql
mysql_close(); 
?> 



PS : à ta place j'utiliserais les feuilles de styles plutôt que d'utiliser les balises <b> et <u> obsolètes et de mettre en dur <font color ...>
0
oki merci beaucoup pour tes conseils et ton aide !

J'ai juste une derniere toute petite question qui concerne les bases mysql...

En fait pour afficher les campagnes, elles sont stocké dans la base de données campagne. J utilise la regie tradedoubler qui permet de tracker les utilisateur car on peut inserer une variable dans leurs liens.

Lorsque je colle le code directement dans ma page payinscription.php, il y a bien le pseudo qui est remplace par la variable a la fin du lien :

<a href="http://clk.tradedoubler.com/click?p=49728&a=1410783&g=16384964&epi=%27%27$pseudo.'"" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(img)g(16384964)a(1410783" border=0></a>


Par contre des que j essaye de mettre a jour le code dans mysql avec la la fin &epi='.$pseudo.'" ca me marque
 MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.$pseudo.'"" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(im' at line 1


Je ne peux pas inserer la variable a la fin avec mysql??
0
Bonjour,

j ai un peu cherché et si j ai bien compris l erreur SQL provient des guillemets ' ' ... J ai donc ajouté des addslashes epi=\'.$pseudo.\' ...J ai tenté ma chance avec les points, sans les points, avec les sessions, mais rien a y faire, le pseudo n est pas récupéré !ca me met epi= et cela reste vierge...

Pourtant c est bien dans la meme page :

echo '<table width="352" height="101" border="0">
                	  <tr>
	                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
        	            <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                	  </tr>
	                  <tr>
        	            <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                	  </tr>


Il s agit ici du '.$data['codecampagne'].' qui se charge de recuperer la campagne dans la base et de l afficher... Je ne vois pas pourquoi la variable pseudo n est pas récupéré?! ... Juste en dessous cela recupere bien la variable...
0
Je precise que si je n utilise pas la requete en sql...cela fonctionne...j ai fait un copier coller du code
<a href="http://clk.tradedoubler.com/click?p=49728&a=1410783&g=16384964&epi=%27%27$pseudo.'"" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(img)g(16384964)a(1410783" border=0></a>


juste en dessous du formulaire et la ca affiche la pub avec a la fin le pseudo de la personne...mais par contre la pub qui s affiche a partir du meme code recuperé dans la base de données, n affiche pas le pseudo...
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 sept. 2007 à 20:08
Bsr

Je ne comprends pas très bien ! Elle contient quoi exactement ta requête SQL ?

As-tu essayé de faire un "echo $sql;" en PHP pour voir avant le mysql_query ?

0
Bonsoir,

Alors en fait, j'insere des publicites a travers une interface dans l espace admin...que voici:

ajoutcamapagne.php:


<form name="regform" method="post" action="ajoutcampagne2.php">
  <table width="73%" border="0" cellspacing="3" cellpadding="3">
    <tr valign="top"> 
      <td class=bord1><table  width=92% height="296" border=0 align="center" cellpadding="2" cellspacing="0">
            <tr>
              <td width="245">Nom de la campagne :</td>
              <td width="242"><input name="nomcampagne" type="text" class="fondblanc">            </td>
            </tr>
            <tr>
              <td width="245">Régie proposant la campagne  :</td>
              <td width="242"><input name="regiecampagne" type="text" class="fondblanc">            </td>
            </tr>
            <tr>
              <td width="245">Type de campagne  :</td>
              <td width="242"><select name="typesupport">
                  <option>Lien</option>
                  <option>Banniere</option>
                </select>            </td>
            </tr>
            <tr>
			<td width="245" height="126">Code :</td>
              <td width="242"><br>
                <label>
                <textarea name="codecampagne" cols="40" rows="6" class="fondblanc">
 </label></td>
            </tr>
            <tr>
              <td>Date de début de la campagne  :</td>
              <td valign="top"><input name=datedebutcampagne class="fondblanc"></td>
            </tr>
            <tr>
              <td width="245">Date de la fin de la campagne  :</td>
              <td width="242" valign="top"><input name=datefincampagne class="fondblanc"></td>
            </tr>
			 <tr>
              <td width="245">Cette inscription vaudra   :</td>
              <td width="242" valign="top"><input name=nombrepoints class="fondblanc"> 
              points ! </td>
            </tr>
                </table>
        </td>
      </tr>
    <tr valign="top"> 
      <td class=bord1> 
        <div align="center">
          <input name="submit" type="submit" class="fondblanc" value="Ajouter la campagne">
        </div>      </td>
    </tr>
  </table>
</form>


ajoutcampagne2.php :

			  <?php 

include ('dbconnect.php');
  
$sql=mysql_query("INSERT INTO campagne (nomcampagne, regiecampagne, codecampagne, typesupport, datedebutcampagne, datefincampagne, nombrepoints) VALUES ('$nomcampagne', '$regiecampagne', '$codecampagne', '$typesupport', '$datedebutcampagne', '$datefincampagne', '$nombrepoints')") or die('Impossible d insérer les données dans la base'.mysql_error());

$sq=mysql_query("SELECT * FROM campagne WHERE nomcampagne='$nomcampagne'") or die(mysql_error());
$arr=mysql_fetch_array($sq); extract($arr);
if(mysql_affected_rows) echo "<center><P><P><P><b>Ajout de la campagne $nomcampagne effectuée avec succès !</b><p></center>";
?>


J'insere directement dans le formulaire par le biais d un copier coller, le code proposé par les regies...

Exemple:

<a href="http://clk.tradedoubler.com/click?p=49728&a=1410783&g=16384964&epi=%27%27$pseudo.'"" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(img)g(16384964)a(1410783" border=0></a>


Apres le &epi= on peut inserer la variable de son choix...qui sera ensuite visible dans les stats sur la regie en question...c'est donc pratique pour tracker les inscriptions de utilisateurs.
Le soucis c est que la pub s affiche correctement...mais je n arrive pas a faire en sorte que la variable pseudo soit pris en compte dans le lien... J'ai fait &epi='.$pseudo.' (et j ai essaye de plusieurs facons differentes)..mais rien a y faire...cela me fait &epi= (donc vierge)...

Par contre si je fais un copier coller du code directement sur la page cela m'affiche bel et bien le pseudo du membre apres &epi...

La page entierere concerne par l affichage des bannieres est presente dans cette discution au numero 10...Voici le bout de code directement concerne :

echo '<table width="352" height="101" border="0">
                	  <tr>
	                    <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
        	            <td width="199"><div align="center">Gains : '.$data['nombrepoints'].' points </div></td>
                	  </tr>
	                  <tr>
        	            <td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>
                	  </tr>
	                  <tr>
        	            <td colspan="2"><div align="center"><form action="confirmerinscription.php" 	method="post">
		<input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
		<input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
		<input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Confirmer votre inscription">
		 </form>
	        </div></td><br>
                  </tr>
                </table>';
 	  }   
}


C'est le code suivant qui se charge d afficher la banniere avec le code recupere dans la base...

<td colspan="2"><div align="center">'.$data['codecampagne'].'</div></td>


Par contre si je fais donc un copier coller direct sur la page cela fonctionne...

    	            <td colspan="2"><div align="center"><form action="confirmerinscription.php" 	method="post">
		<input name="idcampagne" type="hidden" value="'.$data['idcampagne'].'">
		<input name="nomcampagne" type="hidden" value="'.$data['nomcampagne'].'">
		<input name="nombrepoints" type="hidden" value="'.$data['nombrepoints'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Confirmer votre inscription">
		 </form>
	        </div></td><br>
			<a href="http://clk.tradedoubler.com/click?p=49728&a=1410783&g=16384964&epi=%27%27$pseudo.'" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(img)g(16384964)a(1410783" border=0></a>
                  </tr>
                </table>';
 	  }   


Voila donc je ne comprends pas pourquoi en utilisant le meme code, cela ne fonctionne pas a partir de la base de données...?!
0
Bonjour PhP,

j ai essaye comme tu es proposé mais cela ne fonctionne pas non plus...:-(

Merci tout de même..
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 10:02
Bonjour,

tu as des mélanges de simple quote et double quotes, essaie ça :

<?
echo "
<table width=352 height=101 border=0>
<tr>
<td width=137><div align=center>Campagne id : ".$data['idcampagne']."</div></td>
<td width=199><div align="center">Gains : ".$data['nombrepoints']." points </div></td>
</tr>
<tr>
<td colspan=2><div align=center>".$data['codecampagne']."</div></td>
</tr>
<tr>
<td colspan=2><div align=center><form action=\"confirmerinscription.php\" method=post>
<input name=\"idcampagne\" type=hidden value=".$data['idcampagne'].">
<input name=\"nomcampagne\" type=hidden value=".$data['nomcampagne'].">
<input name=\"nombrepoints\" type=hidden value=".$data['nombrepoints'].">
<input name=\"pseudo\" type=hidden value=".$pseudo.">
<input type=submit class=\"fondblanc\" value=\"Confirmer votre inscription\">
</form>
</div></td><br>
</tr>
</table>";
?>
0
cela ne change rien..merci tout de meme pitxu ! :-D
0
re,

On ma mis sur une piste dans un autre forum en me disant que mon probleme, c'est que le $pseudo est interprété comme chaine de caractere et pas comme variable... et que je peux resoudre le probleme avec la fonction eval()

J'ai donc fait comme suit mais cela ne fonctionne pas non plus mais je dois avoir une erreur?!

<?  echo '<table width="352" height="101" border="0">
                                <tr>
                                  <td width="137"><div align="center">Campagne id : '.$data['idcampagne'].'</div></td>
                                </tr>
                                <tr>
                                  <td colspan="2"><div align="center">eval("return '.$data['codecampagne'].'")</div></td> // <=partie affichant la pub avec le code present dans la base de données...
                                </tr><br>
      // code ajoute ci dessous directement sur la page...et cela fonctionne...
                  <a href="http://clk.tradedoubler.com/click?p=49728&a=1410783&g=16384964&epi=%27%27$pseudo.'" target="_blank"><img src="http://impfr.tradedoubler.com/imp?type(img)g(16384964)a(1410783" border=0></a>
                      </table>';
             }
?>



Et maintenant avant toutes les pub ca me marque
eval("return
et apres la pub
;")



J avais rajouter des guillements mais cela n avais rien arrange... :(
0