IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Php mysql débutant


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut Php mysql débutant
    Bonjour, je dois réaliser un suivi des recherches par internaute pour développez le script qui permet d’enregistrer dans la base toutes les recherches effectuées sur le site des villes par un internaute. Ensuite enregistrerer que les recherches ayant donné un résultat.
    Puis en front-office, uniquement pour cet internaute, sa liste de recherche sous forme
    de liens.
    Exemple : si un utilisateur a recherché « Paris », « Rome » et « Ber » alors nous afficherons Paris et Rome.

    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.

    Ces deux derniers champs formant une clé unique.

    J'ai stocké 5 villes : Rome, Paris , Prague, Barcelone et Venise

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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;
    
    ?>
    Et il y a marquer en erreur :
    Parse error: syntax error, unexpected 'SET' (T_STRING) in C:\wamp64\www\phpi\phpi.php on line 7
    Je suis bloqué à là .

    Merci d'avance pour votre aide

    Cordialement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Salut,

    Ligne 3, la chaine de caractère où tu spécifie le mot de passe n'est pas fermée
    Ta chaine se termine donc ligne 7, là où tu penses en commencer une.

    peut être une erreur du à la confusion de 2 simple quotes '' et un double quote "

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    J'ai rajouté le double quote avant le simple quote et maintenant j' ai : Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\wamp64\www\phpi\phpi.php on line 11

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est deux simples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try { $base = new PDO ('mysql : host=localhost ; dbname=testconsole', 'root', '') ;}
    ou deux doubles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try { $base = new PDO ('mysql : host=localhost ; dbname=testconsole', 'root', "") ;}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Le constructeur de PDO prend 3 paramètres sous la forme de chaine de caractères :
    le DSN, l'utilisateur, et le mot de passe.

    Regarde ton 3e paramètre, tu a du commettre une erreur : tu ouvre une chaine avec un double quote (") mais tu ne la ferme pas.
    PHP "pense" donc que ta chaine de caractère est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ") ;}
     
    catch (exception $e) {die ('Erreur '.$e->getMessage() ) ; }
     
    $base->exec("
    alors que je pense que tu voulais spécifier un mot de passe vide, ferme donc ta chaine avant la parenthèse.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    Si je fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try { $base = new PDO "('mysql : host=localhost ; dbname=testconsole', 'root', ") ;}
    J'ai ça comme erreur :
    Parse error: syntax error, unexpected '"('mysql : host=localhost ; db' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp64\www\phpi\phpi.php on line 3

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Non,
    regarde le code que sabotage t'as donné, compare le avec le tien.

    Pourquoi veux tu rajouter des quotes partout ? il manque juste un " pour fermer la chaine du 3e paramètre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = new PDO("chaine 1", "chaine 2", "chaine 3");

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    J'ai pris le même code que sabotage et j'ai toujours une erreur mais cette fois : Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\wamp64\www\phpi\phpi.php on line 10.

    Pour ça que je voulais ajouter mais c'est vrai que rajoute.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    J'ai fais la modification mais ça me donne : Parse error: syntax error, unexpected end of file in C:\wamp64\www\phpi\phpi.php on line 13

    c'est sans doute parce que je n'ai pas fermer l'accolade donc j'ai essayé de la refermer mais à chaque fois j'ai une erreur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($data = $retour->fetchAll() ) {
    echo $data ['ville']} ;
     $base = null;
    Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\wamp64\www\phpi\phpi.php on line 10

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($data = $retour->fetchAll() ) {
    echo $data ['ville'] ;}
     $base = null;
    Erreur could not find driver

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu veux qu'on s'y retrouve il faut nous montrer le code entier et le message d'erreur obtenu.
    Pas des bouts de code et des bouts de message d'erreur en vrac.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    Code 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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;
     
    ?>
    Message erreur : Erreur could not find driver


    Code 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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;
     
    ?>
    Message erreur : Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\wamp64\www\phpi\phpi.php on line 10

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le code 2 est faux car tu fermes l'accolade avant le point-virgule dans cette ligne echo $data ['ville']};. Donc structurellement parlant, c'est le code 1 qui est correct.

    Ensuite pour le code 1 :
    On active les exceptions PDO pour pouvoir les erreurs des requêtes
    On ne boucle pas sur l'appel à fetchAll : fetchAll récupère tous les résultats en une seule fois. Donc on l'appelle une seule fois et ensuite on boucle sur le tableau qu'on a récupéré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    try {
        $base = new PDO('mysql:host=localhost;dbname=testconsole', 'root', "");
    	// on active les exceptions
    	$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	// encodage
    	$base->exec("SET CHARACTER SET utf8");
    } catch(PDOException $e) {
        die('Erreur de connexion : ' . $e->getMessage());
    }
     
    $retour = $base->query('SELECT * FROM user_searchs WHERE user_id = id_internaute');
     
    // récupération du résultat
    $toutes_les_lignes = $retour->fetchAll()
     
    // exploitation du résultat, ligne par ligne
    foreach ($toutes_les_lignes as $ligne) {
        echo $ligne['ville'];
    }

    Pour la requête proprement dite, ce serait sans doute une bonne idée d'écrire la requête en dehors du script (dans PhpMyAdmin par exemple) et de l'intégrer dans le script seulement quand elle fonctionne et retourne ce que tu veux.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    A la ligne 18 j'ai ce message d'erreur : Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\wamp64\www\phpi\phpi.php on line 18

  15. #15
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu sais que tu peux essayer de débuguer par toi même ? Dans 90% des cas, une erreur "syntax error, unexpected <quelque chose>" veut dire qu'il manque quelque chose à la ligne précédente : typiquement un point-virgule, une parenthèse ou une accolade.

    En l’occurrence, j'ai oublié le point-virgule à la fin de la ligne 15.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  16. #16
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    J'ai modifié mais du coup j' ai :

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'FROM user_searchs WHERE user_id = id_internaute' à la ligne 1' in C:\wamp64\www\phpi\phpi.php on line 12
    et
    ( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'FROM user_searchs WHERE user_id = id_internaute' à la ligne 1 in C:\wamp64\www\phpi\phpi.php on line 12
    Il faut peut être que je remplisses SELECT ?

  17. #17
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Celira Voir le message
    Pour la requête proprement dite, ce serait sans doute une bonne idée d'écrire la requête en dehors du script (dans PhpMyAdmin par exemple) et de l'intégrer dans le script seulement quand elle fonctionne et retourne ce que tu veux.
    Célira t'a déjà répondu là dessus. Ta requête ne peut pas fonctionner. Et ce n'est pas l'étoile qui est en cause.
    C'est id_internaute qui doit prendre une valeur concrète...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM user_searchs WHERE user_id = id_internaute
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  18. #18
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    Donc est ce que je dois mettre user_id = 5 ?

  19. #19
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Disons plutôt que tu dois te demander où est stockée cette valeur précise dans ton script ? où est stockée le user_id de CET utilisateur précis, dont le user_id=5 ?
    Il y a plein de possibilités. Et on ne peut pas avancer tant que tu ne sais pas ça.

    $user_id existe-t-il ?
    OU
    $_SESSION['user_id'] car il est stocké en session sur cette page ou sur une autre ?
    OU
    $_POST['user_id'] car il est envoyé par un formulaire methode POST ?
    OU
    $_GET['user_id'] car il est envoyé par un formulaire methode GET ou toute redirection avec une url de type "traitement.php?user_id=5" ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  20. #20
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Points : 6
    Points
    6
    Par défaut
    Dans ma table user_searchs j'ai le champ user_id (première colonne) avec une clé (primaire) et il y a aucune valeur par défaut . Quand je sélectionne et que j fais parcourir il ya ça d'écris :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `user_id` FROM `projet_internautes`.`user_searchs`

    Dans parcourir la ou j'ai user_id et user_ville à user_id il y a juste un 1 devant.

    Donc du coup je ne pense pas qu'elle existe mais par la suite il faut creer un formulaire avec Post.

Discussions similaires

  1. [MySQL] Aide authentification par session PHP MySql (Débutant)
    Par Dargar dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 03/03/2017, 14h52
  2. [MySQL] [php/mysql] Afficher les données d'une table (Débutant)
    Par Guns Of The Patriots dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 03/06/2010, 14h51
  3. [MySQL] débutant, PHP MYSQL XML
    Par nkordiko dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 22/04/2010, 16h56
  4. [Débutant] radio button et BDD (javascript/PHP/MySQL)
    Par stringman62 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/02/2007, 19h03
  5. [Flash MX 2004] Php Mysql (débutant)
    Par mooky dans le forum Flash
    Réponses: 7
    Dernier message: 08/02/2006, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo