Récupératio de données

Eléphant du PHP | 64 Messages

19 sept. 2010, 16:57

Bonjour

Après avoir bossé une partie de la nuit, et je ne sais combien de cafés, je n'y arrive pas.

Premièrement, il n'y a qu'une seule table.
Deuxièmement, je ne peut pas modifier la structure, car elle provient d'une base de donnée d'une bibliothèque.

J'ai modifier je ne sais combien de fois le srcipt, mais je ne réussis pas à obtenir une deuxième liste.
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "bibliotheque";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['auteurs'])?$_POST['auteurs']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['titre']) && $_POST['titre'] != "")
{
    $auteurs_selectionnee = $_POST['auteurs'];
    $titre_selectionne = $_POST['titre'];
?>
<p>Vous avez sélectionné l'auteur<?php echo($titre_selectionne); ?> de l'auteur <?php echo($auteurs_selectionne); ?></p>
<?php
}
?>
<h3>Chercher un auteur</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $sql1 = "SELECT `auteurs`".
    " FROM `nds_bib_`".
    " ORDER BY `auteurs`";
    $rech_auteurs = mysql_query($sql1);
    //$code_auteurs = array();
    $auteurs = array();
    /* On active un compteur pour les régions */
    $nb_auteurs = 0;
    if($rech_auteurs != false)
    {
        while($ligne = mysql_fetch_assoc($rech_auteurs))
        {
            //array_push($code_auteurs, $ligne['auteurs']);
            array_push($auteurs, $ligne['auteurs']);

            /* On incrémente de compteur */
            $nb_auteurs++;
        }
    }
    ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un auteur</legend>
<select name="auteurs" id="auteurs" onchange="document.forms['chgdept'].submit();">
  <option value="-1">- - - Choisissez un auteurs - - -</option>
    <?php
    for($i = 0; $i < $nb_auteurs; $i++)
    {
?>
  <option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($idr) && $idr == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_auteurs);
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
    if(isset($idr) )
    {
        /* Cération de la requête pour avoir les départements de cette région */
        $sql2 = "SELECT  `titre`".
        " FROM `nds_bib_`".
        " WHERE `auteurs` = ". $idr ."".
        " ORDER BY `titre`;";
        if($connexion != false)
        {
            $rech_titre = mysql_query($sql2, $connexion);
			echo "recherche : $rech_titre";
            /* Un petit compteur pour les départements */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des départements */
            $code_titre = array();
           // $nom_titre = array();
            /* On va mettre les numéros et noms des départements dans les deux tableaux */
            while($ligne_titre = mysql_fetch_assoc($rech_titre))
            {
                array_push($code_titre, $ligne_titre['id_titre']);
               // array_push($nom_titre, $ligne_titre['titre']);
                $nd++;
            }
			    /* Maintenant on peut construire la liste déroulante */
            ?>
<select name="titre" id="titre">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
  <option value="<?php echo($code_titre[$d]); ?>"<?php echo((isset($titre_selectionne) && $titre_selectionne == $code_titre[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_titre);
    }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
J'obtiens les erreurs suivantes:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\ESSAIS\essais.php on line 96
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\wamp\www\ESSAIS\essais.php on line 117

Ce qui est logique vu que $rech_titre = mysql_query($sql2, $connexion); ne donne rien

Si tu peux continuer à m'aider, je pourrai faire un autre bout de chemin.

Je joins le fichier bibliotheque.sql ui contien la base
Bon je ne sais pourquoi mais c,est pas possible. Alors je vais copierle script
à suivre...
Merci vraiment du coup de main

Eléphant du PHP | 64 Messages

19 sept. 2010, 17:21

Voici la base
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Dim 19 Septembre 2010 à 15:16
-- Version du serveur: 5.1.36
-- Version de PHP: 5.3.0

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: `bibliotheque`
--

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

--
-- Structure de la table `nds_bib_`
--

CREATE TABLE IF NOT EXISTS `nds_bib_` (
  `id_numero` int(11) DEFAULT NULL,
  `titre` varchar(255) DEFAULT NULL,
  `auteurs` varchar(255) DEFAULT NULL,
  `cote` varchar(255) DEFAULT NULL,
  `infos_d_edition` varchar(255) DEFAULT NULL,
  `isbn` varchar(255) DEFAULT NULL,
  `code_à_barres` double DEFAULT NULL,
  `mots_clés` varchar(255) DEFAULT NULL,
  `nouv` varchar(255) DEFAULT NULL,
  `mc` double DEFAULT NULL,
  `mp` double DEFAULT NULL,
  `tc` double DEFAULT NULL,
  `tp` double DEFAULT NULL,
  `ac` double DEFAULT NULL,
  `ap` double DEFAULT NULL,
  `app` double DEFAULT NULL,
  `créé_le` varchar(255) DEFAULT NULL,
  `infos_acquis_` varchar(255) DEFAULT NULL,
  `hors_prets` varchar(255) DEFAULT NULL,
  `lect_` varchar(255) DEFAULT NULL,
  `typ_doc` varchar(255) DEFAULT NULL,
  `supp_mat` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Contenu de la table `nds_bib_`
--

INSERT INTO `nds_bib_` (`id_numero`, `titre`, `auteurs`, `cote`, `infos_d_edition`, `isbn`, `code_à_barres`, `mots_clés`, `nouv`, `mc`, `mp`, `tc`, `tp`, `ac`, `ap`, `app`, `créé_le`, `infos_acquis_`, `hors_prets`, `lect_`, `typ_doc`, `supp_mat`) VALUES
(31, 'Faut-it le dire a la Presidente', 'Jeffery Archer', 'A671F', 'u. - u. -  :  | Roman. - (u)', NULL, 50001447, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(32, 'Les Allées du pouvoir', 'Jeffery Archer', 'A671A', 'u. - u. -  :  | Roman. - (u)', NULL, 50001446, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(33, 'L''incroyable potentialité de l''homme', 'Herbert W. Armstrong', 'A739I', 'u. - u. -  :  | Evangile. - (u)', NULL, 50001865, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(35, 'Le Cardinal prisonnier', 'Christine Arnothy', 'A764C', 'u. - u. -  :  | Roman. - (u)', NULL, 50001861, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '10,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(36, 'Voyage de Noces', 'Christine Arnothy', 'A764V', 'u. - u. -  :  | Roman. - (u)', NULL, 50001862, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '10,95', ' ', 'tous', 'indéterminé', 'indéterminé'),
(37, 'Le tueur aveugle', 'Margaret Atwood', 'A887T', 'u. - u. -  :  | Roman. - (u)', NULL, 50001863, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '20,50 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(38, 'Le bonheur volé', 'Cécile Aubrey', NULL, 'u. - u. -  :  | Evangile. - (u)', NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(39, 'Sébastien et la Mary-Morgane', 'Cécile Aubrey', NULL, 'u. - u. -  :  | Roman. - (u)', NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(40, 'L''Ombre de l''épervier ', 'Noël Audet', 'A899O', 'u. - u. -  :  | Roman. - (u)', NULL, 50000054, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '15,00 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(41, 'Les Chasseurs de Mammouths', 'Jean M. Auel', 'A917C', 'u. - u. -  :  | Roman. - (u)', NULL, 50001659, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '13,95', ' ', 'tous', 'indéterminé', 'indéterminé'),
(42, 'Les refuges de Pierre   # 5', 'Jean M. Auel', 'A917R', 'u. - u. -  :  | Roman. - (u)', NULL, 50001788, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '12,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(43, 'L''Enfant Meurtri', 'Jessica Auerbach', 'A917E', 'u. - u. -  :  | Roman. - (u)', NULL, 50000060, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(44, 'Jeanne', 'Nicole Avril', 'A963J', 'u. - u. -  :  | Roman. - (u)', NULL, 50001131, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '9,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(45, 'La disgrace ', 'Nicole Avril', 'A963D', 'u. - u. -  :  | Roman. - (u)', NULL, 50001660, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '9,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(46, '200 trucs pour vaincre le vague à l''âme', 'Jean Bach', NULL, 'u. - u. - u. - (u)', NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(47, 'Votre enfant de 3 à 6 ans', 'Anne Bacus', NULL, 'u. - u. -  :  | Santé. - (u)', NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '32,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(48, 'L''esclave', 'Micheline Bail', 'B153E', 'u. - u. -  :  | Roman. - (u)', NULL, 50001670, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(49, 'Tous les jours de ma Vie', 'Hilary Bailey', 'B154T', 'u. - u. -  :  | Roman. - (u)', NULL, 50001667, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(50, 'Un homme sous influence', 'David Baldacci', 'B175H', 'u. - u. -  :  | Roman. - (u)', NULL, 50001662, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '15,95 $', ' ', 'tous', 'indéterminé', 'indéterminé'),
(52, 'Médicaments et Personnes Agées', 'Guimond Mallet Barbeau', NULL, 'u. - u. -  :  | Médical. - (u)', NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(53, 'Jusqu''aux yeux', 'Zoë Barnes', 'B261J', 'u. - u. -  :  | Roman. - (u)', NULL, 50001467, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(54, 'L''espace d''un été', 'Jill Barnett', 'B259E', 'u. - u. -  :  | Roman. - (u)', NULL, 50001908, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(55, 'Déshonorée', 'Maria Barrett', 'B274D', 'u. - u. -  :  | Roman. - (u)', NULL, 50001661, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(56, 'La madame du Mayflower', 'Sydney Biddle Barrows', 'B584M', 'u. - u. -  :  | Roman. - (u)', NULL, 50001663, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(57, 'Le passé est un autre pays', 'Lois Battle', 'B335P', 'u. - u. -  :  | Roman. - (u)', NULL, 50001676, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(58, 'Chocolats pour les rêves d''une femme', 'Kay Allenbaugh', 'A425C', 'u. - u. -  :  | Petite Histoire. - (u)', NULL, 50001654, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(59, 'Sarah', 'John Baxter', 'B355S', 'u. - u. -  :  | Roman. - (u)', NULL, 50000015, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(60, 'Le rêve des chevaux brisés', 'William Bayer', 'B357R', 'u. - u. -  :  | Roman. - (u)', NULL, 50001652, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(61, 'Voir Jérusalem et Mourir', 'William Bayer', 'B357V', 'u. - u. -  :  | Roman. - (u)', NULL, 50001653, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé'),
(62, 'L''Église Verte', 'Hervé Bazin', 'B363E', 'u. - u. -  :  | Roman. - (u)', NULL, 50001673, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, '28/03/2010', '2010', ' ', 'tous', 'indéterminé', 'indéterminé');

Merci

Mammouth du PHP | 19672 Messages

19 sept. 2010, 18:21

Ta seconde requête ne récupère que le titre, pas d'identifiant ni autres données sur les titres qui doivent alimenter la seconde liste. Il est donc normal de ne pas obtenir le résultat espéré.

N'essaye pas de «bricoler le code» en espérant tomber juste : raisonne avec logique.

Ta première liste ne contient que les auteurs, la seconde, en fonction du choix de l'auteur la liste des titres correspondant. Bien, ça, c'est ton point de départ. On sait ensuite que tu veux afficher ça sous la forme de liste déroulantes (<select><option>) : tel que ton code est écrit, il doit présenter une première liste avec certains auteurs nommés plusieurs fois, ce qui est un peu sans intérêt : une fois devrait suffire.
Donc, tu peux modifier la première requête comme ceci :
SELECT DISTINCT(`auteurs`)
FROM `nds_bib_`
ORDER BY `auteurs`
Ensuite, il faut pouvoir établir la liste des ouvrages pour un auteur donné. Tu sembles avoir compris l'usage de la variable $idr que j'avais nommé comme ceci de façon courte plutôt que $IDentifiantRegion. Gardons cette variable. Tu as ensuite besoin de savoir si le bouton a été cliqué et un choix d'auteur posté, tu as donc récupéré cet auteur dans la variable $idr : la seconde requête pose un problème à cause de la tentative d'utilisation du résultat qui suit et elle contient une erreur : $idr contient une chaine de caractères (le nom de l'auteur sélectionné. Ensuite il manque des champs que tu sembles vouloir afficher ou utiliser dans la liste :mais la requête ne demande que la colonne «titre» mais tu tentes d'utiliser « id_titre » qui n'existe pas : ça génère donc une erreur.

Revois ton code, et remplace donc le café par une bonne sieste, ça fait autant sinon plus de bien de temps en temps ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

19 sept. 2010, 18:39

Revois ton code, et remplace donc le café par une bonne sieste, ça fait autant sinon plus de bien de temps en temps =D>
Idée géniale, d'autant plus qu'ici c'est justement l'heure de la sieste et je suis un fan des siestes.

Pour le reste je vais travaillé la dessus et te revenir avec le résultat.

Merci beaucoup.

Alain

ps j'aime bien ta façon de m'aider en m'aidant à pêcher au lieu de me donner le poisson!

Mammouth du PHP | 19672 Messages

19 sept. 2010, 19:25

ps j'aime bien ta façon de m'aider en m'aidant à pêcher au lieu de me donner le poisson!
Tu découvriras avec le temps que c'est tout aussi formateur pour le débutant que pour celui qui montre le chemin : pour ma part par exemple, la difficulté est de découvrir quel raisonnement, quel cheminement tu as suivi pour aboutir à un problème ayant toutes les apparences d'une question insoluble, et accessoirement de détecter l'élément que tu n'as pas remarqué malgré son importance.

Quant au décalage horaire, je n'avais pas vu que tu étais au Québec que je connais fort bien pour y avoir passé douze ans. Mais lorsque tu seras en fin de veillée, ça fera déjà quelques heures qu'ici il fera nuit et que je dormirai ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

19 sept. 2010, 21:36

J'ai modifier le scipt, selon tes instructions, et effectivement la liste des auteurs s'affiche beaucoup mieux. J'ai aussi modifier id_titre en id_numero qui lui existe dans la base. Par contre $idr contient une chaine de caractères (le nom de l'auteur sélectionné, reste un mystère. Cela (ou d'autres chose) déclenche encore la même erreur, ce qui fait que la seconde requête reste toujours vide.

Voici le code modifier
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "bibliotheque";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['auteurs'])?$_POST['auteurs']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['titre']) && $_POST['titre'] != "")
{
    $auteurs_selectionnee = $_POST['auteurs'];
    $titre_selectionne = $_POST['titre'];
?>
<p>Vous avez sélectionné l'auteur<?php echo($titre_selectionne); ?> de l'auteur <?php echo($auteurs_selectionne); ?></p>
<?php
}
?>
<h3>Chercher un auteur</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $sql1 = "SELECT DISTINCT`auteurs`".
    " FROM `nds_bib_`".
    " ORDER BY `auteurs`";
    $rech_auteurs = mysql_query($sql1);
    //$code_auteurs = array();
    $auteurs = array();
    /* On active un compteur pour les régions */
    $nb_auteurs = 0;
    if($rech_auteurs != false)
    {
        while($ligne = mysql_fetch_assoc($rech_auteurs))
        {
            //array_push($code_auteurs, $ligne['auteurs']);
            array_push($auteurs, $ligne['auteurs']);

            /* On incrémente de compteur */
            $nb_auteurs++;
        }
    }
    ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un auteur</legend>
<select name="auteurs" id="auteurs" onchange="document.forms['chgdept'].submit();">
  <option value="-1">- - - Choisissez un auteurs - - -</option>
    <?php
    for($i = 0; $i < $nb_auteurs; $i++)
    {
?>
  <option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($idr) && $idr == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_auteurs);
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
    if(isset($idr) )
    {
        /* Cération de la requête pour avoir les départements de cette région */
        $sql2 = "SELECT `id_numero,  `titre`".
        " FROM `nds_bib_`".
        " WHERE `auteurs` = ". $idr ."".
        " ORDER BY `titre`;";
		$auteurs= "$idr ";
		echo " SQL =$sql2"; //test pour savoir le résultat
		
        if($connexion != false)
		{
            $rech_titre = mysql_query($sql2, $connexion);
			echo " rech : $rech_titre ";
            /* Un petit compteur pour les départements */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des départements */
            $code_titre = array();
           // $nom_titre = array();
            /* On va mettre les numéros et noms des départements dans les deux tableaux */
            while($ligne_titre = mysql_fetch_assoc($rech_titre))
            {
                array_push($code_titre, $ligne_titre['id_numero']);
               // array_push($nom_titre, $ligne_titre['titre']);
                $nd++;
            }
			    /* Maintenant on peut construire la liste déroulante */
            ?>
		<select name="titre" id="titre">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
		<option value="<?php echo($code_titre[$d]); ?>"<?php echo((isset($titre_selectionne) && $titre_selectionne == $code_titre[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_titre);
    }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
Il semble que ma sieste na pas suffit .
Ou as-tu demeuré au Québec?
Alain

Mammouth du PHP | 19672 Messages

19 sept. 2010, 22:48

Regarde bien la seconde requête :
$sql2 = "SELECT `id_numero,  `titre`".
        " FROM `nds_bib_`".
        " WHERE `auteurs` = ". $idr ."".
        " ORDER BY `titre`;";
Dans $idr, tu récupère la valeur de l'option sélectionnée de la première liste, donc, le nom de l'auteur. Si on prend un exemple à partir de la base de données que tu as montré, ça donne comme résultat :
SELECT `id_numero,  `titre`
FROM `nds_bib_`
WHERE `auteurs` = Jeffery Archer
ORDER BY `titre`
Essaye ça directement dans MySQL, tu vas avoir une erreur lors de l'exécution, je te laisse observer pour en trouver la raison, elle devrait te sauter aux yeux ;)

Pour le Québec, j'étais du coté de Lévis.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

20 sept. 2010, 00:49

Bon j'en pers mon québécois...

J'ai essayé ce que tu m'as dis et j'obtiens le même résultat. J'ai essayé de voir si c'était la façon de faire une recherche avec une chaîne de caractères au lieu d'un nombre mais sans succès. Je suis même tombé sur un vieux post php-debutant/variables-qui-buggent-debu ... en%20peril et cela ne m'a pas aider. La seule chose que j'ai de plus c'est le message d'erreur suivant Query was empty.

Alain

Mammouth du PHP | 19672 Messages

20 sept. 2010, 05:47

Et pourtant : la coloration syntaxique devrait au moins t'alerter. On la refait en corrigeant une première erreur, je te laisse corriger la seconde :
Avant :
SELECT `id_numero,  `titre`
FROM `nds_bib_`
WHERE `auteurs` = Jeffery Archer
ORDER BY `titre`
Après :
SELECT `id_numero`,  `titre`
FROM `nds_bib_`
WHERE `auteurs` = Jeffery Archer
ORDER BY `titre`
Tout de suite on note une différence et il reste pourtant une erreur... envoye! t'es capable :P
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

20 sept. 2010, 17:45

Bon,

Encore moi! je vais commencer à croire que je devrais déménager à Paris. Je comprendrais peut=être un peu plus...

Voici les changements

Base de données

Structure de la table `nds_bib_`
--

CREATE TABLE IF NOT EXISTS `nds_bib_` (
  `id_numero` double NOT NULL DEFAULT '0',
  `titre` varchar(255) DEFAULT NULL,
  `auteurs` varchar(255) DEFAULT NULL,
  `cote` varchar(255) DEFAULT NULL,
  `infos_d_edition` varchar(255) DEFAULT NULL,
  `isbn` varchar(255) DEFAULT NULL,
  `code_à_barres` double DEFAULT NULL,
  `mots_clés` varchar(255) DEFAULT NULL,
  `nouv` varchar(255) DEFAULT NULL,
  `mc` double DEFAULT NULL,
  `mp` double DEFAULT NULL,
  `tc` double DEFAULT NULL,
  `tp` double DEFAULT NULL,
  `ac` double DEFAULT NULL,
  `ap` double DEFAULT NULL,
  `app` double DEFAULT NULL,
  `créé_le` varchar(255) DEFAULT NULL,
  `infos_acquis_` varchar(255) DEFAULT NULL,
  `hors_prets` varchar(255) DEFAULT NULL,
  `lect_` varchar(255) DEFAULT NULL,
  `typ_doc` varchar(255) DEFAULT NULL,
  `supp_mat` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_numero`),
  KEY `auteurs` (`auteurs`),
  KEY `titre` (`titre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

J'ai donc créer des Key

Script
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "bibliotheque";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['auteurs'])?$_POST['auteurs']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['titre']) && $_POST['titre'] != "")
{
    $auteurs_selectionnee = $_POST['auteurs'];
    $titre_selectionne = $_POST['titre'];
?>
<p>Vous avez sélectionné l'auteur<?php echo($titre_selectionne); ?> de l'auteur <?php echo($auteurs_selectionne); ?></p>
<?php
}
?>
<h3>Chercher un auteur</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $sql1 = "SELECT DISTINCT`auteurs`".
    " FROM `nds_bib_`".
    " ORDER BY `auteurs`";
    $rech_auteurs = mysql_query($sql1);
    //$code_auteurs = array();
    $auteurs = array();
    /* On active un compteur pour les régions */
    $nb_auteurs = 0;
    if($rech_auteurs != false)
    {
        while($ligne = mysql_fetch_assoc($rech_auteurs))
        {
            //array_push($code_auteurs, $ligne['auteurs']);
            array_push($auteurs, $ligne['auteurs']);

            /* On incrémente de compteur */
            $nb_auteurs++;
        }
    }
    ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un auteur</legend>
<select name="auteurs" id="auteurs" onchange="document.forms['chgdept'].submit();">
  <option value="-1">- - - Choisissez un auteurs - - -</option>
    <?php
    for($i = 0; $i < $nb_auteurs; $i++)
    {
?>
  <option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($idr) && $idr == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_auteurs);
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
    if(isset($idr) )
    {
	$mot='Jeffery Archer';
        /* Cération de la requête pour avoir les départements de cette région */
        $sql2 = "SELECT '`id_numero`' ,`titre`,'auteurs'".
        " FROM `nds_bib_`".
        " WHERE `auteurs` ='Jeffery Archer'".
        " ORDER BY `titre`;";
		$auteurs= "$idr ";
		echo " SQL =$sql2"; //test pour savoir le résultat
		
        if($connexion != false)
		{
            $rech_titre = mysql_query($sql2, $connexion);
			//$rech_titre=mysql_query($query)or die (mysql_error());
			echo " rech : $rech_titre ";
            /* Un petit compteur pour les départements */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des départements */
            $code_titre = array();
           // $nom_titre = array();
            /* On va mettre les numéros et noms des départements dans les deux tableaux */
            while($ligne_titre = mysql_fetch_assoc($rech_titre))
            {
                array_push($code_titre, $ligne_auteurs[`auteurs`]);
               // array_push($nom_titre, $ligne_titre['titre']);
                $nd++;
            }
			    /* Maintenant on peut construire la liste déroulante */
            ?>
		<select name="titre" id="titre">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
		<option value="<?php echo($code_titre[$d]); ?>"<?php echo((isset($titre_selectionne) && $titre_selectionne == $code_titre[$d])?" selected=\"selected\"":null); ?>><?php echo($code_titre[$d]." (". $code_titre[$d] .")"); ?></option>
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_titre);
    }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
J'ai tenté de changer la requête
while($ligne_titre = mysql_fetch_assoc($rech_titre))
{
array_push($code_titre, $ligne_auteurs[`auteurs`]);
en changeant
auteur pour titre ou id_numero, mais rien à faire je reçoit ce message
SQL =SELECT '`id_numero`' ,`titre`,'auteurs' FROM `nds_bib_` WHERE `auteurs` ='Jeffery Archer' ORDER BY `titre`; rech : Resource id #4
Notice: Undefined variable: ligne_auteurs in C:\wamp\www\ESSAIS\essais.php on line 103

Notice: Undefined variable: ligne_auteurs in C:\wamp\www\ESSAIS\essais.php on line 103

Notice: Undefined variable: ligne_auteurs in C:\wamp\www\ESSAIS\essais.php on line 103
Comme tu vois il donne plusieurs réponses même si il n'y a que 2 titre avec cet auteur (j'ai remis la base complète que j'avais coupé pour te l'envoyé)

Alors, si vous ne voulez pas d'un québécois de plus à Paris (ou même si vous en voulez un) j'ai besoin de d'autre indice et de savoir si la question d'index est importante.

Merci encore pour tout,

Alain

Mammouth du PHP | 19672 Messages

20 sept. 2010, 18:47

Ça, c'est une faute d'inattention :
«
while($ligne_titre = mysql_fetch_assoc($rech_titre))
{
array_push($code_titre, $ligne_auteurs[`auteurs`]);
// array_push($nom_titre, $ligne_titre['titre']);
$nd++;
}
»
Tu n'as défini la variable $ligne_auteurs nulle part, donc tu obtiens une erreur.

J'avoue que j'ai un peu de mal à comprendre ce que tu cherches à faire, j'ai la nette impression que tu te fais une montagne de ce truc qui est pourtant relativement simple. Bon, ok, c'est pas le Mont Sainte-Anne, mais tout de même. Je comprends d'autant moins que de toutes façons tu ne t'en sers pas non plus après... alors quelle est l'idée de cette variable ?

Je te suggère de procéder avec logique en tout temps. Si tu veux ajouter des données dans une variable, ça veut dire d'abord qu'elle a été créée et contient éventuellement déjà des données. Tu veux créer deux listes. Je crois que pour la première, le problème est résolu. Pour créer la seconde, il faut avoir fait un choix dans la première : ce choix est une chaine de caractères, le nom de l'auteur. Maintenant, demande-toi de quoi tu as besoin pour construire la seconde liste : quelles colonnes de la table sont nécessaires ? id_numero, titre et auteurs. Commence par écrire convenablement ta requête : tu utilises un peu à tort et à travers des ` et des ' complètement inutiles : je reprends donc ta requête et on va nettoyer un peu :
        $sql2 = "SELECT id_numero , titre, auteurs ".
                "FROM nds_bib_ ".
                "WHERE auteurs = '". $idr ."' ".
                "ORDER BY titre";
On remet la variable $idr qui contient le nom dynamique : ce que je souhaitais te faire voir le fois précédente,c'est qu'il manquait les apostrophes entourant la chaine de caractères : Là, les apostrophes seront à leur place. J'ai viré tout le reste qui pour le moment ne sert à rien. Ne te complique pas la vie quand ce n'est pas indispensable : un bon programmeur est fainéant et tente autant que possible d'écrire moins de code pour le même résultat : attention à ne pas tomber pour autant dans l'excès inverse, en programmation, fainéant ne signifie pas laxiste.

Bien, à partir du résultat de cette requête, tu peux (ou non) construire la seconde liste s'il y a des résultats : mais là, on sait que comme c'est la même table, il y aura au moins un titre puisqu'on a trouvé l'auteur lors de la première requête. Ok, tu vas donc créer une boucle pour construire tes balises <option> : tu vas mettre quoi dedans ? Je te laisse continuer le raisonnement, je crois que tu as tous les éléments en main.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

21 sept. 2010, 02:05

J'avoue que j'ai un peu de mal à comprendre ce que tu cherches à faire
Je crois que c'est une partie du problème, donc de la solution. Ce que je veux avec les résultats, c,est que la personne puisse réservé le livre choisi en en faisant parvenir un formulaire avec les données.

Bon le progrès
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "bibliotheque";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['auteurs'])?$_POST['auteurs']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['titre']) && $_POST['titre'] != "")
{
    $numero_selectionnee = $_POST['auteurs'];
    $titre_selectionne = $_POST['titre'];
?>
<p>Vous avez sélectionné l'auteur<?php echo($titre_selectionne); ?> et le titre <?php echo($numero_selectionne); ?></p>
<?php
}
?>
<h3>Chercher un auteur</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $sql1 = "SELECT DISTINCT`auteurs`".
    " FROM `nds_bib_`".
    " ORDER BY `auteurs`";
    $rech_auteurs = mysql_query($sql1);
    //$code_auteurs = array();
    $auteurs = array();
    /* On active un compteur pour les régions */
    $nb_auteurs = 0;
    if($rech_auteurs != false)
    {
        while($ligne = mysql_fetch_assoc($rech_auteurs))
        {
            //array_push($code_auteurs, $ligne['auteurs']);
            array_push($auteurs, $ligne['auteurs']);

            /* On incrémente de compteur */
            $nb_auteurs++;
        }
    }
    ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un auteur</legend>
<select name="auteurs" id="auteurs" onchange="document.forms['chgdept'].submit();">
  <option value="-1">- - - Choisissez un auteurs - - -</option>
    <?php
    for($i = 0; $i < $nb_auteurs; $i++)
    {
?>
  <option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($idr) && $idr == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_auteurs);
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
    if(isset($idr) )
    {
		$sql2 = "SELECT auteurs , titre ".
                "FROM nds_bib_ ".
                "WHERE auteurs = '". $idr ."' ".
                "ORDER BY titre";
       if($connexion != false)
		{
            $rech_titre = mysql_query($sql2, $connexion);
            /* Un petit compteur pour les départements */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des départements */
            $code_numero = array();
            $nom_titre = array();
            /* On va mettre les numéros et noms des départements dans les deux tableaux */
            while($ligne_titre = mysql_fetch_assoc($rech_titre))
            {
               array_push($code_numero, $ligne_titre['auteurs']);
               array_push($nom_titre, $ligne_titre['titre']);
                $nd++;
            }
			    /* Maintenant on peut construire la liste déroulante */
            ?>
		<select name="titre" id="titre">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
		<option value="<?php echo($code_numero[$d]); ?>"<?php echo((isset($titre_selectionne) && $numero_selectionne == $code_numero[$d])?" selected=\"selected\"":null); ?>><?php echo($code_numero[$d]."===>". $nom_titre[$d] .""); ?></option>
                <?php
            }
?>
</selectcod<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_titre);
    }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
Le résultats est bon mais lorsque j'essaie d'envoyer le tout j'obtiens ce message
Vous avez sélectionné l'auteurAgatha Christie et le titre
Notice: Undefined variable: numero_selectionne in C:\wamp\www\ESSAIS\essais.php on line 30
Le pire dans tout ça, c'est que ce sript vas être encapsuler dans un site fait avec Joomla que tu dois connaître

Alaon

ViPHP
ViPHP | 5462 Messages

21 sept. 2010, 02:46

verfie t'es donnée en entrée, c'est juste qu'elle existe pas, ($_POST['auteurs'])
suffis de faire un
print_r($_POST);
au debut de ton code pour voir ce qui rentre

et ca
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
oublie c'est bidon comme argument

pourquoi $nb_auteurs ?
suffis juste de compter les lignes de $auteurs, d'ailleurs array_push, ca sert a rien si c'est pour mettre 1 seule valeur, utilise $auteurs[] a la place
en fait pourquoi ne pas faire ton while directement pour creer t'es "option", tu fais une boucle pour rien (2 fois)

verfie ton encodage aussi les é c'est pas jolie :wink:

Mammouth du PHP | 19672 Messages

21 sept. 2010, 06:37

Attend un peu stealth35, tu vas trop vite pour lui en mettant trop de problèmes à la fois, tu vas le noyer.

Damours311, encore une fois : tu tentes de bricoler du code dans lequel tu as du mal à te repérer. L'idée du tuto, ce n'était pas de faire du copier/coller mais de comprendre comment ça marche. j'admets qu'il est un peu indigeste à cause de sa taille à avaler d'un coup. Cependant, si tu suis la logique et que tu décomposes ce qui doit est exécuté, tu devrais t'y retrouver.

Sois attentif aussi : pour l'auteur, tu initialises d'abord la variable $idr : ça, c'est correct. regarde maintenant la ligne 27 de ton dernier code : pourquoi créer une nouvelle variable $numero_selectionne avec la même valeur ? Je dirais que parce que « idr » c'est abstrait alors que « numero_selectionne » a un sens plus facile à comprendre : c'Est pour ça qu'il ne faut pas copier/coller un tuto pour tenter de l'adapter à ses propres données qui n'ont rien à voir avec celle utilisées dans le tuto.
Je te suggère de renommer tes variables : définis $auteur_selectionne et $titre_selectionne et remplace $idr et les autres. Travaille avec des variables au nom parlant et évident, ce sera beaucoup plus facile que de faire dans l'abstrait en tentant au fil du code de te souvenir à quoi correspond quoi. Sinon tu vas t'enfarger dans les fleurs du tapis ;) La définition de ces deux variables doit se faire de la même manière que la définition de $idr au début.

Je te fais une suggestion : oublie le code un moment et tente de décrire le déroulement de la manière suivante :

Code : Tout sélectionner

Si auteur défini Alors Si titre défini Alors ... on fait quoi ...? Sinon .... on fait quoi ...? Fin Si Sinon .... on fait quoi ...? Fin si
Mets des mots au lieu de code et reviens avec ça : on appelle de l'algorithme : si tu définis correctement ton algo, ce sera prêt à traduire en code très rapidement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

21 sept. 2010, 19:18

Si auteur défini Alors
Si titre défini Alors
... on fait quoi ...?
Sinon
.... on fait quoi ...?
Fin Si
Sinon
.... on fait quoi ...?
Fin si
Bon je commence par ici:
Si auteurs défini alors
    Si titre défini alors
        on ouvre un nouveau formulaire
   Sinon
        erreur
Sinon
  erreur
Je vais commencer à corriger mon script.

À suivre

Alain