Script sur 2 bases de données

ViPHP
xTG
ViPHP | 7331 Messages

23 févr. 2011, 12:41

Dans ton script (avec ma solution, bien que celle de Myrina s'en rapproche de plus en plus), la requête est fausse puisqu'on n'a pas récupéré les emails.
Il faut donc faire :
$reponse1 = mysql_query("SELECT username FROM jom15_users LIMIT 0 , 30"); // Requête SQL
Cela dit, pourquoi ce limit ? Tu n'as que 30 utilisateurs ? Tu as prévu un système de pagination ?

Invité
Invité n'ayant pas de compte PHPfrance

23 févr. 2011, 12:54

Oulha, je dois merder car j'ai toujours le même resultat : tout sauf username.

Je commence a perdre mon latin dans le code. Dis moi stp si j'ai fait une bétise :

Code : Tout sélectionner

<?php //Connection Mysql mysql_connect("mysql5-11.perso","******","**********")or die("Problème avec la base de données"); mysql_select_db("joomla")or die ("pas de connection"); $reponse = mysql_query("SELECT inscriptions.mdp,inscriptions.mail FROM inscriptions,oubli WHERE inscriptions.mail = oubli.mail LIMIT 0 , 30"); // Requête SQL mysql_connect("sql4.modules","1184102-1","*********")or die("Problème avec la base de données"); mysql_select_db("1184102-1")or die ("pas de connection"); $reponse1 = mysql_query("SELECT username FROM jom15_users WHERE email = '$reponse[1]' LIMIT 0 , 30"); // Requête SQL // On fait une boucle pour lister tout ce que contient la table : //*********************************************************************************************************************** if ($reponse) { //************************************************************************************************************************* while( $donnees = mysql_fetch_assoc($reponse )) { $tableau[] = $donnees['mail']; $result[$donnees['mail']] = array( 'mdp' => $donnees['mdp'], 'mail' => $donnees['mail'], 'username' => ""); } function quoteStr($str) { return "'".$str."'"; } $where=implode(',',array_map(quoteStr,$tableau)); $reponse1 = mysql_query("SELECT username FROM jom15_users WHERE email in ($where) LIMIT 0 , 30"); // Requête SQL // boucle propre foreach($result as $compte) { //echo "username : {$compte['username']} | mdp : {$compte['mdp']} | email : {$compte['mail']}<br />"; ?> <tr> <td><center><font face="tahoma" size="2"><?php echo "username : {$compte['username']}"; ?></font></center></td> <td><center><font face="tahoma" size="2"><?php echo "mdp : {$compte['mdp']}"; ?></font></center></td> <td><center><font face="tahoma" size="2"><?php echo "email : {$compte['mail']}"; ?></font></center></td> </tr> <?php }

Eléphanteau du PHP | 12 Messages

23 févr. 2011, 13:55

Ou est passé ceci?
// récupération de la seconde requête
while($resultat = mysql_fetch_array($reponse1))
  $result[$resultat['mail']]['username'] = $resultat['username'];
Et en relisant ce qui a disparu, il manque une colonne dans le 2e select:
$reponse1 = mysql_query("SELECT username,email as mail FROM jom15_users
WHERE email in ($where) LIMIT 0 , 30"); // Requête SQL

Invité
Invité n'ayant pas de compte PHPfrance

23 févr. 2011, 15:01

Hello,

ca va déjà mieux. J'ai refait selon vos conseil :
<?php

//Connection Mysql
mysql_connect("mysql5-11.perso","********","******")or die("Problème avec la base de données");
mysql_select_db("joomla")or die ("pas de connection");

$reponse = mysql_query("SELECT inscriptions.mdp,inscriptions.mail FROM inscriptions,oubli WHERE inscriptions.mail = oubli.mail
LIMIT 0 , 30"); // Requête SQL


mysql_connect("sql4.modules","1184102-1","*****")or die("Problème avec la base de données");
mysql_select_db("1184102-1")or die ("pas de connection");

$reponse1 = mysql_query("SELECT username,email as mail FROM jom15_users
WHERE email in ($where) LIMIT 0 , 30"); 

// On fait une boucle pour lister tout ce que contient la table :
//***********************************************************************************************************************
if ($reponse)
{
//*************************************************************************************************************************
while( $donnees = mysql_fetch_assoc($reponse ))
{
    $tableau[] = $donnees['mail'];
    $result[$donnees['mail']] = array( 'mdp' => $donnees['mdp'], 'mail' => $donnees['mail'], 'username' => "");
}
function quoteStr($str) {
        return "'".$str."'";
}

$where=implode(',',array_map(quoteStr,$tableau));
$reponse1 = mysql_query("SELECT username FROM jom15_users
WHERE email in ($where) LIMIT 0 , 30"); // Requête SQL

// récupération de la seconde requête
while($resultat = mysql_fetch_array($reponse1))
  $result[$resultat['mail']]['username'] = $resultat['username'];
// boucle propre
foreach($result as $compte)
{
  //echo "username : {$compte['username']} | mdp : {$compte['mdp']} | email : {$compte['mail']}<br />";

?>

  <tr>

	<td><center><font face="tahoma" size="2"><?php echo "username : {$compte['username']}"; ?></font></center></td>
  
	<td><center><font face="tahoma" size="2"><?php echo "mdp : {$compte['mdp']}"; ?></font></center></td>
	
	<td><center><font face="tahoma" size="2"><?php echo "email : {$compte['mail']}"; ?></font></center></td>

  </tr>

<?php

}
et j'ai ce resultat : username : | mdp : 123456 | email : [email protected]
username: | mdp : 345678 | emaiil : [email protected]
username : test1 | mdp : | email :

C'est déja mieux car je récupère l'username de [email protected], mais pas sur la bonne ligne et je ne recupére pas l'username de [email protected]

On s'approche mais ce n'est pas encore tout à fait cela.

En tout cas merci encore pour votre aide
Amicalement

ViPHP
xTG
ViPHP | 7331 Messages

23 févr. 2011, 15:29

Ta requête $reponse1 n'est toujours pas celle donnée par Myrina. ;)

Invité
Invité n'ayant pas de compte PHPfrance

23 févr. 2011, 15:44

Mais c'est bon sang mais c'est bien sur.

En fait elle l'etait mais j'ai les deux requetes en doublon.

En plus une fois juste et une fois fausse.

J'ai donc modifié la requete fausse et cela fonctionne.

Je teste en enlevant le doublon et revient ici.

Merci, merci merci

Invité
Invité n'ayant pas de compte PHPfrance

23 févr. 2011, 16:25

Merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci, merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,merci, merci,merci,