Problème de requète pour afficher des informations sur les enregistrés

msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013
- 9 janv. 2012 à 09:19
Lyle56
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
- 10 janv. 2012 à 16:49
salut . j'ai une base de donnée que j'ai nommée autoecole et deux tables candidat et payement .
je veux afficher des information issu des deux tables partir du champs Ncandidat (qui se trouve dans les tables) .
je viens a vous pour avoir de l'aide .
voici le code que j'ai tenté mais qui n'affiche rien .


<?php
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
 include("connection.php");
$id= (int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
$sql = "SELECT DISTINCT Ncandidat,nom,pieceP,contact,nationalite FROM candidat where Ncandidat='".$id."'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
}
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style3 {color: #FFFFFF}
.Style11 {color: #0000FF; font-weight: bold; }
.Style14 {color: #990000}
.Style16 {
color: #000000;
font-weight: bold;
}
.Style17 {font-weight: bold}
-->
</style>
</head>


<form id="form1" name="form1" method="post" action="">
   


  Accueil,
,

----

Numero du Candidat

,


</form>

<center>
<fieldset style="width: 650px;" >
<legend>RENSEIGNEMENT SUR LE CANDIDAT</legend>
<table width="637" border="0" align="center" cellspacing="1" bordercolor="#333333" bgcolor="#FFFFCC">
----

   |,

</td>

----

NOM ET PRENOMS  |
NUMERO DE LA PIECE  |
CONTACT  |
NATIONALITEL  |

<?php
while ($liste_etu =mysql_fetch_assoc($req)) {
$j= $i%2;

?>
----

"/>,
"/>,
"/>,
"/>,

<?php
}
?>

</fieldset>
</center>

<center>
<fieldset style="width: 650px;" ><legend>PAYEMENT</legend>
   |
,

----

NUMERO DE PAYEMENT |
DATE DE PAEYEMENT |
MTV |

<?php

if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
include(\"connection.php\");
$id =(int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
// if($req){
$id1=(int)$_POST['id_P'];
$id1=mysql_real_escape_string($id1);
$sql =  \"SELECT * FROM payement  WHERE id_P='\".$id.\"'  \";
$req = mysql_query($sql) or die(a.'Erreur SQL !
'.$sql.'
'.mysql_error());
while ($liste_etu=mysql_fetch_assoc($req)) {
$j=$i%2;

?>
----

"/>,
"/>,
"/>,

<?php
// }
}
}
?>

</fieldset>
</center></td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td height="225"> </td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td> </td>
    <td width="316"> </td>
  </tr>
</table>


</html>

17 réponses

cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 09:55
bonjour

tu devrais utiliser join

petit ex de base ici

pourquoi deux fois ce test ?

if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
...
Bonne programmation !
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 12:27
que me propose tu ??
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 12:31
j'ai mis en commentaire :
mais ça n'affiche toujours rien :
//if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){

voici le code rectifié:


<?php
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
 include("connection.php");
$id= (int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
$sql = "SELECT DISTINCT Ncandidat,nom,pieceP,contact,nationalite FROM candidat where Ncandidat='".$id."'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
}
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style3 {color: #FFFFFF}
.Style11 {color: #0000FF; font-weight: bold; }
.Style14 {color: #990000}
.Style16 {
color: #000000;
font-weight: bold;
}
.Style17 {font-weight: bold}
-->
</style>
</head>


<form id="form1" name="form1" method="post" action="">
   


  Accueil,
,

----

Numero du Candidat

,


</form>

<center>
<fieldset style="width: 650px;" >
<legend>RENSEIGNEMENT SUR LE CANDIDAT</legend>
<table width="637" border="0" align="center" cellspacing="1" bordercolor="#333333" bgcolor="#FFFFCC">
----

   |,

</td>

----

NOM ET PRENOMS  |
NUMERO DE LA PIECE  |
CONTACT  |
NATIONALITEL  |

<?php
while ($liste_etu =mysql_fetch_assoc($req)) {
$j= $i%2;

?>
----

"/>,
"/>,
"/>,
"/>,

<?php
}
?>

</fieldset>
</center>

<center>
<fieldset style="width: 650px;" ><legend>PAYEMENT</legend>
   |
,

----

NUMERO DE PAYEMENT |
DATE DE PAEYEMENT |
MTV |

<?php

//if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
include(\"connection.php\");
$id =(int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
// if($req){
$id1=(int)$_POST['id_P'];
$id1=mysql_real_escape_string($id1);
$sql =  \"SELECT * FROM payement  WHERE id_P='\".$id.\"'  \";
$req = mysql_query($sql) or die(a.'Erreur SQL !
'.$sql.'
'.mysql_error());
while ($liste_etu=mysql_fetch_assoc($req)) {
$j=$i%2;

?>
----

"/>,
"/>,
"/>,

<?php
// }
//}
}
?>

</fieldset>
</center></td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td height="225"> </td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td> </td>
    <td width="316"> </td>
  </tr>
</table>


</html>

0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 13:20
peux tu me donner un bout deux tes deux tables s.t.p.
structures ... et une ligne
je vais voir après

Bonne programmation !
0

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

Posez votre question
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 13:29
quand j’exécute j'obtient cette erreur :

Notice: Undefined variable: req in C:\wamp\www\POJET AUTO ECOLE\recherche3.php on line 72

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in C:\wamp\www\POJET AUTO ECOLE\recherche3.php on line 72.

en utilisant les jointure voici ce que j'ai fait :


<?php
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
 include("connection.php");
$id= (int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
$sql = "SELECT DISTINCT a.Ncandidat,a.nom,a.pieceP,a.contact,a.nationalite,b.Npayement,b.datePay,b.MTV FROM candidat a, renseigner b where Ncandidat='".$id."'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
}
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style3 {color: #FFFFFF}
.Style11 {color: #0000FF; font-weight: bold; }
.Style14 {color: #990000}
.Style16 {
color: #000000;
font-weight: bold;
}
.Style17 {font-weight: bold}
-->
</style>
</head>


<form id="form1" name="form1" method="post" action="">
   


  Accueil,
,

----

Numero du Candidat

,


</form>

<center>
<fieldset style="width: 650px;" >
<legend>RENSEIGNEMENT SUR LE CANDIDAT</legend>
<table width="637" border="0" align="center" cellspacing="1" bordercolor="#333333" bgcolor="#FFFFCC">
----

   |,

</td>

----

NOM ET PRENOMS  |
NUMERO DE LA PIECE  |
CONTACT  |
NATIONALITEL  |
NUMERO DE PAYEMENT |
DATE DE PAEYEMENT |
MTV |

<?php
while ($liste_etu =mysql_fetch_assoc($req)) {
$j=$i%2;

?>
----

"/>,
"/>,
"/>,
"/>,
"/>,
"/>,
"/>,

<?php
}
?>

</fieldset>
</center>

    <td width="316"> </td>
  </tr>
  <tr>
    <td height="225"> </td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td> </td>
    <td width="316"> </td>
  </tr>
</table>


</html>

0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 13:46
voici la structure de mes tables et des contenues :
-- Structure de la table `candidat`
0
Lyle56
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
9 janv. 2012 à 15:10
Bonjour,

Au premier coup d'oeil je te dirai qu'il te manque une petite chose :
Un Index !!

CREATE TABLE IF NOT EXISTS `payement` (
`id_P` int(15) NOT NULL AUTO_INCREMENT,
`Ncandidat` int(15) NOT NULL,
`Npayement` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`datePay` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`MTV` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_P`)
CREATE INDEX Nom_Index ON candidat(`Ncandidat`)
) ENGINE

Ta requéte est ensuite simplifié pour ton cas:

Select [p.*, c.* ,..les champs que tu veut] FROM payement p, candidat c NATURAL JOIN

Ta jointure va se faire sur les index définis dans ta table.

Aprés il faut faire attention avec ta boucle de traitement de résultats, pour le cas ou tu ne retournerai aucun enregistrement (ce qui est le cas avec l'erreur que tu as)

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 15:33
<?php
print_r($_POST);
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
include("config/config.php");
echo $id= (int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
$sql = "SELECT DISTINCT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV 
FROM candidat,payement 
where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat='".$id."'";
/*
$query = "SELECT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV ".
"FROM candidat, payement ".
"WHERE candidat.Ncandidat = payement.Ncandidat";   */
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


$res=null;

while ($liste_etu=mysql_fetch_assoc($req)) {

  //$j=$i%2;

  
  $res.='<tr bgcolor=#FFFFCC>
  <td bgcolor="#CCCCCC"></td>
  <td bgcolor="#CCCCCC"></td>
  <td bgcolor="#CCCCCC"></td>
  <td bgcolor="#CCCCCC"></td>
<td bgcolor="#CCCCCC"></td>
  <td bgcolor="#CCCCCC"></td>
  <td bgcolor="#CCCCCC"></td>  
  </tr>';
  
  }

}else{
$res=null;
}
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style3 {color: #FFFFFF}
.Style11 {color: #0000FF; font-weight: bold; }
.Style14 {color: #990000}
.Style16 {
color: #000000;
font-weight: bold;
}
.Style17 {font-weight: bold}
-->
</style>
</head>


<form id="form1" name="form1" method="post" action="">
   


  Accueil,
,

----

Numero du Candidat

,


</form>

<center>
<fieldset style="width: 650px;" >
<legend>RENSEIGNEMENT SUR LE CANDIDAT</legend>
<table width="637" border="0" align="center" cellspacing="1" bordercolor="#333333" bgcolor="#FFFFCC">
----

   |,

</td>

----

NOM ET PRENOMS  |
NUMERO DE LA PIECE  |
CONTACT  |
NATIONALITEL  |
NUMERO DE PAYEMENT |
DATE DE PAEYEMENT |
MTV |

<?php
echo $res  = isset($res) ? $res : null;
?>

</fieldset>
</center>

    <td width="316"> </td>
  </tr>
  <tr>
    <td height="225"> </td>
    <td width="316"> </td>
  </tr>
  <tr>
    <td> </td>
    <td width="316"> </td>
  </tr>
</table>


</html>


config/config.php
<?php 
/******************************************************************************/
function nettoieProtect(){
  foreach($_POST as $k => $v){
  $v=mysql_real_escape_string(strip_tags(trim($v)));
  $_POST[$k]=$v;
  }
  foreach($_GET as $k => $v){
  $v=mysql_real_escape_string(strip_tags(trim($v)));
  $_GET[$k]=$v;
  }
  foreach($_REQUEST as $k => $v){
  $v=mysql_real_escape_string(strip_tags(trim($v)));
  $_REQUEST[$k]=$v;
  }
}
/******************************************************************************/
$dbhost='localhost';/*adresse du serveur de la base de donnée*/ 
$dbuser='root';/*identifiant personnel à la base de donnée*/
$dbpass='';/*mot de passe pour y accéder*/
$db='amsi';/*nom de la base*/
$table='comptes_utilisateurs';
/*connexion au serveur*/
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($db);
/*protection de la base*/
nettoieProtect();
?>


j'ai testé comme ça sur mon wamp

c'est bon

++




Bonne programmation !
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 15:59
salut merci de bien vouloir m'aider j'étais allé manger un peu .
. je viens d’exécuter la solution que tu a proposé .
voici l'erreur qui s'affiche :


Array ( [Ncandidat] => 10003 [Submit] => RECHERCHER ) 10003Erreur SQL !
SELECT DISTINCT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV FROM candidat,payement where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat=''
Access denied for user 'Système'@'localhost' (using password: NO)
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 16:02
oui je viens de voir l'erreur ça passe . mais ça affiche plus haut :
=> 10003 [Submit] => RECHERCHER ) 10003
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 16:19
normal j'ai mis un echo id tu dois l'enlever ...
Bonne programmation !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 16:31
echo $id=(int)$_POST['Ncandidat'];
$id=(int)$_POST['Ncandidat'];

n'oublie pas config/config.php c'est à changer aussi (paramètres)

Bonne programmation !
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 16:50
oui je changer config\config


mais je veux pas que ça affiche :Array ( [Ncandidat] => 10003 [Submit] => RECHERCHER )
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 16:52
oui j'ai pu régler c’était ://print_r($_POST);
qui faisait . une fois de plus merci que dieu te benisse
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 janv. 2012 à 17:05
ok donc reponse acceptée
ferme le post merci
++
Bonne programmation !
0
msi079
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

9 janv. 2012 à 21:37
pardon j'ai pas encore fini avec ce poste . je veux ameliorer la requète en faisant un calcul.
je veux calculer le reste a payer pour le candidat . voici ce que j'ai fait

candidat.montantT - payement.MTV AS "RESTE"
ce qui donne comme requète :
$sql = "SELECT DISTINCT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV ,candidat.montantT - payement.MTV AS "RESTE"
FROM candidat,payement 
where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat='".$id."'";


mais rien ne s'affiche . je veux de l'aide s'il vous plait
0
Lyle56
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
10 janv. 2012 à 16:49
Bonjour,

vire déja les " autour de RESTE, il n'y en as pas besoin.

$sql = "SELECT DISTINCT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV ,candidat.montantT - payement.MTV AS RESTE
FROM candidat,payement 
where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat='".$id."'";


Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
0