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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 éclairé
    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
    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
    Membre averti
    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
    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
    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 éclairé
    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
    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
    Membre averti
    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
    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 éclairé
    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
    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
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dell91 Voir le message
    ...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.
    Tu comprends ou pas ?
    Ta dernière requête semble confirmer que non.

    D'autre part, on parlait de "SESSION", et maintenant tu montres une requête...

    POSE UNE SEULE question à la fois !!
    Sinon, on ne peut pas se comprendre, non rien résoudre.

  9. #9
    Membre averti
    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
    Par défaut
    Dès la ligne 17 de index.php j'ai : Notice: Use of undefined constant ‘localhost’ - assumed '‘localhost’' in C:\wamp64\www\ville\index.php on line 17
    et je n'ai pas appris ce genre de message d'erreur.


    Voici les fichiers que j 'ai crée :


    index.php :
    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
    <?php require(‘inc_connexion.php’); ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Accueil</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
    <div>
    <h1>Accueil</h1>
    <p>Bienvenue sur le mini-site consacré aux villes.</p>
    <p>Ce site utilise PHP et MySQL</p>
    <p>Utilisez le menu de navigation pour consulter les pages du
    site.</p>
    <p>Bonne visite !</p>
    </div>
    <?php require(‘inc_menu.php’) ?>
    <?php require(‘inc_footer.php’) ?>

    ville.php :
    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
    21
    22
    23
    24
    <?php require(‘inc_connexion.php’); ?>
    <!DOCTYPE html>
    <html>
    <head>
    <?php
    // récupération de la variable externe
    $id = $_GET[‘id’];
    // requête.
    $result = $mysqli->query(‘SELECT user_id, user_ville
    FROM user_searchs WHERE ville_id = ‘ . $id );
    // création du nouvel array
    $row = $result->fetch_array();
    // variables destinées à l’affichage
    $nom = $row[‘ville_nom’];
    ?>
    <title><?php echo $nom ?></title>
    <link rel="stylesheet" type="text/css" href="style.css" />
     </head>
     <body>
     <div>
    <h1><?php echo $nom ?></h1>
    </div>
    <?php require(‘inc_menu.php’) ?>
    <?php require(‘inc_footer.php’) ?>
    inc_connexion.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    /*
    fichier inclus: inc_connexion.php
    contient la connexion à la base de données
    --------------------------------------------*/
    $mysqli = new mysqli(‘localhost’, ‘root’, ‘’, ‘projet_internautes’);
    ensuite

    inc_menu.php :
    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
    21
    22
    <?php
    /*
    fichier inclus : inc_menu.php
    contient le menu de navigation des villes
    --------------------------------------------*/
    // requête
    $result = $mysqli->query(‘SELECT user_id, user_ville FROM user_searchs’);
    // fetch_array
    while ($row = $result->fetch_array())
    {
    // création du nouvel array pour affichage ultérieur
    $villes[$row[‘user_id’]] = $row[‘user_ville’];
    }
    // Affichage
    ?>
    <ul>
    <li><a href="index.php">Accueil</a></li>
    <?php foreach($villes as $id => $ville) : ?>
    <li><a href="ville.php?id=<?php echo $id ?>"><?php echo $ville ?></
    a></li>
    <?php endforeach ?>
    </ul>
    et inc_footer.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    /*
    fichier inclus : inc_footer.php
    contient la fermeture de la connexion et la fin de page HTML
    --------------------------------------------*/
    // Libération des résultats
    $result->free();
    // Fermeture de la connexion
    $mysqli->close();
    ?>

  10. #10
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Use of undefined constant ‘localhost’ - assumed '‘localhost’'
    ça veut dire que PHP voit quelque chose qui ressemble à une constante (et pas à une chaine), mais qu'aucune constante portant ce nom n'a été définie avant. Il te signale donc qu'il va utiliser le nom de la théorique constante comme chaine. En général, ça veut dire que soit tu as fait une faute de frappe en voulant utiliser une constante existante, soit tu as oublié les quotes autour d'une chaine.

    Dans ton cas, c'est plus subtil : ton code utilise des guillemets à la place des quote$id = $_GET[id]; là il devrait avoir des simples quotes $id = $_GET['id'];. Ça ressemble à des quotes, mais ce n'est pas reconnu par PHP. Il faut donc tu remplaces tous les et dans la totalité de ton code.
    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]

  11. #11
    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 : 59
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bien vu Celira !
    Ne pas confondre les "single smart quotation marks" (chr146) et les "single straight quotation marks" (chr145)
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  12. #12
    Membre averti
    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
    Par défaut
    J'ai bien fais toutes les modifications dans tous mes fichier cela marche bien j'ai mon texte , mon lien d'accueil mais je n'ai qu'une ville qui s'affiche ce qui est normal car le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = $mysqli->query('SELECT * FROM user_searchs WHERE user_id = 5 ');
    .

    Donc j'ai remplacer par $villes pour que toutes les villes s'affiche mais cela ne marche pas j'ai une erreur qui me dit :
    Fatal error: Call to a member function fetch_array() on boolean in C:\wamp64\www\ville\index.php on line 21.

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Call to a member function fetch_array() on boolean
    C'est une erreur typique : en général, ça veut dire que ta requête ne fonctionne pas.

    Explication : les fonction d'exécution de la requête (mysqli->query) retournent soit un résultat qui peut être exploité par les fonctions fetch, soit FALSE si la requête rencontre une erreur. Dans le cas où la requête plante, tu appliques fetch_array sur false au lieu d'un résultat et forcément ça ne marche pas.

    Dans ton cas : affiche les erreurs en ajoutant une vérification du retour entre l'exécution de la requête et l'utilisation du résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = $mysqli->query('SELECT * FROM user_searchs WHERE user_id = 5 ');
    if ($result === false) {
        die("Erreur ! : "+ $mysqli->error);
    }
    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]

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