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 d'erreur sur requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut problème d'erreur sur requête
    bonjour,

    mon premier problème vient de ma requête dont voici la page qui la contient :

    Code PHP : 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
    <? 
    include ('connexion.inc');
     
    $ddem = $_POST["date_dem"];
    $hdem = $_POST["heure_dem"];
    $serv = $_POST["service"];
    $col = $_POST["collaborateur"];
    $urg = $_POST["urgence"];
    $prev = $_POST["prevue"];
    $tech = $_POST["technicien"];
    $obj = $_POST["objet"];
    $desig = $_POST["designation"];
    $remarq = $_POST["remarque"];
     
    $sql = "INSERT INTO interv ('', num_inter, date_demande, heure_demande, urgence, prevue, affectation, objet, designation, effectue, remarque, service, collaborateur) VALUES ('NULL', '$ddem', '$hdem', '$serv', '$col', '$urg', '$prev', '$tech', '$obj', '$desig', '$remarq')";
     
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); 
    ?>

    Ca c ma page d'envoi dans ma base de donnees la ou ma requete merde et voici l'erreur qui s'affiche :

    Erreur : Erreur de syntaxe près de ''', num_inter, date_demande, heure_demande, urgence, prevue, aff' à la ligne 1
    je ne voit po d'ou vient l'erreur.

    Donc mon deuxième problème et que je voudrais récupérer les réponses choisi dans les menus déroulant pour les envoyer dans une table ou sont enregistré ttes mes interventions.

    Voici la page de mon formulaire :

    Code PHP : 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
    143
    144
    145
    146
    147
    148
    149
    <?
    include "connexion.inc"
    ?>
    <!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=utf-8" />
    <title>Untitled Document</title>
    </head>
     
    <body>
    <table width="1024" border="0">
      <tr>
        <td align="center">    
        <table width="800" height="100" border="0">
          <tr>
            <td><img src="images/baniere.jpg" /></td>
          </tr>
        </table><br />
        <table width="500" border="0" cellpadding="0">
    <form action="envoi_interv.php" method="post">
    <? 
    $sql = "Select * From services, collaborateur, urgence, technicien, interv
    		Where services.num_service = collaborateur.num_service
    		And interv.num_urg = urgence.num_urg
    		And interv.num_tech = technicien.num_tech
    		And interv.num_col = collaborateur.num_col";
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); 
    ?>
      <tr>
        <td width="300" align="left">Date demande : </td>
        <td width="200"><input name="date_dem" type="text" size="50" /></td>
      </tr>
      <tr>
        <td width="300" align="left">Heure demande : </td>
        <td width="200"><input name="heure_dem" type="text" size="50" /></td>
      </tr>
      <tr>
        <td width="300" align="left">Service : </td>
    <?
    $sql = "Select * From services order by nom_service";
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());
    ?>    
        <td width="200">
    <?
    $ld = "<SELECT NAME='service'>";
    $ld .= "<OPTION VALUE=0>Choisir un service</OPTION>";
    while ( $row = mysql_fetch_array( $sql_exe)) {
        $numser = $row["num_service"];
        $nomser = $row["nom_service"];
        $ld .= "<OPTION VALUE='$numser'>$nomser</OPTION>";
    }
    $ld .= "</SELECT>";
    echo $ld
    ?>
        </td>
      </tr>
      <tr>
        <td width="300" align="left">Collaborateur : </td>
    <?
    $sql = "Select * From collaborateur order by nom_col";
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());
    ?>    
        <td width="200">
    <?
    $ld = "<SELECT NAME='collaborateur'>";
    $ld .= "<OPTION VALUE=0>Choisir un collaborateur</OPTION>";
    while ( $row = mysql_fetch_array( $sql_exe)) {
        $numcol = $row["num_col"];
        $prenomcol = $row["prenom_col"];
    	$nomcol = $row["nom_col"];
        $ld .= "<OPTION VALUE='$numcol'>$prenomcol $nomcol</OPTION>";
    }
    $ld .= "</SELECT>";
    echo $ld
    ?>
        </td>
      </tr>
      <tr>
        <td width="300" align="left">Urgence : </td>
    <?
    $sql = "Select * From urgence order by nom_urg";
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());
    ?>
        <td width="200">
    <?
    $ld = "<SELECT NAME='urgence'>";
    $ld .= "<OPTION VALUE=0>Choisir une priorité</OPTION>";
    while ( $row = mysql_fetch_array( $sql_exe)) {
        $numurg = $row["num_urg"];
        $nomurg = $row["nom_urg"];
        $ld .= "<OPTION VALUE='$numurg'>$nomurg</OPTION>";
    }
    $ld .= "</SELECT>";
    echo $ld
    ?> 
     
    </td>
      </tr>
      <tr>
        <td width="300" align="left">Prévue le : </td>
        <td width="200"><input name="prevue" type="text" size="50" /></td>
      </tr>
      <tr>
        <td width="300" align="left">Technicien : </td>
    <?
    $sql = "Select * From technicien order by nom_tech";
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());
    ?>    
        <td width="200">
    <?
    $ld = "<SELECT NAME='technicien'>";
    $ld .= "<OPTION VALUE=0>Choisir un technicien</OPTION>";
    while ( $row = mysql_fetch_array( $sql_exe)) {
        $numtech = $row["num_tech"];
        $prenomtech = $row["prenom_tech"];
    	$nomtech = $row["nom_tech"];
        $ld .= "<OPTION VALUE='$numtech'>$prenomtech $nomtech</OPTION>";
    }
    $ld .= "</SELECT>";
    echo $ld
    ?>
        </td>
      </tr>
      <tr>
        <td width="300" align="left">Objet : </td>
        <td width="200"><input name="objet" type="text" size="50" /></td>
      </tr>
      <tr>
        <td width="300" align="left">Désignation : </td>
        <td width="200"><textarea name="designation" cols="39" rows="5"></textarea></td>
      </tr>
      <tr>
        <td width="300" align="left">Remarque : </td>
        <td width="200"><textarea name="remarque" cols="39" rows="5"></textarea></td>
      </tr>  
      </table><br />
      <table width="500" border="0" cellpadding="0">
      <tr>
        <td align="right"><input name="envoi" type="submit" value="Envoyer" /></td>
        <td align="left"><input name="reset" type="reset" value="Annuler" /></td>
      </tr>
     </table>
    </form>
        </td>
      </tr>
    </table>
    </body>
    </html>

    Merci

  2. #2
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Bonjour,

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO interv ('', num_inter, date_demande, heure_demande, urgence, prevue, affectation, objet, designation, effectue, remarque, service, collaborateur) VALUES ('NULL', '$ddem', '$hdem', '$serv', '$col', '$urg', '$prev', '$tech', '$obj', '$desig', '$remarq')";

    Le premier champ de ton INSERT en l'occurence ['',] n'es pas valide ...

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Salut

    A moins que tu n'ais un champ intitulé '', ta reuête ne risque pas de fonctionner : tu essayes d'affecter NULL à un champ appelé ''

    Au passage, l'utilistation de die(mysql_error()) (bien ! ) est encore plus efficace si tu fais afficher la requête :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_exe = mysql_query($sql) or die('Requete : '.$sql.' Erreur : ' . mysql_error());
    En revanche, je ne comprends pas bien ton second problème. Pourrais-tu donner des précisions ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut
    en corrigeant ma requête c a d en mettant num_interv c un id en auto increment ca me donne ca :

    Erreur : Column count doesn't match value count at row 1
    En ce qui concerne mon deuxieme probleme :

    Quand la personne va ouvrir une nouvelle intervention elle selectionner un technicien dans une liste déroulante rempli depuis une table technicien.

    J'aimerai récuperer le nom du tech choisi par la personne pour le faire apparaitre dans le recapitulatif de l'intervention.

    Voila jespere avoir été clair

    merci

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    si ta colonne est en auto_increment il ne faut rien mettre dans la valeur (meme pas NULL, laisse juste les ' ' vides!

    Pour la liste déroulante tu vas récupérer la valeur choisie dans $_POST['nom_liste_deroulante'];

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut
    Donc c bon ca fonctionne meme ma verif pour voir si les champs sont rempli mais il me met cette erreur sur mes headers

    Warning: Cannot modify header information - headers already sent by (output started at d:\interventions\envoi_interv.php:17) in d:\interventions\envoi_interv.php on line 18

    Warning: Cannot modify header information - headers already sent by (output started at d:\interventions\envoi_interv.php:17) in d:\interventions\envoi_interv.php on line 27
    voila ma page

    Code php : 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
    <? 
    include ('connexion.inc');
     
    $ddem = $_POST["date_dem"];
    $hdem = $_POST["heure_dem"];
    $serv = $_POST["service"];
    $col = $_POST["collaborateur"];
    $urg = $_POST["urgence"];
    $prev = $_POST["prevue"];
    $tech = $_POST["technicien"];
    $obj = $_POST["objet"];
    $desig = $_POST["designation"];
    $remarq = $_POST["remarque"];
     
    if (empty($ddem) || empty($hdem) || empty($serv) || empty($col) || empty($urg) || empty($prev) || empty($tech) || empty($tech) || empty($obj) || empty($desig) || empty($remarq))
        {
    echo 'Des champs n\'ont pas été remplis.';  
         header("Location: enreg_interv.php");
        } 
    else
    {
    $sql = "INSERT INTO interv (num_interv, date_demande, heure_demande, urgence, prevue, affectation, objet, designation, effectue, remarque, service, collaborateur) 
    		VALUES ('', '$ddem', '$hdem', '$urg', '$prev', '$tech', '$obj','$desig','NULL', '$remarq', '$serv', '$col')";
     
    $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); 
    }
    header("Location: accueil.php");
    ?>

    Lorsqu'on rempli le formulaire le header fonctionne mais lorsque l'on ne rempli pas tte les cases ca ne marche pas il me donne l'erreur que j'ai cité.



    Merci infiniment pour votre aide

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour les headers je ne sais pas. Un rapport avec ton include ? ou avec le 2nd header qui se trouve à la fin du code ?

    Mais j'aurais tendance à utiliser de préférence cette structure :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (isset($_POST["prevue"]) && isset($_POST["technicien"]) && isset($_POST["objet"]) && isset($_POST["designation"]) && isset($_POST["remarque"]) ){
     
    $prev = $_POST["prevue"];
    $tech = $_POST["technicien"];
    $obj = $_POST["objet"];
    $desig = $_POST["designation"];
    $remarq = $_POST["remarque"];
     
    // insertion dans la base
     
    }else{
    // message d'erreur
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    A force de lire des posts sur les header j'aurai tendance a dire que dans ton code si tu fais un "echo blablabla" tu peux pas utiliser ensuite le header(location...)
    mais je ne suis pas sur!

  9. #9
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    Bonjour,

    ton erreur vient de ton echo avant ton header()
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (empty($ddem) || empty($hdem) || empty($serv) || empty($col) || empty($urg) || empty($prev) || empty($tech) || empty($tech) || empty($obj) || empty($desig) || empty($remarq))
        {
    echo 'Des champs n\'ont pas été remplis.';  
         header("Location: enreg_interv.php");
        } 
    else

    il ne faut jamais envoyer de sorties avant un header...

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    868
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 868
    Par défaut
    Si c'est sûr, vu que pour envoyer ce que echo va écrire, il faut bien déjà envoyer des entêtes de réponses et que donc par conséquent, si tu fais un header après un echo, ces entêtes ayant déjà été envoyés, header ne pourra que constater qu'il ne peut pas fonctionner correctement.

    Bref, il faut bien regarder s'il n'y a pas un echo qui traine quelque part avant le header.

  11. #11
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    C'est ça, mais pas seulement, dès que le moindre truc (retour chariot, espace et autres...) est envoyé au client.

    Par exemple :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <?php
    	// Retour chariot avant le <?php
    	header("Location: accueil.php");
    ?>

    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\wamp\www\demos\header.php:2) in C:\Program Files\wamp\www\demos\header.php on line 3

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    868
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 868
    Par défaut
    Le moindre caracètre hors du code PHP oui.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut
    oki j'ai resolu le probleme je ne met pas de headers

    Parcontre une derniere question :

    J'envoi les information de mon formulaire dans ma base ca marche

    Dans mon formulaire j'ai des listes déroulantes pour les tech, services etc
    Dans ces listes je voi bien les nom et prenom de mes tech mais quand ca envoi dans ma base c le numero du tech qui apparait ce n'est pas génant d'apres ce que j'ai compris c mm mieux.

    Le problème c'est que quand j'affiche les interventions c aussi le numéro du tech quinapparait hors je souhaiterais que ce soit son prenom.

    Comment dois je faire?

    Merci

Discussions similaires

  1. [SQL] erreur sur requête insert
    Par temperature dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2008, 15h27
  2. Message d'erreur sur requête suppression
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2007, 11h58
  3. [SQL-Server] Problème d'accents sur requête SQL, de php à SQLServer
    Par pontos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2007, 14h58
  4. Erreur sur Requête Mise à Jour
    Par guenfood dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 08h51
  5. Erreur sur requête
    Par zut94 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2006, 10h23

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