IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème requête complexe - jointures ?! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut problème requête complexe - jointures ?!
    Hello tous.

    Pfff, je n'y arrive pas.
    C'est la n-ième requête que j'essaie de faire en essayant de contourner mon problème, mais du coup y-a pas de moyen ...alors je viens vous demander conseil.

    J'ai 3 tables :
    1ere table contenant id_article, nom_article, et autres détails de l'article.
    2eme table contenant id_liste, nom_liste, et autres détails de la liste
    3eme table contenant id_article, id_liste

    Je désire ressortir le nom de l'id et nom de l'article, et pour chacune des lignes en sortie, l'ensemble des id et nom de liste avec LA liste correspondante dans la 3eme table en selected dans mes boutons radios.
    a savoir que tous les nom de liste s'affichent mais que 1 seul est checked !

    ma requète :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT a.ID AS idArticle, a.post_title AS articleTitle, ral.id_list AS idArtList, rt.id AS idList, rt.nom_list AS nomList
    FROM p_articles a
    JOIN p_rate_article_list ral ON ral.id_article = a.ID
    JOIN p_rating_list rt ON ral.id_list = rt.id
    WHERE a.post_type = 'post'
    AND a.post_status = 'publied'
    LIMIT 0 , 30

    la 1ere version de la requête, qui me ressort id et nom article, ainsi que id et nom de la liste correspondante est ok, mais je n'ia pas toutes les autres listes possibles . car je suis dans un édit d'article.

    Alors peut-être que vous allez me dire, mais pourquoi tu ne met pas dans ta table article l'id de la liste qui est déjà sélectionné ? Et bien parce que je greffe ma requête sur un script qui existe déjà, et dans cette admin, je ne peux pas ajouter mes champs perso.
    Donc j'ai créé cette 2eme table. qui sépare tout mon script du script host!
    histoire de ne pas mettre le bazar.

    Alors y a t il moyen de faire que cela fonctionne, car j'ai cette même requête à décliner pour d'autres niveaux... ou bien c'est mission impossible ?

    Merci pour vos éclaircissements et/ou solutions.

    Bonne fin de soirée
    P

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut suite
    la requète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.ID AS idArticle, a.post_title AS articleTitle, rt.nom_list AS nomList, rt.id AS idList
    FROM p_rate_article_list ral
    LEFT OUTER JOIN p_posts a ON ral.id_article = a.ID
    LEFT OUTER JOIN p_rating_list rt ON rt.id = ral.id_list
    WHERE a.post_type = 'post'
    AND a.post_status = 'publish'
    LIMIT 0 , 30
    ne me retourne rien, mais si je retire les clauses WHERE
    j'ai un résultat qui n'a rien à voir avec ce que je veux.
    une autre requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.ID as idArticle, a.post_title as articleTitle, rt.nom_list as nomList, rt.id as idList 
    FROM p_rating_list rt 
    LEFT OUTER JOIN p_rate_article_list ral 
    ON rt.id = ral.id_list 
    LEFT OUTER JOIN p_posts a 
    ON ral.id_article = a.ID 
    WHERE a.post_type='post' AND a.post_status = 'publish'
    idem, avec les clauses where sauf que j'ai 2 lignes de resultats en + avec des null ....
    décidément, je ne parviens meme pas à récupérer ce que je disais dans mon 1er post !

    je continue donc,

    si quelqu'un a une idée !!
    merci

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Ou alors,

    je viens de tester cela sans succès : merci de me dire si c'est finalement faisable ou pas.

    je fais un 1er while, donc une 1ere requète qui me ramène id et nom de l'article
    jusque là c'est easy.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ID, post_title FROM p_posts WHERE post_type='post' AND post_status = 'publish'
    puis une autre qui me ressort toutes les listes (id + nom)
    et je fais un
    if (table(idListeToArticle)id_Liste = table(liste)idListe) alors je check le bouton radio, if not alors radio button pas checké

    mais cela ne me dit donne pas la correspondance, il manque un truc...

    ARfffff pffff ...
    merci pour vos idées !!!
    j'galère
    P

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Le problème est que tu mélanges la récupération des données relatives aux articles et celles relatives aux listes pour alimenter tes boutons radios.

    je désire ressortir le nom de l'id et nom de l'article, et pour chacune des lignes en sortie, l'ensemble des id et nom de liste avec LA liste correspondante dans la 3eme table en selected dans mes boutons radios.
    a savoir que tous les nom de liste s'affichent mais que 1 seul est checked!
    Si j'ai bien compris, tu as une interface avec des boutons radio correspondant aux listes et tu cherches à afficher un article et à affciher "selected" le bouton radio associé aux listes.

    Il te faut deux requêtes pour faire ça :
    - Une pour avoir toutes les listes afin d'afficher le libellé de tous les boutons radios ;
    - Une pour récupérer l'article et la valeur de la liste associée à l'article.

    Ensuite c'est ton programme qui compose la page qui, regardant la valeur de l'id_liste associée à l'article, va passer tel bouton en "selected".

    C'est assez classique comme démarche.

    j'ai 3 tables .
    1ere table contenant id_article, nom_article, et autres détails de l'article.
    2eme table contenant id_liste, nom_liste, et autres détails de la liste
    3eme table contenant id_article, id_liste
    Quelle est la clé primaire de la troisième table ?
    Vu que, apparemment, un article ne peut être associé qu'à une seule liste, la clé primaire devrait être id_article.

    Donc première requête sur les listes pour alimenter les boutons radios :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_liste, nom_liste
    FROM liste
    ORDER BY nom_liste
    Seconde requête sur les article avec la valeur de id_liste associée, si elle existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_article, nom_article
    FROM article a
    LEFT OUTER JOIN article_liste al ON al.id_article = a.id_article
    ORDER BY nom_article
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Bonjour Philippe;

    merci pour tes conseils

    j'ai donc repris le dev de cette page.
    j'ai bien les tables comme tu as précisé (primary key)

    j'ai réécrit mes 2 requètes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, nom_list FROM p_rating_list WHERE statut = 1 ORDER BY ordre ASC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT a.ID as idArticle, a.post_title as articleTitle FROM p_posts a LEFT OUTER JOIN p_rate_article_list ral ON ral.id_list WHERE post_type='post' AND post_status = 'publish' ORDER BY a.ID
    qui me renvoie bien noms et id.
    mais je ne vois pas comment je peux extraire la valeur pour le selected!
    la structure de page :
    - liste des articles avec id - liste des listes avec radiobtn
    mais ce sont 2 foreach différents !
    j'ai tenté l'un dans l'autre, mais voilà les doublons !

    une idée ?
    je te remercie.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Je crois le problème est parce que j'ai la boucle des listes dans la boucle des articles
    et non l'inverse comme tu as pu, il me semble, me le suggérer.

    c'est parce que je ne peux pas faire dans l'autre sens, sinon ça n'a plus de sens ![edit] image ok[/edit]

    bon là, je cherche pour éviter ces triplons, malgré les group by, ca ne se corrige pour le moment pas.

    merci de ton aide.
    P

    [edit]
    et quand bien même j'essaie de pouvoir mettre en boucle 1 les listes, je ne peux réafficher correctement en sortie !
    et ma ligne dans la 2nde boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $checked = ($idListeDeList == $idListedeArticle) ? 'checked' : '';
    ne donne rien...
    fatche... cela ne me parrait pas simple !
    [/edit]

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Bon, j'avance
    j'ai réussi à supprimer les doublons,
    à avoir l'idArticle dans la liste des listes (zic)
    mais pas moyen de pouvoir récupérer l'id de la liste selectionné pour l'article.

    c'est dans la 2eme boucle !c bizarre ! bon, pas tant que ça, mais pour l'instant ça ne fonctionne pas ...

    A suivre..

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Telle qu'est ton image, il faut effectivement imbriquer les foreach.

    Classiquement, tu récupères le résultat des deux requêtes dans deux tableaux.

    Ensuite, tu parcours les deux tableaux et tu compare la valeur de l'id_liste de l'un avec la valeur de l'id_liste de l'autre pour décider de mettre selected au bouton.

    Pas le temps de développer davantage pour le moment mais d'autres intervenants pourront t'aider.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Merci àtoi,

    comme je le disais, les résultats sont en partie résolu
    voir img là :



    donc mon problème qui reste est : je n'ai pas l'id_list selectionnée pour le id_article.

    j'ai tenté un affichage alternatif, mais je n'ai que les 2 : résultat du 1er article.

    merci pour votre aide

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Donc, comme je disais, c'est un problème assez classique de foreach dans un foreach pusique à chaque article tu veux afficher la liste des listes dans des boutons radios.

    Je te donne vite fait le principe, à toi de l'adapter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <table>
    	<th>
    		<td>Nom de l'article</td>
    		<td>Nom des listes</td>
    	</th>
    <?php
    /* Ici je suppose que tu as :
    - un tableau des articles avec pour indice l'id_article et pour valeur un sous-tableau des colonnes de l'article (titre + id_liste associée) ;
    - un tableau des listes avec pour indice l'id_liste et pour valeur le nom de la liste.
    */
    $num_ligne = 1; // Initialisation du numéro de ligne du tableau d'articles
     
    foreach($tab_articles as $id_art => $article)
    {
    ?>
    	<tr>
    		<td>
    			<?php echo $i; ?>
    		</td>
    		<td>
    			<a href="le_lien_vers_l'article">
    				<?php echo $article['titre']; ?>
    			</a>
    		</td>
    		<td>
    <?php
    	foreach($tab_listes as $id_liste => $nom)
    	{
    ?>
    			<input type="radio" name="radio_liste_<?php echo $id_liste; ?>" value="<?php echo $nom; ?>" 
    <?php
    		if($id_liste = $article['id_liste'])
    		{
    ?>
    				selected="selected" 
    <?php
    		}
    ?>			
    			/>&nbsp;
    <?php
    	}
    ?>
    		</td>
    	</tr>
    <?php
    	$num_ligne ++;
    }
    ?>
    </table>
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut Test conditionnel IF
    Bonjour,
    ça fait 3 jours que je tourne en rond sur un script anodin qui refuse de marcher. J'ai déjà exploré toutes les solutions et expliqué aux amis en vain.

    S'il vous plait, aidez moi à régler ce problème.

    Voici le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    <?php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=latin1" />
     
    <title>SUPPRIMER MOUVEMENT STOCK</title>
    <?php 
    	include '../function/configConnexion.php';
    	include '../function/function.php';
    	@session_start();
    ?>
    <link href="../style/global.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    .Style6 {font-family: Arial, Helvetica, sans-serif}
    .Style9 {
    	font-size: 18px;
    	font-family: Arial, Helvetica, sans-serif;
    }
     
    .Style10 {font-size: 18px}
    .Style11 {
    	font-size: 20px;
    	font-weight: bold;
    	color: #CCCCCC;
    }
    .Style12 {font-weight: bold}
    .Style13 {color: #FFFFFF}
    </style>
     
    <script language="javascript" src="function/function_js.js"></script>
    <script language="javascript">
    function sendForm(){
    	with(document.form){		
    		if (code.value!='init'){
    		submit();
    		}	
    	}
    }
    function setValue(){
    	with(document.form){			
    		date.value = "";
    		type.value = "";
    		code.value="init";
     
    	}
    }
     
    function showConfirm(){
    	with(document.form){			
    		if (code.value=='init')
    		{
    			alert("Vous devez choisir l'enregistrement à supprimer");
    			return;
    		}
     
    		rep = confirm("Voulez-vous vraiment supprimer l'enregistrement : "+code.value);	
    		if (rep)
    		{
    			document.getElementById("form").action = "mouvement_supFormtest.php?del=1";
    			submit();
    			window.opener.location.reload();
    		}		
    	}
    }
    </script>
    </head>
    <?php 
    	if (isset($_GET['code']))
    	{
    		if ($_POST['code']!='init')
    		{
     
    			$codeMouvement = getColMouvement($_POST['code'],'idMouvement');	
    			$DateMouvement = getColMouvement($_POST['code'],'date');
    			$TypeMouvement= getColMouvement($_POST['code'],'typeMouvement');
     
    		}		
    	}
    	if (isset($_GET['del']))
     
    	{
     
       $date =formateDate($_POST['date']); if ($date==0) $date = date('Y/m/d');
     
     
       if ($_POST['type'] == 'Entree')
       {
    	    $reponse="oui";
       }
    }
     
     
    ?>
    <body onload="document.form.code.focus()"  >
    <form  id="form" name="form"  action="mouvement_supFormtest.php?code=<?php echo @$_POST['code']?>" method="post" >
     
      <table class="important" width="401" height="201" border="0" cellpadding="0" cellspacing="10" bgcolor="#FF00FF">
        <tr>
          <td height="25" colspan="3"><?php echo @$reponse?></td>
        </tr>
        <tr>
          <td width="151" height="25"><div align="right" class="Style9 Style10"> <strong>Code</strong> :</div></td>
          <td colspan="2"><select  style="font-size:16px"name="code" id="code" onchange="sendForm()">
            <option value="init">S&eacute;lectionner un mouvement</option>
            <?php 
            	$req = "SELECT * FROM mouvement";
            	$rs = mysql_query($req);$i=1;
            	while ($ligne = mysql_fetch_array($rs))
            	{        
            		extract($ligne);
            ?>
            <option value="<?php echo $idMouvement?>" <?php if (@$_POST['code']==$idMouvement) echo " selected"?>><?php echo $idMouvement." - ".$typeMouvement." - ".$date ?></option>
            <?php }?>
          </select></td>
        </tr>
        <tr>
          <td height="25"><div align="right" class="Style12"> <span class="Style6">Date</span>:</div></td>
          <td colspan="2"><input style="font-size:16px" name="date" type="text" id="date"  maxlength="60" size="15" value=" <?php echo @$DateMouvement?> " /></td>
        </tr>
        <tr>
          <td height="25"><div align="right" class="Style12"> <span class="Style6">Type:</span></div></td>
          <td colspan="2"><input style="font-size:16px" name="type" type="text" id="type"  maxlength="60" size="15" value=" <?php echo @$TypeMouvement?> " /></td>
        </tr>
        <tr>
          <td height="41" align="center"><input name="button" type="button" class="kpo" id="button" value="Supprimer" onclick="showConfirm()"/></td>
          <td width="93"><div align="center"><span class="Style6">
            <input name="button2" type="button" class="kpo" id="button2" value="Annuler"  onclick="setValue()"/>
          </span></div></td>
          <td width="137"><div align="center"><span class="Style6">
              <input name="button3" type="submit" class="kpo" id="button3" value="Fermer" onclick="window.close()" />
          </span></div></td>
        </tr>
     
      </table>
     
    </form>
    </body>
    </html>
     
    ?>

    Le problème c'est à la ligne 88, le test if ($_POST['type'] == 'Entree') ne marche pas, en conséquence le <?php echo @$reponse?>, de la ligne 101 n'affiche rien .

    Je vous signale que le programme s'exécute sans afficher aucun message d'erreur, sans aucun résultat.

    Le champ 'type ' du formulaire contient bien la valeur ' Entree' .

    S'il vous plait aidez moi, je suis bloqué depuis 3 jours et je ne peux plus avancer.

    Je reste à votre disposition pour d'autres informations complémentaires.

    Cordialement

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Pour vérifier tes variables, tu as la fonction var_dump. Si tu la lance à l'intérieur de balises <pre> et </pre>, c'est plus lisible.

    Fais donc un vardump($_POST) puisque apparemment c'est ça qui te pose problème.

    Et au passage, gare aux injections SQL !
    Ne jamais utiliser directement $_POST et $_GET directement dans les requêtes !
    Perso, j'utilise mysql_real_escape_string ou intval selon la nature de la variable à passer en paramètre dans la requête.
    Tu trouveras aisément des tutoriels sur le sujet, plus complets que la FAQ dont je t'ai mis le lien.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Merci de vouloir m'aider.

    Je crois que mon problème a évolué, en cherchant la solution, je viens de découvrir quelque chose: Il faut que je ressaisisse la valeur 'Entree' dans le champ 'Type' pour que ça marche.

    Je ne comprends vraiment pas . Ressaisir 'Entree' sur 'Entree' dans le formulaire pour que if ($_POST['type'] == 'Entree') marche.

    s'il vous plait , vous avez une solution?

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par pulls Voir le message
    Merci de vouloir m'aider.

    Je crois que mon problème a évolué, en cherchant la solution, je viens de découvrir quelque chose: Il faut que je ressaisisse la valeur 'Entree' dans le champ 'Type' pour que ça marche.

    Je ne comprends vraiment pas . Ressaisir 'Entree' sur 'Entree' dans le formulaire pour que if ($_POST['type'] == 'Entree') marche.

    s'il vous plait , vous avez une solution?
    hello pulls,
    dans ta page tu mélances le GET et le POST
    je note que dans l'action de ton form, tu as une valeur en POST['code']
    et que donc la 1ere fois que la page se charge, tu n'as pas la valeur code ,
    vérifie dans ta source de page.
    et donc ca ne peut pas fonctionner du 1Er coup, le post étant vide.
    le 2nd oui, le POST['code'] ne semble pas etre vide.

    bon code

  15. #15
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par PadaBen Voir le message
    hello pulls,
    dans ta page tu mélances le GET et le POST
    je note que dans l'action de ton form, tu as une valeur en POST['code']
    et que donc la 1ere fois que la page se charge, tu n'as pas la valeur code ,
    vérifie dans ta source de page.
    et donc ca ne peut pas fonctionner du 1Er coup, le post étant vide.
    le 2nd oui, le POST['code'] ne semble pas etre vide.

    bon code
    Merci de vouloir m'aider.

    justement, la première fois que la page se charge, mon formulaire est vide, .maintenant que je fais un choix dans la liste deroulante , je choisi une valeur ' code' et le type s'affiche. si le type a la valeur 'Entree'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ( if ($_POST['type'] == 'Entree')  
    $reponse="oui";
    voir ligne 88 à 90

    pourquoi quand je fais ECHO sur $reponse, je n'ai pas la valeur "oui", à moins que je ne ressaisisse manuellement Entree dans le champ type pour que ça marche: je saisi ' Entree' pour ecraser la 1ère valeur 'Entree' de ce champ.

    S'il vous aidez moi, c'est sérieux, je suis bloqué depuis 1 semaine.

    cordialement

  16. #16
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    je viens de trouver la solution à mon problème. il fallait taper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(trim ($_POST['type']) == 'Entree')
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST['type'] == 'Entree')
    Merci à tous ceux qui ont voulu bien m'aider.

    Dans le même ordre d'idée, comment est-ce que je peux enlever les espaces à droite et à gauche de
    $_POST[produit] et $_POST[ville] dans la requete SQL suivante ( voir ligne 6):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
       if(trim (@$_POST['type']) == 'Entree')
       {
     
    	    $req = "SELECT dateCloture  FROM niveaustock WHERE idProduit='trim($_POST[produit])' AND idVille='trim($_POST[ville])'";
    	    $rs = mysql_query($req);
    	    while ($ligne = mysql_fetch_array($rs))
            	{        
            		extract($ligne);
     
    	            if (strtotime($_POST['date']) < strtotime($dateCloture) )  
    	              {
    		              //$msg="Période cloturée contactez l'administrateur";
    					 $sr="oui"; 
    					 $msg="<script language='Javascript'> alert('Période cloturée, contactez l\'Administrateur\' du système !!')          			</script>" ; 
    	              }
    else
    {
    ?>
    La requete ne marche pas tel que j'ai tapé.

    merci de m'aider

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    pulls,

    déjà, question : pourquoi n'as tu pas ouvert un sujet sur le forum pour ton problème ? le sujet sur lequel je travail est différent ! tu aurais eu plus de réponses et d'aide ! et puis ça aurait pu permettre de traiter mon sujet sans mélanger .

    ensuite concernant ton code :
    si tu es en POST, qu'est ce que $_POST['code'] qui est dans l'url de ton action de formulaire ? cette valeur de code ne peut être générée à l'arrivée sur la page puisque le formulaire n'a pas été validé : donc code=' ' dans ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form  id="form" name="form"  action="mouvement_supFormtest.php?code=<?php echo @$_POST['code']?>" method="post" >
    affiche ta source de page , tu verras. (Ctrl U sur Firefox)

    donc l'url de résultat de ton form est fausse .
    revois ce probleme.

  18. #18
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Excusez moi,

    Je n'ai pas pu trouver le lien dans le site pour ouvrir un sujet sur le forum. On m'a dit que le bouton ' Ajouter une reponse' suffit pour ouvrir un nouveau sujet.

    Pouvez vous m'aider ?

    merci

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par pulls Voir le message
    Excusez moi,

    Je n'ai pas pu trouver le lien dans le site pour ouvrir un sujet sur le forum. On m'a dit que le bouton ' Ajouter une reponse' suffit pour ouvrir un nouveau sujet.

    Pouvez vous m'aider ?

    merci
    le bouton nouvelle discussion est en haut de la liste des sujet du forum où tu te trouves. pas dans ce sujet.

    je t'ai donné des pistes, éxplore les. je comprend que tu aimerais que je te donne le code tout fait, mais d'une part je n'ai pas trop del temps, et d'autre part je ne sais pas ce que tu veux.

    as tu réalisés les suggestions que je t'ai posté ?

  20. #20
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Excusez moi une fois de plus.

    je viens chercher le bouton ' Nouvelle discussion en vain'; je ne vois que le bouton ' Ajouter une reponse' et ' proposer en actualité' , je ne sais pas pourquoi c'est si caché.

    S'il vous plait pouvez vous me donner le chemin?

    ensuite concernant ton code :
    si tu es en POST, qu'est ce que $_POST['code'] qui est dans l'url de ton action de formulaire ? cette valeur de code ne peut être générée à l'arrivée sur la page puisque le formulaire n'a pas été validé : donc code=' ' dans ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <?php
    <form  id="form" name="form"  action="mouvement_supFormtest.php?code=<?php echo @$_POST['code']?>" method="post" >
    ?>


    S'il vous plait, je n'ai pas besoin que code me renvoit une valeur. Sa présence dans l'url justifie que j'ai fait une action ( choix du code à supprimer )

    et le programme doit en conséquence exécuter une instruction précise.

    regardez à la ligne 4:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    <?php 
    	if (isset($_GET['code']))
    	{
    		if ($_POST['code']!='init')
    		{
     
    			$codeMouvement = getColMouvement($_POST['code'],'idMouvement');	
    			$libelleMouvement = getColMouvement($_POST['code'],'idProduit');
    			$quantiteMouvement = getColMouvement($_POST['code'],'qte');			
    			$VilleMouvement = getColMouvement($_POST['code'],'ville');
    			$DateMouvement = getColMouvement($_POST['code'],'date');
    			$TypeMouvement= getColMouvement($_POST['code'],'typeMouvement');
     
    		}		
    	}
    	if (isset($_GET['del']))
     
    	{
     
        //$date =formateDates(trim($_POST['date'])); if ($date==0) $date = date('Y/m/d');
     
     
          if(trim (@$_POST['type']) == 'Entree')
       {
     
    ?>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Problème Requête avec Jointure de plusieurs Tables VBA
    Par fleur_d_eden dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2012, 11h03
  2. Problème requête avec jointures multiples
    Par babouu dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/12/2011, 17h16
  3. Problème requête double jointure
    Par alex2746 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2011, 11h35
  4. Requête complexe jointures
    Par passpartout007 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 14/12/2010, 10h43
  5. Réponses: 6
    Dernier message: 20/09/2004, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo