Probleme enregistrement dans base de données SQL [Résolu]

Signaler
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021
-
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021
-
Bonjour,
Je n'arrive pas a enregistrer toutes mes données dans ma base de données SQL.
J'ai une partie qui s'enregistre avec l'utilisateur 1 mais pas avec les autres.
je pense que ça vient de MYSQL mais je n'en suis pas sûre .
Mon code est en PHP mais avec des requete SQL:

<?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>
<li><a href="index.php">Accueil</a></li><br>
</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
var_dump($user_id);
$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_nom From user_search where user_id like "%'. $user_id .'%" ');
$recherches = array();
while ( $row = $result->fetch_array())
	{
		$recherches[] = $row['ville_nom'];
	}?>
<ul>
<?php foreach ($recherches 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'); ?>

7 réponses

Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021
849
bonjour,
je suggère que tu adaptes ton code en tenant compte de ceci:
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code#connecter-son-code-a-une-base-de-donnees-mysql

tu ne le précises pas, je suppose que c'est l'INSERT en ligne 33 qui ne fait pas tout ce que tu veux, est-ce exact?

comment sais-tu ce que fait ton code? comment sais-tu combien de fois il exécute la ligne 33, et avec quelles données?
Messages postés
32346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 mai 2021
3 464
Bonjour
En complément, je lui avais déjà demandé de faire ceci:

Connecte-toi avec un autre utilisateur
Affiche le contenu des variable de session en utilisant par exemple d'instruction Var_dump
Assure-toi que tu as bien le bon id de ton user
Lance une recherche et regarde ce qui se met en base de données..
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

Bonjour
Oui, c'est bien l'insert ligne 33 et l'erreur est dans mysql.
car il affiche une erreur dans PHP my admin.
Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021
849 >
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

as-tu affiché le contenu de ta variable
$sql
?
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021
>
Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021

en fait, ce qui est étrange. c'est quand je fais un var_dump.
j'ai bien mes 3 valeurs. il me trouve bien les bonnes valeurs.
donc en partie, le code marche mais que pour un utilisateur.
par contre, quand je rentre le code dans PHP my admin
il me trouve l'erreur #1064.
C'est une erreur de syntaxe mais je vois pas vraiment ce qui peux clocher.
Si quelqu'un voit une erreur dedans je veux bien qu'il me le dise.
$sql = "INSERT INTO user_search (ville_id,ville_nom,user_id)
VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."','". $_SESSION['user_id']."')";
$mysqli->query($sql);

Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021
>
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

C'est la ligne 2 des valeurs ou il y a l'erreur.
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

Bonjour a tous

Donc je me suis connecté à un autre utilisateur.
Quand je fais le var_dump, j'ai bien les variables enregistré.
Par contre, dans mysql, il m'affiche cette erreur :
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ville_id']."', '". $donnees['ville_nom']."','". $_SESSION['user_id']."')' at line 2
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

Je suis sur Eversql et il me trouve cette erreur :
We found an error in the query's syntax around:
"ville_id" at line 2, column 23.
Donc c'est bien une erreur dans la requête.
Il faut juste que je trouve comment la resoudre.
Messages postés
32346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 mai 2021
3 464
Fais un echo de ta variable $sql et montres nous ce que ca te donnes
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

en fait , ca me montre exactement la même chose que le var dump.

INSERT INTO user_search (ville_id,ville_nom,user_id) VALUES ('20', 'Paris','1')

On vois bien mes valeurs.
C'est ça qui estbizarre.
Mais ça s'insere pas
c'est bien les bonne valeurs en plus. :/
ça s'insere que avec un utilisateur. les autres, ils existe pas pour mysql.
Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021
849
et quand tu exécutes cette requête en phpmyadmin, cela n'insère pas?
INSERT INTO user_search (ville_id,ville_nom,user_id) VALUES ('20', 'Paris','1')
Messages postés
32346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 mai 2021
3 464
ça s'insere que avec un utilisateur. les autres, ils existe pas pour mysql.

Les autres ... quels autres ??
Tu as fais ce que je t'ai demandé ? Te loguer avec un autre user et regarder ce que t'affiche le var_dump et le echo ??

En plus.. tu fais un
var_dump($user_id);

Donc.. avec la variable $user_id ... mais ensuite, dans ta requête tu utilises $_SESSION['user_id'] .....

Ne peux tu pas nous faire un
var_dump($_SESSION) ;

et nous montrer ce qu'elle contient quand tu te logues avec un autre utilisateur ( puisque c'est avec les autres que ça semble merder... ) ???
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

Alors la j'ai une erreur
#1062 - Duplicate entry '20' for key 'PRIMARY'
Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021
849
tu devrais donc corriger ton code PHP, pour détecter que l'insertion ne fonctionne pas.
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

oui c'est la requete mais c'est un probleme au niveau sql aussi
Messages postés
15520
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2021
849
une chose à la fois, commence par corriger ton code.
Messages postés
19
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

c'est bon, ca marche.
le probleme venait de mysql