begin process at 2012 05 31 12:59:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Probleme pour faire un select multiple


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme pour faire un select multiple

lundi 29 décembre 2008 à 11:27:28 | Probleme pour faire un select multiple

kitten13

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:

[code]// the first city in the database will be taken as the default.
$default_city = -14;
[/code]

Id -14 correspond à la région iles de france pour mieux comprendre voici l'architecture de ma table :

table countries

[code]--
-- 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');
[/code]   

la fonction variable qui permet de choisir un id region est ici :

[code]// 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;
}
[/code]


Vous allez me dire et ou est le problème !

Et bien en faite j'essaie depuis hier de faire un select sur [b]toutes les id régions en même temps[/b] 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 [b]les dernières annonces de toutes les région[/b] et pas uniquement la région -14 (ile de france).

Quelqu'un pourrais m'aider, merci d'avance.  :wink:
lundi 29 décembre 2008 à 11:40:33 | Re : Probleme pour faire un select multiple

Noreaga10000

Bonjour,

Je m'y perd un peu entre city et country.

Mais peut-être que à la place de:

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;
}

tu pourrais essayer:

if ($xcityid)
{
    if ($xcityid > 0) $sql = "SELECT COUNT(*) FROM $t_cities WHERE cityid = '$xcityid'";
    else $sql = "SELECT COUNT(*) FROM $t_countries ORDER BY timestamp DESC LIMIT 5";

    list($city_exists) = @mysql_fetch_array(mysql_query($sql));
    if(!$city_exists) $xcityid = 0;
}
lundi 29 décembre 2008 à 11:56:21 | Re : Probleme pour faire un select multiple

kitten13

Tout d'abord Merci pour ton aide Noreaga10000,

En faite ta solution ne fonctionne pas, je commence à désespérer!!

Ce que je souhaite par contre c'est faire un select sur tout les régions de la table countries en même temps.



Le post n'est pas propre désoler je ne trouve pas le bouton pour éditer à nouveaux mon poste.

lundi 29 décembre 2008 à 15:00:42 | Re : Probleme pour faire un select multiple

Noreaga10000

Franchement je vais te proposer un autre truc tout a fait au hasard, car je m'y perd réellement dans tes variables (je sais pas comment tu t'y retouves).

A la fin du code :
elseif ($xcountryid)
{
    $sql = "SELECT c.countryname
            FROM $t_countries c
            WHERE countryid = '$xcountryid'";
    list($xcountryname)= @mysql_fetch_array(mysql_query($sql));
    $xcityname = $xcountryname;
}


Essayes plutôt:
elseif ($xcountryid)
{
    $sql = "SELECT c.countryname, c.timestamp
            FROM $t_countries c
            ORDER by c.timestamp DESC
            LIMIT 5";
    list($xcountryname)= @mysql_fetch_array(mysql_query($sql));
    $xcityname = $xcountryname;
}
lundi 29 décembre 2008 à 16:23:28 | Re : Probleme pour faire un select multiple

kitten13

Oui je comprends il faut dire que le code n'est pas très lisible sur le poste et j'ai pris une mauvaise manie de pas commenter mon code.

Bon je vais reprendre au début car je tes pas tout donner les infos pour que tu puisse m'aider.

Voici la structure des 3 tables en question :

--
-- 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');


-- --------------------------------------------------------

--
-- Structure de la table `cities`
--

CREATE TABLE IF NOT EXISTS `cities` (
  `cityid` smallint(5) unsigned NOT NULL auto_increment,
  `cityname` varchar(50) NOT NULL default '',
  `countryid` smallint(5) unsigned NOT NULL default '0',
  `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  (`cityid`),
  KEY `countryid` (`countryid`),
  KEY `pos` (`pos`),
  KEY `enabled` (`enabled`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=103 ;

--
-- Contenu de la table `cities`
--

INSERT INTO `cities` (`cityid`, `cityname`, `countryid`, `pos`, `enabled`, `timestamp`) VALUES
(2, '67 - Bas-Rhin', 2, 1, '1', '2008-12-03 00:28:35'),
(3, '68 - Haut-Rhin', 2, 2, '1', '2008-12-03 00:28:35'),
(4, '24 - Dordogne', 3, 3, '1', '2008-12-03 00:28:35'),
(5, '33 - Gironde', 3, 4, '1', '2008-12-03 00:28:35'),
(6, '40 - Landes', 3, 5, '1', '2008-12-03 00:28:35'),
(7, '47 - Lot-et-Garonne', 3, 6, '1', '2008-12-03 00:28:35'),
(8, '64 - Pyrénées-Atlantiques', 3, 7, '1', '2008-12-03 00:28:35'),
(9, '03 - Allier', 4, 8, '1', '2008-12-03 00:28:35'),
(10, '15 - Cantal', 4, 9, '1', '2008-12-03 00:28:35'),
(11, '43 - Haute-Loire', 4, 10, '1', '2008-12-03 00:28:35'),
(12, '63 - Puy-de-Dôme', 4, 11, '1', '2008-12-03 00:28:35'),
(13, '14 - Calvados', 5, 12, '1', '2008-12-03 00:28:35'),
(14, '50 - Manche', 5, 13, '1', '2008-12-03 00:28:35'),
(15, '61 - Orne', 5, 14, '1', '2008-12-03 00:28:35'),
(16, '21 - Côte-d''Or', 6, 15, '1', '2008-12-03 00:28:35'),
(17, '58 - Nièvre', 6, 16, '1', '2008-12-03 00:28:35'),

blablabla ....

-- --------------------------------------------------------

--
-- Structure de la table `areas`
--

CREATE TABLE IF NOT EXISTS `areas` (
  `areaid` smallint(5) unsigned NOT NULL auto_increment,
  `areaname` varchar(50) NOT NULL default '',
  `cityid` smallint(5) unsigned NOT NULL default '0',
  `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  (`areaid`),
  KEY `pos` (`pos`),
  KEY `cityid` (`cityid`),
  KEY `enabled` (`enabled`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Contenu de la table `areas`
--

Que j'utilise pas encore

Maintenant la fonction variable que je me sert pour définir un id région (une région à afficher par défaut) si aucune région n'a été encore choisie.

// ID of the default city. If u want to use a region as default,

// enter the region id preceeded with a '-'. Set this to 0 and

// the first city in the database will be taken as the default. ( Soit -14 = id de la région ile de france )
$default_city = -14;


Les variables en question :

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 cityid
            FROM $t_cities
            WHERE enabled = '1'
            LIMIT 1";
    list($xcityid) = @mysql_fetch_array(mysql_query($sql));
}


ps: Se que tu me propose ne conviens pas



Cette discussion est classée dans : mysql, sql, select, xcityid, cityid


Répondre à ce message

Sujets en rapport avec ce message

## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que sil vou plé où est l'erreur ? [ par kodiask ] voilà g fai un système de citation au hazard et kanje met le code là il maffiche rien du tout , pourkoi ? merci ....mysql_select_db('cit_tbl',$db); $q Select dans deux table [ par speedylol ] Bonjour j aimerais selectionner un champs ou plusieur de deux table mes je vois pas comment faire cela sauriez vous m'aider merci? car je débute en ph un prob de requete [ par ombrey20 ] j'ai un petit prob qui peut m'aider!!!!! est ce que c'est possible,si jamais on click sur un lien il execute une requete sachant que que cette requett pb de delete [ par ninjafury ] Bonjour tout le mondevoilà le message que j'ai execution de la requête impossibleet voici le code que j'utilise/* Récupération des donnée Problème de Débutant: récupérer des données sql dans des variables... [ par la_ptite_85 ] Bonjour !Je voudrais sortir les valeurs de ma bdd sql pour les envoyer vers flash...Voilà mon code :$nom = $_GET['nom'];$host = "sql.free.f Instruction require_once() et erreur "supplied argument is not a valid MySQL" [ par karpediem ] Bonjour @ toutezéatous,J'ai une question toute bête, j'ai presque honte de la poser, mais je vais prendre sur moi ;o))J'ai une page php qui est appell Problèmes a cause d'une liste déroulante pour modification dans bdd [ par arkonara ] J'ai un pti probleme sur la modification d'un matérielvoisci comment fonctionne mon formulaire, j'ai une liste dé"roulant qui contient mes code de mat pb code php [ par mickael56100 ] header('Content-type: text') ; // on déclare ce qui va être afficher // test des POST emisif ((isset($_POST['id']) && !empty($_POST['id'])) && (isset( besoin d'aide [ par hwm86 ] bonjour mes amis..j'ai besoin de votre aide.. je veux créer 2 liste de sélection et l'idée de créer la deuxième après que la première prend une valeur


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales