Impossible d'enregistrer avec insert into [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021
-
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021
-
bonjour

Je voudrais inserer deux colonne de deux table differente dans ma table sql mais rien ne fonctionne.
il y a t'il une fonctionnalité qui le permette.
en sachant que j'ai une table ville ou je dois recuperer ville_id et ville_nom
et une autre table qui s'appelle user ou je dois recuperer l'id et le login mais qui me sers a me connecter aussi.
voici mon code de depart

<?php require('inc_connexion.php'); ?>
<?php require('inc_identification_user.php'); ?>
<html>
<link rel="stylesheet" type="text/css" href="style.css" />
<div id="container">
<h2>Rechercher une ville : </h2>
<!-- zone de connexion -->
<form method="POST" action="">
<input type="text" name="ville_nom">
<input type="SUBMIT" value="Search!">
</form>
</div>
</html>
<?php
//On definie la variable
if (isset($_POST['ville_nom'])) {
$ville_nom = $_POST['ville_nom'];}
{
if (empty($ville_nom))
{
echo "<p>" . "Veuillez saisir une ville !" . "</p>";
}
else
{
// la requete mysql de recherche
$result = $mysqli->query('SELECT ville_id, ville_nom FROM villes WHERE ville_nom LIKE "' . $ville_nom . '"');
while ($donnees = $result->fetch_array())
{
$villes[$donnees['ville_id']] = $donnees['ville_nom'];
}
}
}?>
<?php
$sql = "INSERT INTO user_search (ville_id,ville_nom)
VALUES ('ville_id', 'ville_nom')";
?>
<ul>
<?php foreach ($villes as $id => $ville) : ?>
<li><a href="ville.php?id=<?php echo $id ?>"><?php echo $ville ?></a></li>
<?php endforeach ?>
</ul>
<?php require('inc_footer.php'); ?>

6 réponses

Messages postés
32213
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 avril 2021
3 433
Bonjour
Comment se nomme la table dans laquelle tu veux faire l'insertion ?
Quelle est sa structure ?
Quelle est la relation entre tes tables ?(le lien entre ta table user et à table ville)
Quel est le lien avec le code PHP que tu nous montres ?

Ps: à l'avenir merci de préciser le langage dans les balises de code.
Explications, à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021

Bonsoir
la table ou je veux faire l'insertion s'appelle user_search.
il n'y a pas de lien entre la table user et villes car c'est la table user_search qui enregistre les recherche des utilisateurs.(ca sera elle qui fera le lien)
Par contre, dans ma table user_search j'ai ville_id et ville_nom qui sont present dans la table user et user_id et user_login qui sont present dans la table user.
c'est une base Mysql.
Messages postés
32213
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 avril 2021
3 433
Alors je ne sais pas si c'est l'heure tardive ... mais j'ai du mal à voir ce que tu veux enregistrer et où exactement...
La table où tu veux faire l'insert c'est user_search .. ok... mais quelles sont les colonnes qui y sont présentes ? Lesquelles veux tu remplir ?
Avec quoi veux tu les remplir ?
Avec cette requête ?
INSERT INTO user_search (ville_id,ville_nom)
VALUES ('ville_id', 'ville_nom')

Dans ce cas, dans les VALUES, ce sont les valeurs que tu dois mettre ..
Donc, ce qui est issu de ta requête
SELECT ville_id, ville_nom FROM villes WHERE ville_nom LIKE "' . $ville_nom . '"'

visiblement...

C'est donc dans ta boucle que tu dois faire ton insertion...
un truc du genre :
while ($donnees = $result->fetch_array())  {
  // ici tu fais ton insert
    $sql = "INSERT INTO user_search (ville_id,ville_nom)
     VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."')";
    $mysqli->query($sql ):
}
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021

Bonsoir
Alors j'ai mis la boucle mais il ne se passe rien.
le probleme c'est que je dois aussi incorporer un user_id dans cette base qui est dans une autre table qui n'a aucun lien avec villes.
je n'ai pas de message d'erreur sur php.
Messages postés
32213
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 avril 2021
3 433
Je te le demande pour la dernière fois... Quelle est la structure exacte de tes tables ?

Et puis...
Comment sais-tu quel user_id tu dois insérer ?
L'utilisateur est connecté ? Tu as stocker son identifiant en variable de session ?
Sinon comment fais-tu pour l'identifier dans cette page ?
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021

Bonjout
En fait, j'ai une page de connexion ou j'utilise la table user.
les identifiants de session sont stocké dans la table user.
j'ai un fichier inc_identification dans chaque page.
mes 3 tables :
Table villes : ville_id(INTautoincrement
ville_nom(varchar)
ville_texte(TEXT)
pays_id(INT)
Table user: user_id(INT)
user_login(varchar)
user_password(varchar)
user_search: ville_id(INT)autoincrement
ville_nom(varchar)
user_id(INT)
en fait, je dois faire correspondre les villes avec l'utilisateur.
l'utilisateur tape une ville et je doit inscrire chaque recherche dans la base de données.
je les sauvegarde en gros.
Messages postés
15364
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2021
843
bonjour,
je pense que tu dois faire plutôt:
$sql = "INSERT INTO user_search (ville_id,ville_nom, user_id)
     VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."', " . $id_utilisateur . " )";    

et nous montrer le contenu de tes deux autres fichiers php.
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021

Bonjour
Bon j'ai fini par reussir a récuperer l'id de session.
j'ai résolu le problème.
merci encore
Messages postés
6
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
28 avril 2021

Bonjour
en fait, j'ai réussi avec ce code la.

<?php require('inc_connexion.php'); ?>
<?php require('inc_identification_user.php'); ?>
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
?><html>
<link rel="stylesheet" type="text/css" href="style.css" />
<div id="container">
<h2>Rechercher une ville : </h2>
<!-- zone de connexion -->
<form method="POST" action="">
<input type="text" name="ville_nom">
<input type="SUBMIT" value="Search!">
</form>
</div>
</html>
<?php
//On definie la variable
if (isset($_POST['ville_nom'])) {
$ville_nom = $_POST['ville_nom'];}
{
if (empty($ville_nom))
{
echo "<p>" . "Veuillez saisir une ville !" . "</p>";
}
else
{
// la requete mysql de recherche
$result = $mysqli->query('SELECT ville_id, ville_nom FROM villes WHERE ville_nom LIKE "' . $ville_nom . '"');
while ($donnees = $result->fetch_array())
{
// ici tu fais ton insert
$sql = "INSERT INTO user_search (ville_id,ville_nom,user_id)
VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."','". $_SESSION['user_id']."')";
$mysqli->query($sql);
$villes[$donnees['ville_id']] = $donnees['ville_nom'];
}
}
}
?>
</div>
<div>
<p>Vos précédentes recherches :</p>
<?php
$result = $mysqli->query('SELECT ville_id From user_search where ville_id like "%'. $ville_id .'%" ');
$recherches = array();
while ( $row = $result->fetch_array())
{
$recherches[] = $row['ville_id'];
}?>
<ul>
<?php foreach ($villes as $id => $ville) : ?>
<li><a href="ville.php?id=<?php echo $id ?>"><?php echo $ville ?></a></li>
<?php endforeach ?>
</ul>
<?php require('inc_footer.php'); ?>

maintenant je veux récuperer mes recherches et les afficher dans la requete du bas.
c'est plus bas que ça coince.