Double requêtes SQL
16 messages
• Page 1 sur 2 • 1, 2
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Double requêtes SQL
Bonjour,
Pour faire simple, j'ai une table appelée news dans une bdd avec id, code, commune, description, photo, articles.
Au lieu de faire une table pour chaque colonne ayant un code différent, j'aimerai intégrer une requête dans mon code ci-dessous, du type sélectionner toutes les "id" de ma table news dont le code = 1 tout en respectant mon code de pagination.
J'ai essayé avec WHERE code = '1', mais ça ne fonctionne pas.
Je fais peut-être une erreur de syntaxe, ou et certainement une mauvaise insertion dans le code (je débute en PHP, merci pour votre indulgence).
J'ai donc essayé
et aussi
Pour faire simple, j'ai une table appelée news dans une bdd avec id, code, commune, description, photo, articles.
Au lieu de faire une table pour chaque colonne ayant un code différent, j'aimerai intégrer une requête dans mon code ci-dessous, du type sélectionner toutes les "id" de ma table news dont le code = 1 tout en respectant mon code de pagination.
J'ai essayé avec WHERE code = '1', mais ça ne fonctionne pas.
- Code: Tout sélectionner
<?php
/*
Connexion à  la BDD
*/
require "connect.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$sql = "SELECT COUNT(id) as nbArt FROM news";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
$nbArt = $data['nbArt'];
$perPage = 2;
$nbPage = ceil($nbArt/$perPage);
$cPage = 1;
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
$sql = "SELECT * FROM news ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
?>
Je fais peut-être une erreur de syntaxe, ou et certainement une mauvaise insertion dans le code (je débute en PHP, merci pour votre indulgence).
J'ai donc essayé
- Code: Tout sélectionner
<?php
/*
Connexion à  la BDD
*/
require "connect.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$sql = "SELECT COUNT(id) WHERE code = '1' as nbArt FROM news";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
$nbArt = $data['nbArt'];
$perPage = 2;
$nbPage = ceil($nbArt/$perPage);
$cPage = 1;
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
$sql = "SELECT * FROM news ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
?>
et aussi
- Code: Tout sélectionner
<?php
/*
Connexion à  la BDD
*/
require "connect.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$sql = "SELECT COUNT(id) as nbArt FROM news";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
$nbArt = $data['nbArt'];
$perPage = 2;
$nbPage = ceil($nbArt/$perPage);
$cPage = 1;
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
$sql = "SELECT * FROM news WHERE code = '1' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
?>
- K-mi-k-z
- WRInaute discret

- Messages: 206
- Inscription: 26 Aoû 2011
Re: Double requêtes SQL
- Code: Tout sélectionner
{
$sql = "SELECT (On ne met pas *, mais le nom des colonnes) FROM news ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
Supprime les accolades autour de ta seconde requête. Y en 2 ouverte qui ne servent à rien.
Pour info, le test if sur le isset ne sert à rien vu que tu test ensuite qu'il contient une valeur.
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Re: Double requêtes SQL
Merci K-mi-k-z de prêter attention à mon post.
Petite question : en mettant le nom des colonne (SELECT (On ne met pas *, mais le nom des colonnes), je vais afficher leur effectivement sélectionner celles que je veux voir afficher. Par contre, je voudrai afficher ces mêmes colonnes, mais avec un critère de sélection pour la colonne "code" :c'est à dire que l'affichage ne prendra en compte que les contenus lorsque le code "achards".
J'espère être à peu près clair, car pas simple à expliquer.
Concernant les accolades et le test if sur le isset, je veux bien te croire, j'ai suivi un tuto que j'ai essayé d'adapter sans réelles connaissances en ce domaine.
Petite question : en mettant le nom des colonne (SELECT (On ne met pas *, mais le nom des colonnes), je vais afficher leur effectivement sélectionner celles que je veux voir afficher. Par contre, je voudrai afficher ces mêmes colonnes, mais avec un critère de sélection pour la colonne "code" :c'est à dire que l'affichage ne prendra en compte que les contenus lorsque le code "achards".
J'espère être à peu près clair, car pas simple à expliquer.
Concernant les accolades et le test if sur le isset, je veux bien te croire, j'ai suivi un tuto que j'ai essayé d'adapter sans réelles connaissances en ce domaine.
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Re: Double requêtes SQL
Gloups....désolé. Je vais essayé d'être clair.
J'édite un journal local d'informations sur plusieurs communes, donc plusieurs cantons.
J'ai une page index qui affiche tous les articles réunissants toutes les communes. Jusque là tout va bien.
Mes lecteurs doivent pouvoir depuis la barre de menu sélectionner le canton qui les intéresse.
Je créé donc une page canton1.php, canton2.php etc... Là c'est bon pour moi.
Au lieu de créer une table dans la bdd pour chaque canton, je pense qu'il est possible de récupérer dans la table de la bdd affectée à la page index et en y insérant une colonne du type code avec entrée 1 par exemple pour le canton 1, 2 pour le canton 2, etc... uniquement les articles du canton1 a afficher dans la page canton1.php.
L'objectif étant de limiter le nombre d'action de saisie bien sûr dans les tables par la suite.
J'espère ne pas avoir oublié de mot cette fois...
J'édite un journal local d'informations sur plusieurs communes, donc plusieurs cantons.
J'ai une page index qui affiche tous les articles réunissants toutes les communes. Jusque là tout va bien.
Mes lecteurs doivent pouvoir depuis la barre de menu sélectionner le canton qui les intéresse.
Je créé donc une page canton1.php, canton2.php etc... Là c'est bon pour moi.
Au lieu de créer une table dans la bdd pour chaque canton, je pense qu'il est possible de récupérer dans la table de la bdd affectée à la page index et en y insérant une colonne du type code avec entrée 1 par exemple pour le canton 1, 2 pour le canton 2, etc... uniquement les articles du canton1 a afficher dans la page canton1.php.
L'objectif étant de limiter le nombre d'action de saisie bien sûr dans les tables par la suite.
J'espère ne pas avoir oublié de mot cette fois...
- Babylon
- WRInaute discret

- Messages: 191
- Inscription: 18 Oct 2006
Re: Double requêtes SQL
Alors si j'ai bien compris
tu veux relier tes news à un canton.
Donc tu crée une table canton du style :
ID canton_name
1 canton1
2 canton2
Puis dans ta table news tu ajoute un champ canton que tu rempliras avec l'id du canton correspondant.
Enfin dans ta page canton1.php la requête sera :
SELECT * FROM news WHERE canton = '1'
Donc tu crée une table canton du style :
ID canton_name
1 canton1
2 canton2
Puis dans ta table news tu ajoute un champ canton que tu rempliras avec l'id du canton correspondant.
Enfin dans ta page canton1.php la requête sera :
SELECT * FROM news WHERE canton = '1'
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Re: Double requêtes SQL
Merci Babylon, mais c'est ce que j'ai essayé dans mes codes que tu peux voir dans mes premiers messages
Malheureusement, ce code ne me permet d'afficher la sélection souhaitée dans ma table. J'ai bien un affichage mais de toutes mes entrées comme si ce code ne prenait pas en compte ma requête.
Est-ce que je l'insère mal dans ma page (voir le code initial dans mon premier message de ce sujet), au mauvais endroit, faut-il créer une autre requête : si oui comment ?
- Code: Tout sélectionner
$sql = "SELECT * FROM news WHERE code = '1' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
?>
Malheureusement, ce code ne me permet d'afficher la sélection souhaitée dans ma table. J'ai bien un affichage mais de toutes mes entrées comme si ce code ne prenait pas en compte ma requête.
Est-ce que je l'insère mal dans ma page (voir le code initial dans mon premier message de ce sujet), au mauvais endroit, faut-il créer une autre requête : si oui comment ?
- K-mi-k-z
- WRInaute discret

- Messages: 206
- Inscription: 26 Aoû 2011
Re: Double requêtes SQL
C'est ça le problème lorsqu'on récupère des bouts de code sans aucune notion.
Dans ton cas, ta requête et sont traitement sont fait pour une pagination, pas un affichage spécifique par page.
En gros, tu compte le nb d'article, et tu les affiches tous à raison de x par page.
Toi, tu cherches à afficher tous les articles pour un canton donné. Rien à voir.
Dans ton cas, ta requête et sont traitement sont fait pour une pagination, pas un affichage spécifique par page.
En gros, tu compte le nb d'article, et tu les affiches tous à raison de x par page.
Toi, tu cherches à afficher tous les articles pour un canton donné. Rien à voir.
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Re: Double requêtes SQL
Je ne souhaite pas devenir programmeur, mais juste mettre en place un site, alors effectivement je cherche à travers des tutos, ce qui peux m'être utile et comprendre tant ce faire se peux comment ça fonctionne.
Je sais que mon code permet la pagination (c'était mon souhait initial), et je serai étonné qu'il ne soit pas possible de sélectionner les entrées d'une colonne selon un critère x, en affectant quelque chose dans ce code.
Je sais que mon code permet la pagination (c'était mon souhait initial), et je serai étonné qu'il ne soit pas possible de sélectionner les entrées d'une colonne selon un critère x, en affectant quelque chose dans ce code.
- cybereco
- Nouveau WRInaute

- Messages: 35
- Inscription: 19 Aoû 2011
Re: Double requêtes SQL
Cette réalisation était réalisable effectivement.
Voilà ce qu'il fallait faire ci-dessous. Merci à tous ceux qui ont tenté de m'apporter leur aide.
Voilà ce qu'il fallait faire ci-dessous. Merci à tous ceux qui ont tenté de m'apporter leur aide.
- Code: Tout sélectionner
$canton = 'achards';
$sql = "SELECT COUNT(id) as nbArt FROM news WHERE canton = '$canton'";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
$nbArt = $data['nbArt'];
$perPage = 2;
$nbPage = ceil($nbArt/$perPage);
$cPage = 1;
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
$sql = "SELECT * FROM news WHERE canton = '$canton' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req)){
Dernière édition par cybereco le Mer Sep 14, 2011 13:39, édité 1 fois.
-

zeb - WRInaute accro

- Messages: 4553
- Inscription: 5 Déc 2004
Re: Double requêtes SQL
en fait il n'y en a qu'une en trop si le code est complet :
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
celle en rouge.
et : if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage) devrait pouvoir correspondre a ça :
if($_GET['p']>0 && $_GET['p']<=$nbPage)
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
$cPage = $_GET['p'];
}
{
celle en rouge.
et : if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage) devrait pouvoir correspondre a ça :
if($_GET['p']>0 && $_GET['p']<=$nbPage)
16 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : Google Trends Recherche Personnalisée
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
