Probleme enregistrement dans base de données SQL

Résolu
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

  1. Contributeur
    bonjour,
    je suggère que tu adaptes ton code en tenant compte de ceci:
    https://forums.commentcamarche.net/forum/affich-37584947-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?
    1. Modérateur
      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..
    2. Bonjour
      Oui, c'est bien l'insert ligne 33 et l'erreur est dans mysql.
      car il affiche une erreur dans PHP my admin.
    3. Contributeur
      @Firefly90as-tu affiché le contenu de ta variable
      $sql
      ?
    4. @yg_been 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);
      
      
    5. @Firefly90C'est la ligne 2 des valeurs ou il y a l'erreur.
  2. 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
    1. 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.
      1. Modérateur
        Fais un echo de ta variable $sql et montres nous ce que ca te donnes
    2. 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.
      1. Contributeur
        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')
      2. Modérateur
        ç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... ) ???
    3. Alors la j'ai une erreur
      #1062 - Duplicate entry '20' for key 'PRIMARY'
      1. Contributeur
        tu devrais donc corriger ton code PHP, pour détecter que l'insertion ne fonctionne pas.
    4. oui c'est la requete mais c'est un probleme au niveau sql aussi
      1. Contributeur
        une chose à la fois, commence par corriger ton code.