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

Signaler
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013
-
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
-
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

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

tu devrais utiliser join

petit ex de base ici

pourquoi deux fois ce test ?

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

que me propose tu ??
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

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>

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

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

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>

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

voici la structure de mes tables et des contenues :
-- Structure de la table `candidat`
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
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.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
<?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 !
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

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)
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

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

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

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

oui je changer config\config


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

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

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
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
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.