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

Requêtes MySQL Discussion :

Problème de mise a jours de table Mysql


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème de mise a jours de table Mysql
    Salut à tous
    Totalement novice en php, sql, etc j'arrive cependant a pas mals de trucs.
    Pourtant j'ai 2 problèmes :

    1 - J'ai une variable $bc, si je fais un echo $bc, j'obtiens bien sa valeur du moment soit par exemple XY23.
    Impossible de faire rentrer cette valeur dans une table sql, les autres données rentrent bien sauf celle-là, voila en gros les syntaxes que j'ai essayé sans succés sous cette formule qui fonctionne our les autres données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql_query("INSERT INTO ma_table VALUES('$bc', '$pas_de_pb1', '$pas_de_pb2'");
    $bc
    '$bc'
    '".$bc."'
    '\"$bc\"'
    ['$bc']
    '."$bc".'
    Et je dois en oublier, tout ça dans plusieurs type de champ (TEXT, VARCHAR, etc...) bien entendu.

    2 - J'ai un formulaire qui rempli une table puis sous un javascript m'envoie sur un autre formulaire qui doit afficher les enregistrement de la même table.
    La table ce met bien à jours, le 2ème formulaire la lit bien mais ne fait pas apparaitre la mise a jours, en fait c'est comme si la lecture du 2ème était plus rapide que l'écriture du 1er, pourtant si j'ouvre manuellement mon 2ème formulaire, tous les enregistrements apparaissent bien, même ceux écrits par le premier.

    Voilà, si quelqu'un à une idée ...

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Tu peux nous donner la structure exacte de la table ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Oui, voilà

    Pas d'index, pas de clé, doublons sans importance

    Champ n°1 (le problème): Nume, Type :varchar(10), Interclassement :Latin1_swedich_ci, non null

    Champ n°2 (pas de souci) : objet, Type : text, Interclassement :Latin1_swedich_ci, non null

    Champ n°3 (pas de pb) :Qte, type : float, non null

    Champ n° 4 (ras) : Pu, type : float(15,2), non null

    En fait c'est le détail d'un bon de commande dont l'entête est écris sur une autre table ou là le 1er champ (Num) fait le lien avec le 1er champ (Nume) de la table "détail". Tous les champs Nume qui correspondent avec Num sont pris en compte.

    Tout marche très bien si je modifie le formulaire pour renseigner manuellement le champ Nume par un input, ce qui est bête car si avant je fais un echo de $Nume, j'ai la bonne valeur renvoyée a l'écran.

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Je ne vois rien dans cette structure qui explique que la chaîne 'XY23' ne puisse être insérée dans une colonne de type varchar(10).
    Par contre, puisque tu n'énumères pas les colonnes dans la requête
    Extrait de la doc MySQL
    Si vous ne spécifiez pas de liste de colonnes avec INSERT ... VALUES les valeurs pour toutes les colonnes doivent être fournies dans la clause VALUES()
    Or je ne vois que 3 valeurs pour 4 colonnes.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO ma_table VALUES('$bc', '$pas_de_pb1', '$pas_de_pb2'");
    pour simplifier, en réalité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO DetBon VALUES('$Nume', '$objet', '$Qte', '$Pu'");
    Un echo de toutes ces valeur avant insertion va me donner par exemple dans l'ordre :

    SG01 Ramette de papier blanc A4 10 3.43
    dans la table il s'insère :

    Ramette de papier blanc A4 10 3.43
    Avec tous mes essais, obtenu :

    $Nume Ramette de papier blanc A4 10 3.43
    ou bien :

    "" Ramette de papier blanc A4 10 3.43
    Voire même :

    .. Ramette de papier blanc A4 10 3.43
    Mais jamais :

    SG01 Ramette de papier blanc A4 10 3.43
    Et toujours un echo de $Num juste avant la requête qui renvoie bien SG01

    Sur la majorité des forum il est dit d'ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO DetBon VALUES('".$Nume."', '$objet', '$Qte', '$Pu'");
    Cette syntaxe m'écrit dans la table :

    Ramette de papier blanc A4 10 3.43

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Non, la dernière syntaxe c'est pour une clef numérique autoincrémentée.
    Excuse-moi d'insister mais tu peux faire un dump mysql de la structure de la table, sous PMA (PhpMyAdmin), par exemple.
    Parce que là quelque chose m'échappe.
    As-tu d'ailleurs testé la requête en direct dans PMA ?
    As-tu un or die(mysql_error()) après le mysql_query ?

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pas de problème:

    La table "maitresse"

    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
    -- phpMyAdmin SQL Dump
    -- version 2.9.1.1
    -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
    -- 
    -- Serveur: localhost
    -- Généré le : Vendredi 24 Octobre 2008 à 07:31
    -- Version du serveur: 5.0.27
    -- Version de PHP: 5.2.0
    -- 
    -- Base de données: `BonsCmde`
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `bon`
    -- 
     
    CREATE TABLE `bon` (
      `Num` varchar(10) NOT NULL,
      `Date` text NOT NULL,
      `An` text NOT NULL,
      `Societe` text NOT NULL,
      `Service` text NOT NULL,
      `Signat` text NOT NULL,
      PRIMARY KEY  (`Num`)
    ) TYPE=MyISAM;
    La 2ème table

    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
    -- phpMyAdmin SQL Dump
    -- version 2.9.1.1
    -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
    -- 
    -- Serveur: localhost
    -- Généré le : Vendredi 24 Octobre 2008 à 07:34
    -- Version du serveur: 5.0.27
    -- Version de PHP: 5.2.0
    -- 
    -- Base de données: `BonsCmde`
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `bondet`
    -- 
     
    CREATE TABLE `bondet` (
      `Nume` varchar(10) NOT NULL,
      `objet` text NOT NULL,
      `Qte` float NOT NULL,
      `Pu` float(15,2) NOT NULL
    ) TYPE=MyISAM;
    Et même 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
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="DesignBC.css" />
    <img src="images/tete.jpg" class="tete" />
    <img src="images/cote.jpg" class="cote" />
     
    <script language="javascript">
    function a()
    {
    with(document.suitebc)
    	{
    	action="DetBon2.php";
    	submit();
    	}
    }
     
    function b()
    {
    with(document.suitebc)
    	{
    	action="Menu.php";
    	submit();
    	}
    }
    </script>
     
    <?php
    if (isset($_POST['nbon']))
    {
    	$N=$_POST['nbon'];
    }
    ?>
     
    <form action="DetBon.php" method="post" name="suitebc">
     
    <?php
    mysql_connect("xxxxxxx", "xxxxx", "xxxxx");
    mysql_select_db("BonsCmde");
    $reponse = mysql_query("SELECT * FROM bon, societe, beneficiaire WHERE Num='$N' AND Societe=Nom AND Service=Abreges");
    mysql_close();
    while ($donnees = mysql_fetch_array($reponse))
    {
    ?>
     <h1 class="bon"/>BON DE COMMANDE N°
    <?php echo $donnees['Num'];
    $bc = $donnees['Num'];?>.<?php echo $donnees['An']; ?>
    </h1>
    <table>
    	<tr>
    		<th class="prest2"/>Service - UT bénéficiaire</th>
    		<th class="prest1"/>Prestataire / Société destinataire du bon</th>
    	</tr>
    	<tr>
    	<td><?php echo $donnees['Service']; ?></td><td class="prest"/><?php echo $donnees['Societe']; ?></td>
    	</tr>
    	<tr>
    	<td class="clair"><?php echo $donnees['Clairs']; ?></td><td class="prest"/></td>
    	</tr>
    	<tr>
    	<td><?php echo $donnees['Adresses']; ?></td><td class="prest"/><?php echo $donnees['Adresse']; ?></td>
    	</tr>
    	<tr>
    	<td><?php echo $donnees['Cps']; ?>   <?php echo $donnees['Villes']; ?></td><td class="prest"/><?php echo $donnees['Cp']; ?>  <?php echo $donnees['Ville']; ?></td>
    	</tr>
    	<tr>
    	<td>Tel : <?php echo $donnees['Tels']; ?> - Fax : <?php echo $donnees['Faxs']; ?></td><td class="prest"/>Tel : <?php echo $donnees['Tel']; ?> - Fax : <?php echo $donnees['Fax']; ?></td>
    	</tr>
    </table>
    <?php
    }
    ?>
    <table>
    	<tr>
    		<th width="355px">Objet</th>
    		<th width="40px">Qte</th>
    		<th width="90px">Pu. HT.</th>
    		<th width="30px" ><font size="1.5"/>Confirm.</th>
    	</tr>
    <?php
    mysql_connect("xxxxxxx", "xxxxx", "xxxxx");
    mysql_select_db("BonsCmde");
    $rep = mysql_query("SELECT * FROM bon, bondet WHERE Num='$bc' and Nume='$bc' ORDER BY objet");
    mysql_close();
    while ($dones = mysql_fetch_array($rep))
    {
    ?>
    	<tr>
    		<td width="355px" size="57"><?php echo $dones['objet']; ?></td>
    		<td width="40px" align="center" size="3"><?php echo $dones['Qte']; ?></td>
    		<td width="90px" align="right" size="10"><?php echo $dones['Pu']; ?></td>
    	</tr>
    <?php
    }
    ?>
    	<tr>
    		<td width="355px"><input size="57" type="text" name="objet" /></td>
    		<td width="40px" align="center"><input size="3" type="text" name="Qte" /></td>
    		<td width="90px" align="center"><input size="10" type="text" name="Pu" /></td>
    		<td width="30px" align="center"><input type="submit" value="ok" /></td>
    	</tr>
    <?php
    	mysql_connect("xxxxxxx", "xxxxx", "xxxxx");
    	mysql_select_db("BonsCmde");	
    if (isset($_POST['Pu']))
    	{
    	$objet = $_POST['objet'];
    	$Qte = $_POST['Qte'];
    	$Pu = $_POST['Pu'];
    	mysql_query("INSERT INTO bondet VALUES('$bc', '$objet', '$Qte', '$Pu')");
    	}
    	mysql_close();
    ?>
    	<tr>
    	<td><input type="submit" value="Nouvelle ligne" onclick="javascript:return a();"/> ou <input type="submit" value="Terminer" onclick="javascript:return b();"/></td></td>
    	</tr>
    </table>
    </form>
    Un echo de $bc avant inscription dans la table affiche bien la bonne valeur

    Tout marche très bien si je rajoute au bon endroit dans le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input size="10" type="text" name="bc" />
    et

  8. #8
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Re-saluton,
    J'ai repris l'intégralité de ton script et j'ai détecté quelques erreurs grossières et quelques maladresses.
    Commençons par les maladresses :
    Au sein d'un même script, si tu dois lancer plusieurs requêtes sur la même base de données, il est un peu ballot de clore la connexion entre chaque requête.
    D'autre part les infos de connexion sont généralement placées dans un script à part que l'on requiert (require) quand on en a besoin.
    Une petite bêtise, tu avais une balise fermante </td> doublonnée.
    Les erreurs grossières, pas de structure html standard, pas de <head> pas de <body>
    Encore plus grave la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reponse = mysql_query("SELECT * FROM bon, societe, beneficiaire 
    WHERE Num='$N' AND Societe=Nom AND Service=Abreges");
    Filtre bien sur les clauses du WHERE mais n'opère pas de liens clairs de jointure entre les 3 tables bon, societe, beneficiaire, et doit, selon moi, retourner une palanquée de doublons vu qu'elle ressemble beaucoup à un produit cartésien entre les 3 tables.

    D'autre part tu as fourni ton script, ce n'étais pas ce que j'attendais mais le résultat du lancement de la requête générée sous PMA.
    Bon, je crois que tu as du taf

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Désolé pour les erreurs mais cela fait a peine une semaine que je touche a ça.

    Pour la balise fermante ok

    Pour le body et le head, je les ai pas mis car je n'ai pas encore saisi leur utilité.

    La requête qui fonctionne très bien, des "presques doublons" sont indispensable.

    En fait le tout est un bon de commande saisi en é étapes :

    Une première étape fait saisir l'entête du bon sous la forme d'abrégés et liste déroulante soit:

    Un numéro choisi selon la volonté de l'utilisateur
    Un abrégé représentant un service
    Un nom de prestataire
    La date
    Un nom de responsable.

    La 2ème étape fait 2 action
    a) Rempli automatiquement un entête complet du bon soit
    Un N°,
    Un clair complet du service client avec son adresse, tel etc...
    Les coordonnées complètes du fournisseur ou prestataire
    Les coordonnées complètes du responsable signataire de la commande.

    b) Permettre une saisie détaillée de la commande qui peut avoir pas mal de lignes.
    (c'est là qu'est le problème.)

    Donc ce ne sont pas 3 tables liées mais 5

    Je précise enfin que si je rentre manuellement mon n°, tout marche à merveille.

    Pour l'exécution de la requête dans PMA, je n'avais pas compris, je n'ai jamais fait ça, je ne savais même pas qu'on pouvait le faire et je vais donc essayer.

Discussions similaires

  1. [AC-2007] [urgent] Problème de mise a jours des tables
    Par Jean351 dans le forum Projets ADP
    Réponses: 1
    Dernier message: 21/05/2014, 13h30
  2. ODBC, Base foxPro et mise a jour de table
    Par Steff1985 dans le forum ASP
    Réponses: 2
    Dernier message: 31/03/2006, 23h58
  3. problème avec mise en page de <table>
    Par dyree dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/09/2005, 16h54
  4. problème de mise a jour
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 15/04/2004, 16h09

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