comprehension de requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : comprehension de requete

par Cyrano » 10 sept. 2006, 15:30

ben sans trop forcer, je dirais qu'un bête dictionnaire d'anglais devrait suffire ;)

par artotal » 10 sept. 2006, 15:29

énorme l'explication.

Code : Tout sélectionner

a requête dit : "Retourne tous les champs depuis la table `article` Là où le champ `page` vaut $pages['code'] Et où le champ `publier` n'a pas pour valeur NULL;
il faudrai inventer un traducteur de requete pour les newbies come moi.
Saa existe peut être ?

par Cyrano » 10 sept. 2006, 15:18

      while ($pages = mysql_fetch_assoc($pages_result)) 
  { 
 $article_sql = "select * from article
                  where page = '{$pages['code']}'
                  and publier is not null
                  order by publier desc";
   
    $article_result = mysql_query($article_sql, $lien); 
----->
et cette requete dit :
selectionne tous les champs d'article ou les champ code et publier ne sont pas vide par ordre croissant et du plus grand au plus petit ?
Niet : la requête dit :
"Retourne tous les champs
depuis la table `article`
Là où le champ `page` vaut $pages['code']
Et où le champ `publier` n'a pas pour valeur NULL;

Si le champ `code` est vide ou null mais que les deux autres correspondent à la requête ci-dessus, alors la ligne sera retournée aussi.

par artotal » 10 sept. 2006, 15:05

oui, mais...
dans mon code
tant que
select * from pages order by code
je selectionne :
      while ($pages = mysql_fetch_assoc($pages_result)) 
  { 
 $article_sql = "select * from article
                  where page = '{$pages['code']}'
                  and publier is not null
                  order by publier desc";
   
    $article_result = mysql_query($article_sql, $lien); 
----->
et cette requete dit :
selectionne tous les champs d'article ou les champ code et publier ne sont pas vide par ordre croissant et du plus grand au plus petit ?

Ensuite on refait un test qui demande le nombre d'enregistrement dans la requete precedente et on les affiches à l'aide mysql_fetch_assoc().
avec un script de redimensionnement d'image (c'est une fonction).
  if (mysql_num_rows($article_result)) 
    {
      $article = mysql_fetch_assoc($article_result);
      echo "<tr>
            <td>
              <h4>{$pages['description']}</h4>
              <p>Sous-titre :: {$article['titre']}</p>
              <p align='right' class='morelink'>
                <a href='page.php?page={$pages['code']}'>
                En savoir plus sur se thème {$pages['code']} ...
                </a>
              </p>
            </td>
            <td width='100'>";
      if ($story['picture'])
      {
        echo '<img src="resize_image.php?image=';
        echo urlencode($story[picture]);
        echo '&max_width=80&max_height=60"  />';
      }
      echo '</td></tr>';
    }
  }  
Est ce que j'ai compris le, programme ?

par Cyrano » 10 sept. 2006, 14:33

Ok, on va décortiquer un peu ça parce que tu fais des confusions.

D'abord, les accolades : à la rigueur, à la place de '{$pages['code']}', tu aurais pu utiliser à la place de '". $pages['code'] ."' : c'est une des manières de faire une concaténation entre une chaine de caractères et du code PHP;

Ensuite, $pages ne fait pas référence à la table nommée "pages" mais àla variable définie juste au dessus :
<?php
//...
while ($pages = mysql_fetch_assoc($pages_result))
//...etc...
?>
Ici, la variable $pages est une ressource qui correspond au retour de MySQL : c'est un tableau associatif dont les index sont les noms des colonnes de ta table : donc, dans cette table, tu as un champ nommé "code" : ça aura pour conséquence que dans le tableau renvoyé par MySQL, $pages['code'] pour la ligne en cours de traitement correspondra à la valeur du champ "code" de la table "pages" tel que défini dans ta requête.

Mais comprends bien une chose : si au lieu de $pages tu avais mis par exemple $lignes, ton while aurait donc été :
<?php
//...
while ($lignes = mysql_fetch_assoc($pages_result))
//...etc...
?>
Il aurait fallu plus loin inscrire $lignes['code'] pour obtenir strictement la même chose.

Est-ce que c'est moins obscur comme ça ?

comprehension de requete

par artotal » 10 sept. 2006, 14:23

Bonjour,
j'ai une requete qui fonctionne mais je ne comprend pas son sens ?

Code : Tout sélectionner

$article_sql = "select * from article where page = '{$pages['code']}' and publier is not null order by publier desc";
Notemment les accolades, sont sens m'échape.

Code : Tout sélectionner

{$pages['code']}'
pages est une table de ma base, avec un champs qui se nomme aussi "code"

Le script complet qui sert à afficher, le dernier enregistrement (article).
<?php
 $pages_sql = 'select * from pages order by code';
  $pages_result =mysql_query($pages_sql, $lien);

  echo '<table border="0" width="400">';
      
  while ($pages = mysql_fetch_assoc($pages_result)) 
  {
    $article_sql = "select * from article
                  where page = '{$pages['code']}'
                  and publier is not null
                  order by publier desc";
   
    $article_result = mysql_query($article_sql, $lien);
    
    if (mysql_num_rows($article_result)) 
    {
      $article = mysql_fetch_assoc($article_result);
      echo "<tr>
            <td>
              <h4>{$pages['description']}</h4>
              <p>Sous-titre :: {$article['titre']}</p>
              <p align='right' class='morelink'>
                <a href='page.php?page={$pages['code']}'>
                En savoir plus sur se thème {$pages['code']} ...
                </a>
              </p>
            </td>
            <td width='100'>";
      if ($story['picture'])
      {
        echo '<img src="resize_image.php?image=';
        echo urlencode($story[picture]);
        echo '&max_width=80&max_height=60"  />';
      }
      echo '</td></tr>';
    }
  }
  echo '</table>';
  ?>