Tom's Guide > Forum > Programmation > [Résolu] Requete SQL sur tous les enregistrements sauf 1 ?

[Résolu] Requete SQL sur tous les enregistrements sauf 1 ?

Forum Programmation : [Résolu] Requete SQL sur tous les enregistrements sauf 1 ?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonsoir,

J'ai un problème de requête. En effet, lorsque l'on consulte la dernière actualité du moment, cela l'affiche et en dessous, il y a la possibilité de consulter d'autres actualités. Mais je voudrais faire une requête qui sélectionne tous les enregistrements sauf celui qui est affiché dans la page au-dessus.

Voici mon code :


Code :
  1. <?php
  2.     include ("modules/module_connexion_base.php" );
  3. $connexionMYSQL = mysql_connect("*****","******","****" );
  4.     if ($connexionMYSQL)//Connexion au serveur manqué
  5.     {
  6.         $activationBD = mysql_select_db("*****", $connexionMYSQL);
  7.         if ($activationBD)//Activation de la base de données raté
  8.         {
  9.             $id=$_GET['id'];
  10.             $sql = "SELECT * FROM `actualites` WHERE `id-actualites`=".$id;
  11.             $requete = mysql_query($sql) or die(mysql_error());
  12.             $nbResultats = mysql_num_rows($requete);//compte le nombre de ligne
  13.             $row = mysql_fetch_array($requete);
  14.             ?>
  15.             <?php
  16.             echo "<center><strong>".$row['titre']."</strong></center><br />";
  17.             echo "<strong>Date de sortie</strong> : ".$row['date_sortie']."<br/><br />";
  18.                 ?>
  19.             <div style="{float:right;}">
  20.                 <img src="<?php echo $row['image'];?>" alt="Image du film" title="Image du film"/>
  21.             </div><br />
  22.             <div id="background_resume">
  23.             <?php
  24.             echo $row['resume'];
  25.             ?>
  26.             </div>
  27.             <br />
  28.             <strong>Informations diverses </strong><br />
  29.             <div id="info">
  30.                 <?php
  31.                     echo $row['titre-info']."<br />";
  32.                     echo $row['info'];
  33.                 ?>
  34.             </div>
  35.             <strong>Bande-annonce</strong>
  36.             <object width="425" height="344"><param name="movie" value=<?php echo $row['video']; ?>></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src=<?php echo $row['video']; ?> type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
  37.             <?php
  38.       }
  39.   }
  40.   ?>
  41.   <hr />
  42. /* C'est à partir d'ici qu'il faudrait que la requête change !!!! */
  43.   <strong>Les autres actualités de ce mois</strong><br />
  44.     <?php
  45.         $sql1 = "SELECT * FROM `actualites`";
  46.         $requete1 = mysql_query($sql1);
  47.         $nbResultats1 = mysql_num_rows($requete1);//compte le nombre de ligne
  48.         while ($row1 = mysql_fetch_array($requete1)){
  49.         if ($nbResultats1 == 0) {
  50.             echo "Il n'y a pas d'autres actualités pour ce mois-ci.<br />";
  51.         }
  52.         else {
  53.             echo "<a href=\"index.php?action=action_actualites&id=".$row1['id-actualites']."\">";
  54.             echo $row1['titre']."</a><br />";
  55.         }
  56.     }
  57.     ?>




Je ne sais pas comment procéder...
Merci de votre aide !


Message édité par blasil64 le 30-04-2009 à 19:52:14
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut Blasil64!

EN thérie la News affichée sur la page de ton site correspond à la dernière entrée.
Tu affiches donc la dernière donnée enregistrée dans la base par un DESC LIMIT.

SELECT *
FROM ma_table
ORDER BY id DESC LIMIT 0,1

Cette requête affichera l'ensemble des colonnes de la table "ma_table" de manière décroissante avec une limite ce qui aura pour but d'afficher la dernière news crée.
J'ai mis "id" comme colonne pour l'organisation, tu peux très bien mettre le numéro de la colonne c'est à dire 1 (puisque l'id correspond à la clé primaire).

Je te laisse un peu chercher :P si vraiment tu n'y arrives pas tiens nous au courant!
++

Répondre à Minim@list

Apparemment tu n'as pas bien compris mes précédent message qui disent de ne jamais mettre des variable $_GET directement dans une requête sql. is_numeric() ;)

PS : Pas de pub.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

AH oui pour la sécurité mais j'ai testé comme ça :

Code :
  1. $lettre = strlen($_GET['lettre']);
  2.     if(strlen($lettre) != 1) {
  3.         trigger_error("Parametre incorrect",E_USER_ERROR);
  4.     }




Mais ça ne me fait rien, ça n'affiche rien...
Je cherche pour la requête !

Répondre à blasil64

Bah oui ... mais vas tu lire la doc parfois et ce que fait strlen() ... copier coller c'est bien mais il faut comprendre ce que l'on fait. Et j'ai expliqué ce que ca faisait.

en l'occurence, tu passes un paramètre id de type numéric donc tu vérifies bien qu'il est numérique avec (is_numeric())

Code :
  1. if(!is_numeric($_GET['id'])) {
  2. trigger_error(............)
  3. }



le ! sert à dire non. Ce qui, le test donne en français, si la variable id donné en url n'est pas de type numérique.


Je note au passage que la requête SELECT * FROM `actualites` ne donne absolument pas les actualités du mois mais l'ensemble des actualites dans ta table depuis la nuit des temps. Et à voir les ` je suppose que tu copie sechement tes requêtes depuis PHPmyAdmin ... Quand on développe pour du web, c'est bien sympa d'aprendre PHP mais il faut aussi apprendre le SQL.

Bon, mes postes sont toujours aussi négatif mais c'est comme ça que tu y arriveras (si tu copies/colles pas).

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Non désolé je ne copies pas phpMyAdmin. C'est juste que mon site est récent et pour le moment je n'ai pas pensé à tous encore. Je sais que arrivé au mois prochain, il va falloir que je trouve une requête qui classe par date ou quoi. J'y ai pensé mais pas réfléchi !
Je sais que le ! sert à ça. Après je ne connais pas tous et j'avoue que ça me gave un peu de lire mais je sais qu'il faut le faire !
Ne t'inquiète pas pour ta négativité il faut de tout partout. En tout cas merci de ton aide !


EDIT :
Et en sachant que ma variable c'est lettre que je récupère et qu'elle peut soit être '0' (zéro) soit 'a' ou 'b' ou ... ou 'z' ???


Message édité par blasil64 le 24-04-2009 à 21:40:33
Répondre à blasil64

Niveau sécurité, j'ai trouvé cette fonction sympathique :

Code :
  1. function securite_bdd($string)
  2.     {
  3.         // On regarde si le type de string est un nombre entier (int)
  4.         if(ctype_digit($string))
  5.         {
  6.             $string = intval($string);
  7.         }
  8.         // Pour tous les autres types
  9.         else
  10.         {
  11.             $string = mysql_real_escape_string($string);
  12.             $string = addcslashes($string, '%_');
  13.         }
  14.         return $string;
  15.     }
  16. $lettre = securite_bdd($_GET['lettre']);



Le problème est que ça m'affiche ça sur la page :

Code :
  1. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in ....mapage.php on line XX



Et ensuite ça m'affiche tous les films présent dans ma table au lieu de ce qui correspondent à la lettre.

J'ai testé 'strlen' mais ça me renvoit 1 et du coup ça ne m'affiche rien sur la page...



[EDIT] : Au niveau de la requête, puis-je faire un truc du genre :

Code :
  1. SELECT * FROM actualites WHERE `id-actualites` = (SELECT ...)



Ou les '...' serait un truc du genre : trouve moi tous sauf le max d'id-actualites.

Merci de votre aide !


Message édité par blasil64 le 25-04-2009 à 19:15:10
Répondre à blasil64

J'ai déjà donné la réponse du pourquoi ca ne marche pas dans l'autre topic.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Pour la requête qui permet d'afficher tout sauf celui présente sur la page :

Code :
  1. "SELECT * FROM `dvd_accueil` WHERE `id-dvd` != ".$id;


Merci de votre aide !

Répondre à blasil64
Tom's Guide > Forum > Programmation > [Résolu] Requete SQL sur tous les enregistrements sauf 1 ?
Aller à :

Il y a 2302 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens