8722 sujets

Développement web côté serveur, CMS

Pages :
Bonjour, je débute en php, mysql et j'ai un problème que je n'arrive pas à résoudre .

Je dois réaliser un suivi des recherches par internaute donc développer le script qui permet d’enregistrer dans la base toutes les recherches effectuées sur le site des villes par un internaute. Ensuite enregistrer que les recherches ayant donné un résultat.
Puis afficher en front-office, uniquement pour cet internaute, sa liste de recherche sous forme
de liens.

Les recherches sont stockées dans une table user_searchs comportant les champs
suivants :
– Id du user (user_id) dans la table user ;
– Id de la ville (ville_id) dans la table ville.

Mon code est le suivant :

<?php
$mysqli = new mysqli(‘localhost’, ‘root’, ‘’, ‘projet_internautes’);

$result = $mysqli->query(‘SELECT user_ville FROM user_searches’);

while ($row = $result->fetch_array())
{
var_dump($row);
}


$result->free();
$mysqli->close();

?>

Et en erreur il y a écrit : Parse error: syntax error, unexpected 'user_ville' (T_STRING) in C:\wamp64\www\phpi\phpi.php on line 4.

Merci d'avance pour votre aide

Cordialement
<?php
$mysqli = new mysqli(‘localhost’, ‘root’, ‘’, ‘projet_internautes’);

$result = $mysqli->query(‘SELECT user_ville FROM user_searches’);

while ($row = $result->fetch_array())
{
var_dump($row);
}


$result->free(); 
$mysqli->close(); 

?>


Tu veux pas passer en pdo, à mon avis ça serait plus judicieux.
Modifié par Tintin75 (23 Mar 2018 - 11:43)


<?php

try { $base = new PDO ('mysql : host=localhost ; dbname=testconsole', 'root', ") ;}

catch (exception $e) {die ('Erreur '.$e->getMessage() ) ; }

$base->exec ("SET CHARACTER SET utf8") ;

$retour = $base->query ('SELECT * FROM user_searchers') ; 
while ($data = $retour->fetch() ) {
echo $data ['film'] }
 $base = null;

?>




Oui , alors est que c'est bien sous cette forme là ?
Dans ton premier post on a

FROM user_searches


et dans le second

FROM user_searchers


c'est normal ?
Salut Coco,

Je croyais que tu ne devais pas utiliser PDO ... mais bon.

Donc oui cela devrait être bon, sauf que:

1- Fait attention à bien former ta requête SQL (surtout le nom de la table) Smiley cligne
2- La méthode "->fetch()" ne retourne qu'un seul enregistrement, il faudra probablement passer par un "->fetchAll()" pour avoir tous les résultats
3- tu indiques:
Puis afficher en front-office, uniquement pour cet internaute, sa liste de recherche sous forme de liens.

Cependant ta requête telle que formatée retournera les recherches de TOUS les internautes et pas simplement de CET internaute donc il faudra inclure une condition à ta requête SQL genre:

$retour = $base->query ('SELECT * FROM user_searchs WHERE user_id = id_internaute'); 
id_internaute correspond à une variable de session ou de cookie ou de profil utilisateur.

Bonne continuation Smiley cligne
Salut...

Par rapport à la question originale la réponse est :
tu fais select user_ville hors tu n'as que id_ville ou user_id dans ta bdd ...
l'erreur te dit que le champ user_ville n'existe pas.

Pour tous les autres messages ce ne sont que des questions de préférences Smiley cligne
JENCAL a écrit :
Dans ton premier post on a

FROM user_searches


et dans le second

FROM user_searchers


c'est normal ?


Je me suis trompé c'est FROM user_searchs
JENCAL a écrit :
Le code de ton premier post,
il est bien dans CE fichier phpi\phpi.php ????


Et oui il est bien dans ce fichier.
biduletruck a écrit :
Salut Coco,

Je croyais que tu ne devais pas utiliser PDO ... mais bon.

Donc oui cela devrait être bon, sauf que:

1- Fait attention à bien former ta requête SQL (surtout le nom de la table) Smiley cligne
2- La méthode "-&gt;fetch()" ne retourne qu'un seul enregistrement, il faudra probablement passer par un "-&gt;fetchAll()" pour avoir tous les résultats
3- tu indiques:
Puis afficher en front-office, uniquement pour cet internaute, sa liste de recherche sous forme de liens.

Cependant ta requête telle que formatée retournera les recherches de TOUS les internautes et pas simplement de CET internaute donc il faudra inclure une condition à ta requête SQL genre:

$retour = $base-&gt;query ('SELECT * FROM user_searchs WHERE user_id = id_internaute'); 
id_internaute correspond à une variable de session ou de cookie ou de profil utilisateur.

Bonne continuation Smiley cligne


J'ai remplacé fetch () par fetchAll() et remplacé aussi la ligne $ retour et il y a écrit : Parse error: syntax error, unexpected 'SET' (T_STRING) in C:\wamp64\www\phpi\phpi.php on line 8

J'ai cru que c'était une erreur de ponctuation mais non ce n'est pas cela pourtant c'est bien comme cela que la ligne $base->exec("SET CHARACTER SET utf8") ; s'écrit .

<?php

try { $base = new PDO ('mysql : host=localhost ; dbname=testconsole', 'root', ") ;}

catch (exception $e) {die ('Erreur '.$e->getMessage() ) ; }

$base->exec("SET CHARACTER SET utf8") ;

 $retour = $base->query ('SELECT * FROM user_searchs WHERE user_id = id_internaute'); 
while ($data = $retour->fetchAll() ) {
echo $data ['ville'] }
 $base = null;

?>
Alors,

1- Cela ne fonctionnera pas car comme je te le disais "id_internaute" doit être une variable que tu injectes en fonction de l'utilisateur
$retour = $base->query ('SELECT * FROM user_searchs WHERE user_id = id_internaute'); 

(traduction de ta requête SQL)
"Sélectionne TOUS les enregistrements DEPUIS user_searchs OU l'utilisateur est égal à : Id_utilisateur".
Donc si tu ne donnes pas d'Id à ta requête celle-ci ne fonctionnera pas.


2-
 echo $data ['ville'] 
cette variable n'existe pas cela serai plus
 echo $data ['ville_id'] 

Modifié par biduletruck (23 Mar 2018 - 14:38)
Coco, lis bien ce que te dis biduletruck c'est de très bon conseils.

biduletruck a écrit :


2-
 echo $data ['ville'] 
cette variable n'existe pas cela serai plus
 echo $data ['ville_id'] 


J'ajouterais même que ce qui se trouve dans $data[''] ce sont les champs retourné par ta requête. Actuellement tu as mis SELECT * donc l'étoile te renvoi tous les champs..
Modifié par JENCAL (23 Mar 2018 - 14:59)
biduletruck a écrit :
Alors,

1- Cela ne fonctionnera pas car comme je te le disais "id_internaute" doit être une variable que tu injectes en fonction de l'utilisateur
$retour = $base-&gt;query ('SELECT * FROM user_searchs WHERE user_id = id_internaute'); 

(traduction de ta requête SQL)
"Sélectionne TOUS les enregistrements DEPUIS user_searchs OU l'utilisateur est égal à : Id_utilisateur".
Donc si tu ne donnes pas d'Id à ta requête celle-ci ne fonctionnera pas.


2-
 echo $data ['ville'] 
cette variable n'existe pas cela serai plus
 echo $data ['ville_id'] 


Il faut que je remplisse SELECT ou juste id dans le SELECT ?
JENCAL a écrit :
pas compris ta question ..


Une personne antérieur du forum en message privé m'a dit "TU as oublié de renseigner les champs que tu voulais pour ta requête. Il faut que tu remplisses ton SELECT."

C'est pour ça que je demande si dans le select il faut que je remplisse ce qu'elle m a dit ce qui me paraît un peu bizarre ou si il faut que je donne un id à ma requête comme le dit biduletruck.
non tu mets une étoile.
biduletruck t'explique, que si tu veux cibler un utilisateur c'est avec la clause WHERE de ta requête, et que dans 99% des cas en php dans la clause where on retrouve une variable PHP!
Pages :