Probleme Choix de toutes les regions si pas de sessions cookies
9 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Probleme Choix de toutes les regions si pas de sessions cook
Bonjour,
J'ai un souci pour faire une modif en php, j'aimerais votre aident svp.
Je vais essayer d'être la plus claire possible.
Sur mon site j'ai une liste des dernières annonces classer selon une région, à la première visite de l'internaute si aucune région n'a était choisie alors est afficher une région par défaut avec cette variable:
Id -14 correspond à la région iles de france pour mieux comprendre voici l'architecture de ma table :
table countries
la fonction variable qui permet de choisir un id region est ici :
Vous allez me dire et ou est le problème !
Et bien en faite j'essaie depuis hier de faire un select sur toutes les id régions en même temps au lieu d'être limiter à faire un choix sur un id région.
En gros si c'est la première visite de l'internaute alors lui afficher les dernières annonces de toutes les région et pas uniquement la région -14 (ile de france).
Quelqu'un pourrais m'aider, merci d'avance.
J'ai un souci pour faire une modif en php, j'aimerais votre aident svp.
Je vais essayer d'être la plus claire possible.
Sur mon site j'ai une liste des dernières annonces classer selon une région, à la première visite de l'internaute si aucune région n'a était choisie alors est afficher une région par défaut avec cette variable:
- Code: Tout sélectionner
// the first city in the database will be taken as the default.
$default_city = -14;
Id -14 correspond à la région iles de france pour mieux comprendre voici l'architecture de ma table :
table countries
- Code: Tout sélectionner
--
-- Structure de la table `countries`
--
CREATE TABLE IF NOT EXISTS `countries` (
`countryid` smallint(5) unsigned NOT NULL auto_increment,
`countryname` varchar(50) NOT NULL default '',
`pos` smallint(5) unsigned NOT NULL default '0',
`enabled` enum('0','1') NOT NULL default '0',
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`countryid`),
KEY `pos` (`pos`),
KEY `enabled` (`enabled`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
--
-- Contenu de la table `countries`
--
INSERT INTO `countries` (`countryid`, `countryname`, `pos`, `enabled`, `timestamp`) VALUES
(2, 'Alsace', 1, '1', '2008-12-03 00:28:35'),
(3, 'Aquitaine', 2, '1', '2008-12-03 00:28:35'),
(4, 'Auvergne', 3, '1', '2008-12-03 00:28:35'),
(5, 'Basse Normandie', 4, '1', '2008-12-03 00:28:35'),
(6, 'Bourgogne', 5, '1', '2008-12-03 00:28:35'),
(7, 'Bretagne', 6, '1', '2008-12-03 00:28:35'),
(8, 'Centre Val de Loire', 7, '1', '2008-12-03 00:28:35'),
(9, 'Champagne-Ardenne', 8, '1', '2008-12-03 00:28:35'),
(10, 'Corse', 9, '1', '2008-12-03 00:28:35'),
(11, 'Dom-Tom', 10, '1', '2008-12-03 00:28:35'),
(12, 'Franche-Comté', 11, '1', '2008-12-03 00:28:35'),
(13, 'Haute Normandie', 12, '1', '2008-12-03 00:28:35'),
(14, 'Ile de France', 13, '1', '2008-12-03 00:28:35'),
(15, 'Languedoc-Roussillon', 14, '1', '2008-12-03 00:28:35'),
(16, 'Limousin', 15, '1', '2008-12-03 00:28:35'),
(17, 'Lorraine', 16, '1', '2008-12-03 00:28:35'),
(18, 'Midi-Pyrénées', 17, '1', '2008-12-03 00:28:35'),
(19, 'Nord-Pas-de-Calais', 18, '1', '2008-12-03 00:28:35'),
(20, 'PACA', 19, '1', '2008-12-03 00:28:35'),
(21, 'Pays de la Loire', 20, '1', '2008-12-03 00:28:35'),
(22, 'Picardie', 21, '1', '2008-12-03 00:28:35'),
(23, 'Poitou-Charentes', 22, '1', '2008-12-03 00:28:35'),
(24, 'Rhône-Alpes', 23, '1', '2008-12-03 00:28:35');
la fonction variable qui permet de choisir un id region est ici :
- Code: Tout sélectionner
// Get current city
if ($_GET['cityid'] > 0)
{
$xcityid = $_GET['cityid'];
}
elseif ($_GET['cityid'] < 0)
{
$xcountryid = abs($_GET['cityid']);
$xcityid = $_GET['cityid'];
}
elseif ($_COOKIE[$ck_cityid] > 0)
{
$xcityid = $_COOKIE[$ck_cityid];
}
elseif ($_COOKIE[$ck_cityid] < 0)
{
$xcountryid = abs($_COOKIE[$ck_cityid]);
$xcityid = $_COOKIE[$ck_cityid];
}
elseif ($default_city)
{
$xcityid = $default_city;
if($xcityid < 0) $xcountryid = -($xcityid);
}
if ($xcityid)
{
if ($xcityid > 0) $sql = "SELECT COUNT(*) FROM $t_cities WHERE cityid = '$xcityid'";
else $sql = "SELECT COUNT(*) FROM $t_countries WHERE countryid = '$xcountryid'";
list($city_exists) = @mysql_fetch_array(mysql_query($sql));
if(!$city_exists) $xcityid = 0;
}
/*if(!$xcityid)
{
$sql = "SELECT countryid
FROM $t_countries
WHERE enabled = '1'
LIMIT 1";
list($xcountryid) = mysql_fetch_array(mysql_query($sql));
$xcityid = 0-$xcountryid;
}*/
if(!$xcityid)
{
$sql = "SELECT cityid
FROM $t_cities
WHERE enabled = '1'
LIMIT 1";
list($xcityid) = @mysql_fetch_array(mysql_query($sql));
}
if (!$xcityid && !$in_admin)
{
die("No locations defined!");
}
setcookie($ck_cityid, $xcityid, time()+(60*24*60*60), "/");
// Get city name
if ($xcityid > 0)
{
$sql = "SELECT c.countryname, c.countryid, ct.cityname
FROM $t_cities ct
INNER JOIN $t_countries c ON c.countryid = ct.countryid
WHERE cityid = '$xcityid'";
list($xcountryname, $xcountryid, $xcityname)= @mysql_fetch_array(mysql_query($sql));
}
elseif ($xcountryid)
{
$sql = "SELECT c.countryname
FROM $t_countries c
WHERE countryid = '$xcountryid'";
list($xcountryname)= @mysql_fetch_array(mysql_query($sql));
$xcityname = $xcountryname;
}
Vous allez me dire et ou est le problème !
Et bien en faite j'essaie depuis hier de faire un select sur toutes les id régions en même temps au lieu d'être limiter à faire un choix sur un id région.
En gros si c'est la première visite de l'internaute alors lui afficher les dernières annonces de toutes les région et pas uniquement la région -14 (ile de france).
Quelqu'un pourrais m'aider, merci d'avance.
-

screuscreu - WRInaute passionné

- Messages: 927
- Inscription: Lun Jan 14, 2008 12:14
Dans ta requete de selection :
Et tu te débrouille pour mettre
$monWhere = countryid = '$xcountryid'";
OU
$monWhere = "1"
Dans le 2ème cas tu n'auras pas de critère de sélection....
J'espère ne pas avoir répondu à coté.
Bon courage
Et tu te débrouille pour mettre
$monWhere = countryid = '$xcountryid'";
OU
$monWhere = "1"
- Code: Tout sélectionner
SELECT blabla bla bla
FROM bla bla
WHERE $monWhere
Dans le 2ème cas tu n'auras pas de critère de sélection....
J'espère ne pas avoir répondu à coté.
Bon courage
Bonjour screuscreu, merci pour ton aide.
Je t'avoue n'avoir pas compris ta proposition :
As tu un exemple plus concret stp
Je t'avoue n'avoir pas compris ta proposition :
Dans ta requete de selection :
Et tu te débrouille pour mettre
$monWhere = countryid = '$xcountryid'";
OU
$monWhere = "1"
As tu un exemple plus concret stp
-

screuscreu - WRInaute passionné

- Messages: 927
- Inscription: Lun Jan 14, 2008 12:14
Je pense pas pouvoir être plus concret maintenant ...
J'ai une autre idée.
Sinon tu peux essayer de mettre $monWhere = countryid quand tu ne veux pas de selection. Cela sélectionnera tout... Je sais pas si tu vois mieux mais essaye tu verras.
Sinon je reviens à bord de WRI le 6Janvier ... mais je pense que tu trouveras une solution avant !
Bon courage
J'ai une autre idée.
Sinon tu peux essayer de mettre $monWhere = countryid quand tu ne veux pas de selection. Cela sélectionnera tout... Je sais pas si tu vois mieux mais essaye tu verras.
Sinon je reviens à bord de WRI le 6Janvier ... mais je pense que tu trouveras une solution avant !
Bon courage
Slt oui ya pas plus claire :
En attendant ton retour j'ai fait ceci :
Simplement le probleme c'est qu'il me prends uniquement le premier champs tu me diras change LIMIT, ce que j'ai fait mais il me prends tjrs que le premier champs.
LIMIT 1, 23";
ou
LIMIT 23";
J'essaie de tous les sélectionner comme cela en faite
Rien çà veut pas !!!
Sinon merci pour ton aide.
Bonne fête et attention pour le retour
En attendant ton retour j'ai fait ceci :
- Code: Tout sélectionner
if(!$xcityid)
{
$sql = "SELECT countryid
FROM $t_countries
WHERE enabled = '1'
LIMIT 1";
list($xcountryid) = mysql_fetch_array(mysql_query($sql));
$xcityid = 0-$xcountryid;
}
if(!$xcityid)
{
$sql = "SELECT cityid
FROM $t_cities
WHERE enabled = '1'
LIMIT 1";
list($xcityid) = @mysql_fetch_array(mysql_query($sql));
}
Simplement le probleme c'est qu'il me prends uniquement le premier champs tu me diras change LIMIT, ce que j'ai fait mais il me prends tjrs que le premier champs.
LIMIT 1, 23";
ou
LIMIT 23";
J'essaie de tous les sélectionner comme cela en faite
Rien çà veut pas !!!
Sinon merci pour ton aide.
Bonne fête et attention pour le retour
-

screuscreu - WRInaute passionné

- Messages: 927
- Inscription: Lun Jan 14, 2008 12:14
LIMIT 1 veux dire en fait : LIMIT 0,1 soit à partir de l'enregistrement 0 prendre un enregistrement.
Donc si tu as LIMIT 23, il va en prendre 23 à partir du premier enregistrement
Si tu as LIMIT 100,5 il va prendre du 100ème au 105ème.
Si tu as pas "LIMIT" bah il prendra tout !
Bien évidemment il te sélectionne que les "ids" on est bien d'accord ?
Donc si tu as LIMIT 23, il va en prendre 23 à partir du premier enregistrement
Si tu as LIMIT 100,5 il va prendre du 100ème au 105ème.
Si tu as pas "LIMIT" bah il prendra tout !
Bien évidemment il te sélectionne que les "ids" on est bien d'accord ?
Je suis 100% d'accord avec toi
Le souci c'est que justement il me prends pas mes 23 champs même si je fait comme je t'ai dit plus ou si je retirer LIMIT rien, il se cantonne à me prendre uniquement le premier champs : ggrrrr!!!
Soit ça vient de moi ou j'ai besoin de revoir mes bases
va savoir !
Sur ce bon réveillon et je te dit à l'année prochaine
Le souci c'est que justement il me prends pas mes 23 champs même si je fait comme je t'ai dit plus ou si je retirer LIMIT rien, il se cantonne à me prendre uniquement le premier champs : ggrrrr!!!
Soit ça vient de moi ou j'ai besoin de revoir mes bases
Sur ce bon réveillon et je te dit à l'année prochaine
-

screuscreu - WRInaute passionné

- Messages: 927
- Inscription: Lun Jan 14, 2008 12:14
je pense que ton pb vient de (et donc de tes bases):
list($xcountryname)= @mysql_fetch_array(mysql_query($sql));
utilise plutot:
$result = (mysql_query($sql);
while ($row = mysql_fetch_array($result):
print_r($row);
endwhile;
list($xcountryname)= @mysql_fetch_array(mysql_query($sql));
utilise plutot:
$result = (mysql_query($sql);
while ($row = mysql_fetch_array($result):
print_r($row);
endwhile;
9 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Incidence du PHP sur le référencement
- Le référencement de pages PHP
- Référencement : le problème des sessions des pages PHP
- Ranking Metrics propose désormais des audits de référencement
- Début du Full Crawl
- Comment créer une page web en PHP
- Google Developer Day 2007 : à Paris et dans 9 autres villes
- Gérer l'entête HTTP en PHP
- Votre site est mal référencé ? Voilà les remèdes !
Consultez la description détaillée des produits ou services de Google suivants : Google Talk
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum