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 :

[Tableaux] Récupérer et modifier une variable dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Points : 73
    Points
    73
    Par défaut [Tableaux] Récupérer et modifier une variable dans un tableau
    Bonjour,

    C'est ma première question sur ce forum.
    Bien que ma profession n'ait rien à voir avec l'informatique (je suis enseignant en droit), je m'intéresse au sujet et ai élaboré un site consultable ici http://www.laloupiote.net

    Je suis en train d'essayer de me construire un moteur de recherche pour mon site dont l'essentiel des données est chargé dans une table avec, notamment, les champs : titre, description contenu.
    Je veux faire des recherches sur une expression pour chacun de ses champs mais les distinguer en attribuant des valeurs différentes aux résultats de la recherche (si je trouve l'expression dans le titre, cela doit avoir plus de valeur que si je la trouve uniquement dans le contenu).
    Donc j'attribue 4 points à l'id qui contient l'expression dans le titre et 1 point seulement si l'expression est contenue dans le contenu
    Pour cela, je commence par faire un tableau associant un score, initialement fixé à 0 pour chaque ligne de ma base.
    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
    25
    26
    27
    28
     
    <?php
    include ("../include/loupiote.php"); 
    // je suis connecté à la base de donnée et je cherche l'id de la dernière ligne enregistrée
    $reponse = mysql_query("SELECT id FROM pages ORDER BY id DESC LIMIT 1") or die(mysql_error());
    $donnees = mysql_fetch_array($reponse);
    // à chaque ligne, j'attribue un score égal à 0 au départ
    $ids = 1;
    while ($ids<=$donnees['id'])
    {
    $score[$ids] = 0;
    //echo "le score de départ de $ids est de $score[$ids]<br>";
    $ids=$ids+1;
    }
     
    //Je teste sur une valeur $id=5
    echo "on affiche le test";
    echo "<br>";
    $id=5;
    echo $score[$id];
    $score[$id]=$score[$id]+4;
    echo "<br>";
    echo $score[$id];
    echo "<br>";
    $score[$id]=$score[$id]+6;
    echo $score[$id];
    echo "<br>";
    ?>
    et ça marche ! mon test est bon !
    J'obtiens cet affichage
    on affiche le test
    0
    4
    10
    Ensuite, je lance ma recherche d'expression

    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
    echo "recherche pour $reqexpression<br>";
    $recherche = mysql_query("SELECT id, titre FROM pages WHERE titre LIKE '%$reqexpression%'") or die (mysql_error()); // la requête, que maintenant vous devez comprendre ;)
    $score=4;
    echo "l'expression $reqexpression est passée à la recherche <strong>titre</strong> <br>";
    while($donnees = mysql_fetch_array($recherche))
    {
    $id=$donnees['id'];
    echo "le score de la page $id est:";
    echo $score[$id];
    echo "<br>";
    $score[$id] = $score[$id]+$score ;
    echo "le nouveau score de la page $id est:";
    echo "<br>";
    echo $score[$id];
    echo "<br>";
    echo "recherche <strong>titre</strong> effectuée<br>";
    }
    ?>
    et là, ça ne va plus !
    Pour une recherche portant sur l'expression "délégué du personnel", ça me donne ça
    recherche pour délégué du personnel
    l'expression n°1 pour la recherche n°1
    l'expression délégué du personnel est passée à la recherche 1
    recherche 1 effectuée
    le score de la page 105 est:


    Warning: Cannot use a scalar value as an array in /var/www/html/Cours/rechercher.php on line 165
    le nouveau score de la page 105 est:

    le score de la page 121 est:


    Warning: Cannot use a scalar value as an array in /var/www/html/Cours/rechercher.php on line 165
    le nouveau score de la page 121 est:

    l
    J'ai bien deux lignes qui sont repérées comme répondant à la recherche, mais
    1) je n'arrive pas à récupérer la variable initiale que j'avais mis dans mon tableau ! Pourquoi est-ce que ça marche avant le lancement de la recherche et ça ne marche plus après ou au cours de la recherche ?
    2) Qu'est-ce que c'est que cette histoire de "scalar value" ? Cela ne semble pas lié avec le premier problème, puisque je n'arrive pas à afficher ma variable avant même de chercher à la modifier ?

    Voilà, en espérant que vous pourrez éclairer ma loupiote. J'ai passé ma journée d'hier à tenter de résoudre le problème mais sans succès !

    Bien cordialement,

  2. #2
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Bonjour !

    A mon avis, le problème vient du fait que tu as deux variables $score ! Une qui est le score temporaire attribué ($score = 4) et une autre qui est le tableau global des scores !

    Or, comme PHP est non typé, ces deux variables sont considérées comme une seule et même variable ! La solution serait de changer le nom de la variable qui contient le score de la page courante, en $scoreCourant par exemple !

    J'espère que c'est ça ! Je ne peux pas trop tester où je bosse...
    Wookai


  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    et merci !
    C'était bien ça !
    Quand je pense à tout ce que j'aie pu faire pour contourner un problème aussi bête !
    Encore merci !

  4. #4
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    De rien ! Content d'avoir pu aider !

    N'oublie pas le ptit clic sur le bouton !
    Wookai


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier une variable dans un datagrid
    Par frankbe dans le forum ASP.NET
    Réponses: 6
    Dernier message: 30/07/2008, 15h13
  2. Réponses: 5
    Dernier message: 26/03/2008, 12h22
  3. Réponses: 2
    Dernier message: 15/02/2008, 21h45
  4. [MySQL] récupérer valeur d'une variable dans une autre table
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 15/03/2007, 22h07
  5. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

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