Probleme interogation 2 table

Signaler
Messages postés
28
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 octobre 2012
-
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour à tous,
Voici mon code. Et je vous explique mon problème.
<?php
$db = mysql_connect('localhost', 'root', '') or die('HOST ?');
mysql_select_db('informatzemarlou',$db) or die('DB ?');  
if(isset($_POST) && !empty($_POST['prenom']) && !empty($_POST['nom']) && !empty($_POST['classe'])) {
  extract($_POST);
  $sql = "select * from enfants where prenom='".$prenom."' and nom='".$nom."' and classe='".$classe."'";
  $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
  
  $data = mysql_fetch_assoc($req);

 if($data['id'] !=($prenom and $nom and $classe)) { 
 echo 'Enfant non inscrit comme adhérent. Merci de recommencer

';
    include('sortie-1.php'); 	
   }  
  else {
  $sql = 'INSERT INTO sortie1 (`Nom`, `Prenom`, `Classe`, `Telephone`, `Portable_M`, `Portable_P`, `Sortie`)
SELECT `Nom`, `Prenom`, `Classe`, `Telephone`, `Portable_M`, `Portable_P`, `Sortie` FROM enfants WHERE `id` = "'.$data['id'].'"';


       mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
   unset($_POST['']);
 echo "<center>L'enfant a bien été inscrit .

";
 echo "<center>Inscrire un autre enfant";
 echo "<center>Page d'accueil";	
  }   

}
else {
  echo '<center>Vous avez oublié de remplir un champ.

';
   include('sortie-1.php'); 
} 
{
mysql_close();
}
 ?>


Au niveau de la ligne "L'enfant à bien été inscrit," je voudrait faire apparaitre une donnée venant d'une autre table.
Exemple :

L'enfant à bien été inscrit, vous êtes le "'.$data ($id).'" eme inscrit. le ID vient d'une autre table "XXX".
Dans la table XXX l'ID s'auto-incrément.
Car si je laisse $data(id) cela me m'est l'id initial et non celui de l'autre table.

Merci pour votre aide

4 réponses

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

peux tu donner la structure des tables
sortie1 ? a t'elle un id auto increment


Bonne programmation !
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
extract($_POST); Question de sécurité, utilise $_POST['taVariable']. Tu dois d'abord les filtrer si get_magic_quotes_gpc retourne 0 (via mysql_real_escape_string)

or die [...] Pas question d'afficher l'erreur, ça pourrait donner des infos comme le nom de la table et des champs -> en environnement de production, on met display_errors à off (peut être mis dans le .htaccess)

if($data['id'] != ($prenom and $nom and $classe)) Cette me ligne me parait bizarre, je ne vois pas ce que tu veux faire ...

Pour les 3 echo qui se suivent, je te conseillerais de faire comme ceci (plus facile à lire) :
?>ligne1
ligne2
ligne3<?php


La structure de la table sortie1 est mal pensée, la bonne façon de faire serait (pour moi en tous cas) une table sorties(id,nom,datesortie) et une table sorties_eleves(id,sortie,eleve). Pour sortir les données il suffit de faire un bête INNER JOIN. Avec cette bonne façon de faire, nèmeInscrit =[SELECT COUNT(id) AS Ct FROM sorties_eleves WHERE sortie=idSortie]

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
28
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 octobre 2012

Bonjour,

En réponse à Cod57, oui la table sortie1 le ID est en auto.
Car il y a 80 adherents et 55 places de libre et c'est les premiers qui pourront y participer.
Et je voudrais faire en sorte que quand ils s'inscrivent, ils aient un message avec le numéro d'enregistrement.
Tous les adhérents sont dans une autre table qui elle aussi a un id auto increment, mais là l'ordre n'a aucune importance.

Pour suivre en réponse à ghuysmans99, cette ligne "if($data['id'] !=($prenom and $nom and $classe))" sers à vérifier que par rapport au formulaire de saisi d'inscription, ces 3 champ doivent correspondre à un adhérents, sinon erreur "cette enfants n'est pas adhérents".

Espérant avoir été clair.

Alain
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
42 != ("Alain" && "Connu" && "1ERE") renverra toujours false.
Tu dois faire un SELECT pour savoir s'ils sont dans la table.
Peux-tu nous montrer tes tables (nom des champs, type de chacun) ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question