Salut,
je pense qu'il faut essayer de procéder en 3 temps :
étape 1 : Définir précisément ce que tu veux faire (phrases simples et courtes)
(perso j'ai pas compris si les gens sont inscrits (login/mot de passe) et donc connectés (normalement on a donc accès a l'identifiant si ils sont connectés) ou si ils mettent juste un nom et un prénom et c'est tout ( et dans ce cas la, j'avoue ne pas comprendre l’intérêt de l'identifiant d'utilisateur, vu que j'ai l'impression que tu essayes d'aller chercher l'identifiant juste avec le nom (une combinaison nom et prénom serait légèrement mieux pour éviter de mélanger des utilisateurs qui ont le même nom de famille, nom+prenom+date_naissance ça permet encore un peu plus d’éviter de mélanger 2 utilisateurs (même si de mon point de vue l’idéal reste le combo login et mot de passe))
étape 2 : Écrire les requêtes SQL (sans php) qui permettent de résoudre le problème du coté de la base de données : on rentre 'en dur' des données qui devrait être fourni par le formulaire)
Par exemple :
//requête pour récupérer l'identifiant de la ville a partir du nom (unique) de la ville.
SELECT city_id FROM city WHERE city_name = 'un_nom_de_ville';
//requete pour récupérer le nouveau numero d'identifiant (max+1)
select max(user_id)+1 from users
//requête pour insérer l'utilisateur avec un id qui augmente de 1, son nom, son prénom et l'identifiant de sa ville (on reutilise les 2 requetes faciles du dessus)
INSERT INTO users VALUES (t2.user_id,'nom1', 'prenom1', t1.city_id)
from (SELECT city_id FROM city WHERE city_name = 'un_nom_de_ville')t1,
(select max(user_id)+1 from users)t2;
//requête pour insérer dans user_searchs
INSERT INTO user_searchs VALUES ( 3, 5); // 3 pour l'identifiant utilisateur et 5 pour l'identifiant de la ville
Une fois que tu as tes requêtes SQL qui fonctionnent
étape 3 : Passer du SQL au php
3.1 transformation de requête : les données 'en dur' doivent être remplacer par des variables php (on ne cherche pas encore a faire fonctionner le formulaire on fera ça a la fin)
Exemple pour un :
SELECT city_id FROM city WHERE city_id = 'un_nom_de_ville';
devient :
$var_php_nom_ville="un_nom_de_ville";
$result =$mysqli->query ("SELECT city_id FROM city WHERE city_id = '".$var_php_nom_ville."' ");
Et on fait bien gaffe dans le mysqli->query avec l'alternance des doubles quotes " et des simples quotes ' (dans la requête SQL j'ai mis des simples quotes pour le string 'un_nom_de_ville' donc j'ai encadré la requête avec des doubles quotes : "SELECT ... " et
on NE SUPPRIME PAS les simples quotes de 'un_nom_de_ville' quand on remplace un_nom_de_ville par une variable php, ils sont obligatoire dans la requête pour indiquer que le nom de ville est une chaine de caractères
Si tu fais ça pour tes requêtes(une, tu test, tu ajoutes une 2e, tu re test, etc..) , normalement a la fin tu as un fichier un peu moche mais le plus dur est fait, tu as pu debug facilement requête par requête.
3.2 Il ne reste plus qu'a faire le formulaire *o*
Ah et aussi pense a faire un petit passage de mysqli_real_escape_string() sur les entrées des utilisateurs contre les injections sql, du style :
$user_name = mysqli_real_escape_string($_GET['user_name']);
Modifié par mathieu1004 (27 Nov 2015 - 14:35)