Formulaire de recherche [Résolu/Fermé]

Signaler
-
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
-
Bonjour,


J'ai créer une bdd "projet siemens" et une table "ville" et son id "id_ville".

J'ai créer mon formulaire dans la page formulaire.php dont voice le code:


<html>
<title>Formulaire</title>
<body>
<center>

<form method="post" action="search.php">

Veuillez taper le nom de la ville :

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>

<center>
</body>
</html>


Puis j'ai créer la page de résultat dans la page search.php dont voice le code:


<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=projet siemens', 'root', '', $pdo_options);

$reponse = $bdd->query('SELECT ville FROM ville');

while ($donnees = $reponse->fetch())
{
echo $donnees['ville'] . '<br />';
}

$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>



Ce que je veux c'est quand je rentre par exemple "AGEN" dans le moteur de recherche, je veux que ça m'affiche les infos relatives à AGEN qui sont dans la table "ville".

Mais ça ne marche pas. Quelqu'un saurait il pourquoi svp?

merci d'avance,

cedric

PS: désolé si il y a des erreurs de prog, je débute


29 réponses

Messages postés
69
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
8 avril 2013
7
Tu es un peu confus dans la description de ta table. Peux-tu détailler ta table :
-nom de la table
-nom des différents champs
merci pour ta réponse cycloop
voici les infos:

nom de la table: ville
champs de la table: adresse_ville ; ip_ville ; cp_ville

voila,
quelqu'un pour m'aider svp?
Messages postés
55
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
28 mars 2011
11
http://formation-sites.blogspot.com/p/php.html
merci mais je n'est pas trouver ce qui m'interesse!
quelqu'un aurait il une autre solution ?
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
Quand tu dis les infos relatives, tu parles de quelles infos? Donne un exemple complet stp
j'ai 4 tables dans ma bdd:

- ville
- alveole ==> champ: id_alveole et alveole
- liaison 1p ==> champ: id_liaison 1p et numero_liaison et nom_liaison
- liaison 2p ==> champ: id_liaison 2p et numero_liaison et nom_liaison

Dans ma table ville, j'ai 2 champ:

- id_ville ==> dans ce champ il y a les indexs des valeurs du champ "ville"
- ville ==> dans ce champ il y a les valeurs du champ ville (ex: AGEN, BORDEAUX)

Et quand je rentre AGEN je veux que ça cherche dans ma bdd dans la table "ville" et que ça affiche la valeur du champ correspondant à ce que j'ai rentré ainsi que les valeurs qui lui sont liés dans les autres tables.

voila,
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
C'est quoi le lien entre tes 4 tables?

De ce que j'ai compris.

Tu as un formulaire où tu as une liste des villes présentes dans ta bdd. Lorsque tu sélectionnes une ville ça t'affiche des infos. Le problème c'est que je vois pas l'info que tu veux dire. si c'est l'id_ville ou autre?
en fait dans chaque ville il y a 16 alveoles et dans chaque alveoles il y a 4 liaison 1p ou 2 laison 2p.

et dans les liaisons il y a le nom et le numero de chaque liaison

l'infos c'est le nom de la ville et ses alveoles et liaisons
voila ma bdd si ça peut t'aider:


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: 'projet siemens'
--

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

--
-- Structure de la table 'alveole'
--

CREATE TABLE IF NOT EXISTS 'alveole' (
  'id_alveole' int(20) NOT NULL AUTO_INCREMENT,
  'alveole' varchar(10) NOT NULL,
  PRIMARY KEY ('id_alveole')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

--
-- Contenu de la table 'alveole'
--

INSERT INTO 'alveole' ('id_alveole', 'alveole') VALUES
(1, 'Alveole 1'),
(2, 'Alveole 2'),
(3, 'Alveole 3'),
(4, 'Alveole 4'),
(5, 'Alveole 5'),
(6, 'Alveole 6'),
(7, 'Alveole 7'),
(8, 'Alveole 8'),
(9, 'Alveole 9'),
(10, 'Alveole 10'),
(11, 'Alveole 11'),
(12, 'Alveole 12'),
(13, 'Alveole 13'),
(14, 'Alveole 14'),
(15, 'Alveole 15'),
(16, 'Alveole 16');

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

--
-- Structure de la table 'liaison 1p'
--

CREATE TABLE IF NOT EXISTS 'liaison 1p' (
  'id_liaison 1p' int(20) NOT NULL AUTO_INCREMENT,
  'numero_liaison' varchar(20) NOT NULL,
  'nom_liaison' text NOT NULL,
  PRIMARY KEY ('id_liaison 1p')
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table 'liaison 1p'
--


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

--
-- Structure de la table 'liaison 2p'
--

CREATE TABLE IF NOT EXISTS 'liaison 2p' (
  'int_liaison 2p' int(20) NOT NULL AUTO_INCREMENT,
  'numero_liaison' int(20) NOT NULL,
  'nom_liaison' int(20) NOT NULL,
  PRIMARY KEY ('int_liaison 2p')
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table 'liaison 2p'
--


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

--
-- Structure de la table 'ville'
--

CREATE TABLE IF NOT EXISTS 'ville' (
  'id_ville' int(10) NOT NULL AUTO_INCREMENT,
  'ville' varchar(50) NOT NULL,
  'adresse_ville' text NOT NULL,
  'ip_ville' varchar(15) NOT NULL,
  'cp_ville' varchar(5) NOT NULL,
  PRIMARY KEY ('id_ville')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=54 ;

--
-- Contenu de la table 'ville'
--

INSERT INTO 'ville' ('id_ville', 'ville', 'adresse_ville', 'ip_ville', 'cp_ville') VALUES
(1, 'AGEN', '44 rue Paganel', '10.185.144.12', '47000'),
(2, 'BRUCH', '', '10.185.209.161', ''),
(3, 'CANCON', '', '10.185.178.33', ''),
(4, 'CARNOT', '', '10.185.179.244', ''),
(5, 'CASTELJALOUX', '', '10.185.180.195', ''),
(6, 'CASTILLONNES', '', '10.185.176.82', ''),
(7, 'CAUZAC ST VICTOR', '', '10.185.208.001', ''),
(8, 'CAZIDEROQUE', '', '10.185.191.225', ''),
(9, 'CLERMONT SOUBIRAN', '', '10.185.209.81', ''),
(10, 'COLAYRAC', '', '10,185,186,68', ''),
(11, 'DURANCE', '', '10.185.209.65', ''),
(12, 'DURAS', '', '10.185..178.49', ''),
(13, 'ESCASSEFORT', '', '10.185.187.145', ''),
(14, 'FAUGUEROLLES', '', '10.185.186.81', ''),
(15, 'FEUGAROLLES', '', '10.185.190.145', ''),
(16, 'FOURQUES', '', '10.185.178.65', ''),
(17, 'FRANCESCAS', '', '10.185.189.209', ''),
(18, 'FUMEL', '', '10.185.179.226', ''),
(19, 'HOUILLES', '', '10.185.209.33', ''),
(20, 'LAROQUE TIMBAULT', '', '10.185.186.97', ''),
(21, 'LAUZUN', '', '10.185.191.209', ''),
(22, 'LAVARDAC', '', '10.185.177.65', ''),
(23, 'LAYRAC', '', '10.185.176.19', ''),
(24, 'LE PASSAGE', '', '10.185.176.33', ''),
(25, 'LEVIGNAC DE GUYENNE', '', '10.185.188.145', ''),
(26, 'LOUGRATTE', '', '10.185.190.65', ''),
(27, 'MARMANDE', '', '10.185.186.277', ''),
(28, 'MARMANDE ROC', '', '10.185.158.146', ''),
(29, 'MAUVEZIN SUR GUPIE', '', '10.185.189.174', ''),
(30, 'MEZIN', '', '10.185.178.81', ''),
(31, 'MOIRAX', '', '10.185.191.177', ''),
(32, 'MONBAHUS', '', '10.185.190.81', ''),
(33, 'MONCRABEAU', '', '10.185.188.241', ''),
(34, 'MONTAGNAC SUR AUVIGNON', '', '10.185.209.177', ''),
(35, 'NERAC', '', '10.185.187.004', ''),
(36, 'PARRANQUET', '', '10.185.190.161', ''),
(37, 'PENNE D''AGENAIS', '', '10.185.186.130', ''),
(38, 'PORT STE MARIE', '', '10.185.186.161', ''),
(39, 'PRAYSSAS', '', '10.185.186.177', ''),
(40, 'PUCH D''AGENAIS', '', '10.185.189.193', ''),
(41, 'ST ASTIER DE DURAS', '', '10.185.187.129', ''),
(42, 'ST COLOM DE LAUZUN', '', '10.185.191.193', ''),
(43, 'ST FRONT SUR LEMANCE', '', '10.185.190.209', ''),
(44, 'ST MAURIN', '', '10.185.209.97', ''),
(45, 'ST SARDOS', '', '10.185.214.49', ''),
(46, 'STE LIVRADE', '', '10.185.176.50', ''),
(47, 'TONNEINS', '', '10.185.180.242', ''),
(48, 'TONNEINS', '', '10.185.180.244', ''),
(49, 'TOURNON D''AGENAIS', '', '10.185.191.113', ''),
(50, 'VERTEUIL', '', '10.185.190.49', ''),
(51, 'VILLENEUVE SUR LOT', '', '10.185.187.19', ''),
(52, 'VILLENEUVE SUR LOT(2 ème chassis)', '', '10.185.187.25', ''),
(53, 'VILLEREAL', '', '10.185.178.113', '');

--
-- Contraintes pour les tables exportées
--

--
-- Contraintes pour la table 'alveole'
--
ALTER TABLE 'alveole'
  ADD CONSTRAINT 'alveole_ibfk_1' FOREIGN KEY ('id_alveole') REFERENCES 'ville' ('id_ville');

--
-- Contraintes pour la table 'liaison 1p'
--
ALTER TABLE 'liaison 1p'
  ADD CONSTRAINT 'liaison@00201p_ibfk_1' FOREIGN KEY ('id_liaison 1p') REFERENCES 'alveole' ('id_alveole');

--
-- Contraintes pour la table 'liaison 2p'
--
ALTER TABLE 'liaison 2p'
  ADD CONSTRAINT 'liaison@00202p_ibfk_1' FOREIGN KEY ('int_liaison 2p') REFERENCES 'alveole' ('id_alveole');
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
Je ne pense pas pouvoir t'aider car je ne fonctionne pas avec les clés étrangères (ca marche jamais à tout les coups)..
Dans ton cas j'aurais mis 'idVille' dans alveol pour savoir à chaque alveol à qu'elle ville elle correspond.

Ce qui aurait fait que quand tu sélectionnes une ville, tu lances la requète.
SELECT * FROM alveol WHERE idville=($_post[idville']);

une commande de ce style et là tu aurais toutes les alveols qui sont dans la ville..
Puis tu résonnes pareil avec les autres tables..

Après si tu veux rester sur des clés étrangères je ne pourrais pas t'aider ^^
pour les cles etrangeres jai juste mis au pif parce que je ne sais pas comment mettre en relation les tables ^^ si il y a un autre moyen je suis preneur!
en tout cas merci de ta reponse ^^
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
exemple de table

Table ville :
id ville
nom ville
..
..

Table alveol :
id_alveole
id_ville // pour savoir à quel ville ça correspond.


Dans le id_ville de alveol il faut que sa valeur existe dans id ville de la table Ville.

Sinon à quoi ça sert les alveols, c'est quoi concrétement.
Parce que c'est pas nécessaire de créer une table si c'est pour marquer à chaque fois 'alveol' avec un numéro qui s'incrémente
en fait, une alvéole est une carte de transmission de téléphonie et dans chaque alvéole il ya soit 4 liaison de 1paires soit 2 liaison de 2paires.
et il y a 16 alvéoles ou cartes par ville.
voila jai modifié ma bdd pour qu'elle soit plus simple:

-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 25 Mars 2011 à 09:10
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: 'projet siemens'
--

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

--
-- Structure de la table 'alveole1'
--

CREATE TABLE IF NOT EXISTS 'alveole1' (
  'id_alveole1' int(2) NOT NULL,
  'num_liaison' varchar(20) NOT NULL,
  'nom_liaison' varchar(20) NOT NULL,
  'id_ville' int(2) NOT NULL,
  KEY 'alveole1' ('id_alveole1')
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table 'alveole1'
--

INSERT INTO 'alveole1' ('id_alveole1', 'num_liaison', 'nom_liaison', 'id_ville') VALUES
(1, '0020YPL', 'carnot', 1),
(1, '0020YUI', 'carnot', 1),
(1, '7654HGF', 'carnot', 1),
(1, '0020YKN', 'carnot', 1),
(1, '4321FDS', 'lolo', 2);

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

--
-- Structure de la table 'ville'
--

CREATE TABLE IF NOT EXISTS 'ville' (
  'id_ville' int(11) NOT NULL AUTO_INCREMENT,
  'ville' varchar(50) NOT NULL,
  'ip_ville' varchar(15) NOT NULL,
  KEY 'id_ville' ('id_ville')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=54 ;

--
-- Contenu de la table 'ville'
--

INSERT INTO 'ville' ('id_ville', 'ville', 'ip_ville') VALUES
(1, 'AGEN', '10.185.144.12'),
(2, 'BRUCH', '10.185.209.161'),
(3, 'CANCON', '10.185.178.33'),
(4, 'CARNOT', '10.185.179.244'),
(5, 'CASTELJALOUX', '10.185.180.195'),
(6, 'CASTILLONNES', '10.185.176.82'),
(7, 'CAUZAC ST VICTOR', '10.185.208.001'),
(8, 'CAZIDEROQUE', '10.185.191.225'),
(9, 'CLERMONT SOUBIRAN', '10.185.209.81'),
(10, 'COLAYRAC', '10,185,186,68'),
(11, 'DURANCE', '10.185.209.65'),
(12, 'DURAS', '10.185..178.49'),
(13, 'ESCASSEFORT', '10.185.187.145'),
(14, 'FAUGUEROLLES', '10.185.186.81'),
(15, 'FEUGAROLLES', '10.185.190.145'),
(16, 'FOURQUES', '10.185.178.65'),
(17, 'FRANCESCAS', '10.185.189.209'),
(18, 'FUMEL', '10.185.179.226'),
(19, 'HOUILLES', '10.185.209.33'),
(20, 'LAROQUE TIMBAULT', '10.185.186.97'),
(21, 'LAUZUN', '10.185.191.209'),
(22, 'LAVARDAC', '10.185.177.65'),
(23, 'LAYRAC', '10.185.176.19'),
(24, 'LE PASSAGE', '10.185.176.33'),
(25, 'LEVIGNAC DE GUYENNE', '10.185.188.145'),
(26, 'LOUGRATTE', '10.185.190.65'),
(27, 'MARMANDE', '10.185.186.277'),
(28, 'MARMANDE ROC', '10.185.158.146'),
(29, 'MAUVEZIN SUR GUPIE', '10.185.189.174'),
(30, 'MEZIN', '10.185.178.81'),
(31, 'MOIRAX', '10.185.191.177'),
(32, 'MONBAHUS', '10.185.190.81'),
(33, 'MONCRABEAU', '10.185.188.241'),
(34, 'MONTAGNAC SUR AUVIGNON', '10.185.209.177'),
(35, 'NERAC', '10.185.187.004'),
(36, 'PARRANQUET', '10.185.190.161'),
(37, 'PENNE D''AGENAIS', '10.185.186.130'),
(38, 'PORT STE MARIE', '10.185.186.161'),
(39, 'PRAYSSAS', '10.185.186.177'),
(40, 'PUCH D''AGENAIS', '10.185.189.193'),
(41, 'ST ASTIER DE DURAS', '10.185.187.129'),
(42, 'ST COLOM DE LAUZUN', '10.185.191.193'),
(43, 'ST FRONT SUR LEMANCE', '10.185.190.209'),
(44, 'ST MAURIN', '10.185.209.97'),
(45, 'ST SARDOS', '10.185.214.49'),
(46, 'STE LIVRADE', '10.185.176.50'),
(47, 'TONNEINS', '10.185.180.242'),
(48, 'TONNEINS', '10.185.180.244'),
(49, 'TOURNON D''AGENAIS', '10.185.191.113'),
(50, 'VERTEUIL', '10.185.190.49'),
(51, 'VILLENEUVE SUR LOT', '10.185.187.19'),
(52, 'VILLENEUVE SUR LOT(2 ème chassis)', '10.185.187.25'),
(53, 'VILLEREAL', '10.185.178.113');



Il n'y a plus que 2 tables. Sauf que je ne sais pas comparer ma saisie à ma bdd et afficher le résultat. j'ai tester avec les tutos mais je n'y arrive pas.
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
Le mieux c'est que tu ne saisisses pas dans la mesure où toutes tes valeurs que tu as besoin sont dans ta table.
Fait un "select" c'est mieux, comme ça pas d'erreur de syntaxe lors de la saisi.

imaginons que tu as appels ta variable nomVille;
ta requète sql sera SELECT * FROM ville WHERE Ville= la variable de ton formulaire
après si tu veux les alveoles tu changes le nom de ta table.

une fois que tu as écris ta requète, tu fais une boucle pour afficher ton résultat (si tu as plusieurs résultat) avec mysql_fetch_array(ta requète);
merci! je teste
voici le code de ma liste deroulante:

// Affichage de la ville choisie
$choix = isset($_POST['choix']) ? $_POST['choix'] : '';

if ($choix)
{
    $query = mysql_query("SELECT ville FROM ville WHERE id='$choix';") or die (mysql_error());
    $array = mysql_fetch_assoc($query);
}
 echo "Vous avez choisi la ville : " . $array['ville'];
// Début du script
$query = mysql_query("SELECT ville FROM ville;") or die (mysql_error());
if ($query) {
    echo '<form method="post">';
    echo '<select name="choix">';
    while ($array = mysql_fetch_assoc($query)) {
        if ($choix == $array["id"]) {
            echo '<option value="' . $array['id'] . '" selected>' . $array['ville'] . '</option>';
        } else {
            echo '<option value="'.$array['id'] . '">' . $array['ville'] . '</option>';
        }
    }
    echo '</select>';
    echo '<input type="submit" value="OK">';
    echo '</form>';
}


sauf qu'il me dit que ma variable array n'est pas definie!
quelle valeur il faut que je lui donne? quand je lui donne "plan" ça m'affiche "p" sauf que je ne veux rien qui s'affiche!
j'ai mis:
$array['ville'] = $choix ;

et la liste est nikel!

je vais tester la recherche dans la bdd
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
15
ouki pas de soucis, n'hésite pas en cas de soucis.