pb d'insertion dans une table

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 18:22

A quoi sert l'etoile * apres count
// te renverra le nombre de lignes qui correspondent aux critères 
$reponse="SELECT COUNT(*) FROM login WHERE nomutilisateur = '$nomutilisateur_ok' AND motpasse = '$motpasse_ok' "; 

list($nbreTrouve) = mysql_fetch_row($reponse); 

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 18:54

cela signifie "tous les champs", en gros tu comptes chaque ligne en entier

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 19:57

Ok
Une autre question,

Comment récupérer un champs (auto-incrémentation) d'une table pour l'insérer dans une autre lors d'un enregistrement. Pour ainsi lier les deux table ensemble.

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 20:18

tu récupères par un select ce champ et tu l'insères...

peut-être veux-tu récupérer l'identifiant du dernier tuple inséré, qui est généré automatiquement ?

pour cela tu as la commande SQL :

Code : Tout sélectionner

SELECT LAST_INSERT_ID()

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 20:40

Je m'explique :

je possède deux tables :
- login avec 4 champs : id (auto-incremente) nom, mot de passe, email.
- annonce avec 5 champs : IDlogin, choix, annonce, lieu, telephone.

Mon utilisateur dans un premier temps, s'enregistre à l'aide d'un formulaire (nom, mot de passe et email) c'est ainsi que mes utilisateurs possèdent chacun un id différent.

Dans un second temps, l'utilisateur peut poster une annonce sur le site, en renseignant les champs du formulaire ci-dessous :
- nom, mot de passe et email de la première table
- choix, annonce, lieu et telephone de la seconde table

Lorsque mon utilisateur poste une annonce (il s'identifie), j'aimerais recupérer l'id de la table login pour le copier dans la table annonce dans le champs IDlogin pour créer un lien entre les tables.

Merci pour ton aide

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 21:06

Si l'utilisateur doit être inscrit et connecté pour pouvoir poster une annonce, tu dois donc stocker quelque part (cookie, session) tout le temps de la connexion des infos : nom ou id
si tu as directement l'id de stocké, tu peux donc l'insérer directement dans ta requête

si tu ne stockes pas l'identifiant, tu peux soit le stocker (ce qui me parait le plus pratique) et donc utiliser la méthode précédente, soit récupérer l'identifiant correspondant à l'info que tu gardes
exemple si c'est le nom :

Code : Tout sélectionner

SELECT id FROM login WHERE nom = '$nom';

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 21:14

oui voila mon code qui marche pas
$reponse="SELECT id FROM login WHERE nomutilisateur = '$nomutilisateur_ok'";
	$result=mysql_query($reponse);
	$total_nomutilisateur=mysql_num_rows($result);
      
$IDlogin = mysql_insert_id(); on récupere l'id

C'est après pour l'enregistrer dans l'autre table ?


Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 21:26

je crois que tu te mélanges un peu les pinceaux

que veux-tu faire exactement ? moi je t'ai donné plusieurs pistes suivant le fonctionnement de ton site

par exemple mysql_insert_id() te permet de récupérer l'identifiant du dernier tuple inséré dans ta base. Ceci toutes tables confondues, donc si ton utilisateur est enregistré depuis 2 ans, ça ne sert à rien de l'utiliser pour l'insérer dans l'enregistrement de l'annonce.

Première question :
que stockes-tu (si c'est le cas) comme information permettant d'identifier un utilisateur lors de sa connexion ? n'utilises-tu pas des session ou un cookie ?

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 21:29

Non j'utilise pas de cookie, ni sessions.

Quand il s'enregistre il entre son nom, mot de passe et adresse mail via un formulaire.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 21:45

et une fois qu'un utilisateur est enregistré comment tu fais pour qu'il s'identifie les visites suivantes ?
comment fais-tu pour interdir à une personne non inscrite de poster une annonce ?

bref, imaginons que tu identifies un utilisateur par son nom
- il se connecte
- tu récupères son nom
- tu récupères l'identifiant qui correspond
$reponse="SELECT id FROM login WHERE nomutilisateur = '$nomutilisateur_ok'";
    $result=mysql_query($reponse);
    $total_nomutilisateur=mysql_num_rows($result); // cette ligne ne sert pas ici, elle t'indique le nombre de ligne qu'à renvoyé ta requête
// fais plutôt :
list($id_utilisateur) = mysql_fetch_row($result);
tu connais maintenant l'identifiant de la personne
tu peux donc l'enregistrer avec le contenu de l'annonce

maintenant ton système d'inscription sans système d'identification me parait vraiment bizarre...

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 21:51

Quand la personne veut poster une annonce il doit a nouveau s'identifier avec son login.
Moi a ce moment je test les champs nom et mot de passe.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 21:56

donc tu vois comment faire à peu près ?

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 21:59

Oui je vais tester tout ca demain

Merci pour ton aide

ricardo
Invité n'ayant pas de compte PHPfrance

14 mai 2005, 16:29

OK ca marche encore quelques pb sur les tests.

Dans ma table annonce j'ai un champs datesaisie (0000-00-00) ou j'aimerais mettre la date de saisie de l'annonce sans que l'utilisateur soit obligé de la saisir dans le formulaire d'ajout d'annonce.

Comment faire ?

Merci

ricardo
Invité n'ayant pas de compte PHPfrance

14 mai 2005, 16:33

Une autre question, pour récupérer deux champs en meme temps pour pouvoir les tester ensembble par la suite est ce possible d'ecrire :
$reponse="SELECT nomutilisateur FROM login WHERE nomutilisateur = '$nomutilisateur_ok' && motpasse = '$motpasse'";
	$result=mysql_query($reponse);
	$total_nomutilisateur=mysql_num_rows($result);

  Merci