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

msi079 Messages postés 212 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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 212 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 212 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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 212 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 212 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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 212 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 212 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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
9 janv. 2012 à 16:19
normal j'ai mis un echo id tu dois l'enlever ...
Bonne programmation !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 212 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 212 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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
9 janv. 2012 à 17:05
ok donc reponse acceptée
ferme le post merci
++
Bonne programmation !
0
msi079 Messages postés 212 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
Rejoignez-nous