casper77610
Messages postés28Date d'inscriptiondimanche 27 mars 2011StatutMembreDernière intervention28 octobre 2012
-
4 sept. 2011 à 13:16
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 2013
-
4 sept. 2011 à 20:19
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.
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 4 sept. 2011 à 15:01
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
casper77610
Messages postés28Date d'inscriptiondimanche 27 mars 2011StatutMembreDernière intervention28 octobre 2012 4 sept. 2011 à 19:02
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".
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 4 sept. 2011 à 20:19
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