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 :

[SQL] Problème de concaténation


Sujet :

PHP & Base de données

  1. #1
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut [SQL] Problème de concaténation
    Bonsoir,
    j'ai un formulaire avec quatre champs text afin d'indiquer une adresse IP.
    J'essaye ensuite de faire une concaténation de mes 4 varibales pour les enregistrer dans ma base mais la j'ai une erreur de syntaxe que je n'arrive bien sur pas à résoudre.
    Voici mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form id="form" name="form" method="POST" action="<?php echo $editFormAction; ?>" onsubmit="return TestIP();">
      <div align="center">
        <input type="text" class="boiteFormulaire" name="TB1" tabindex="1"  size="3" maxlength="3" length="3" onkeypress="if(event.keyCode &lt; 48 || event.keyCode &gt; 57) event.returnValue = false; if(event.which &lt; 48 || event.which &gt; 57) return false;" style="text-align:center" onFocus="this.value=''"/>
        <span class="texteGrand"><strong>.</strong></span>
        <input type="text" class="boiteFormulaire" name="TB2" tabindex="2"  size="3" maxlength="3" length="3" onkeypress="if(event.keyCode &lt; 48 || event.keyCode &gt; 57) event.returnValue = false; if(event.which &lt; 48 || event.which &gt; 57) return false;" style="text-align:center" onFocus="this.value=''"/>
        <span class="texteGrand"><strong>.</strong></span>
        <input type="text" class="boiteFormulaire" name="TB3" tabindex="3"  size="3" maxlength="3" length="3" onkeypress="if(event.keyCode &lt; 48 || event.keyCode &gt; 57) event.returnValue = false; if(event.which &lt; 48 || event.which &gt; 57) return false;" style="text-align:center" onFocus="this.value=''"/>
        <span class="texteGrand"><strong>.</strong></span>
        <input type="text" class="boiteFormulaire" name="TB4" tabindex="4"  size="3" maxlength="3" length="3" onkeypress="if(event.keyCode &lt; 48 || event.keyCode &gt; 57) event.returnValue = false; if(event.which &lt; 48 || event.which &gt; 57) return false;" style="text-align:center" onFocus="this.value=''"/>
    Et voici ensuite mon code PHP
    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
     
    <?php
    $ipserveur = $_POST['TB1'].".".$_POST['TB2'].".".$_POST['TB3'].".".$_POST['TB4'];
     
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
      $insertSQL = sprintf("INSERT INTO serveurdz (SERVEURDZ) VALUES (%s)",
                           $ipserveur);
     
      mysql_select_db($database_CnxCourrier, $CnxCourrier);
      $Result1 = mysql_query($insertSQL, $CnxCourrier) or die(mysql_error());
    }
    ?>
    L'erreur est la suivante :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.122.211)' at line 1
    Voilà si quelqu'un avait une idée.

    Apparemment c'est les points qui posent problèmes ("."), si quelqu'un avait une solution

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Quand tu insères une chaine de caractères dans la base de données, il faut l'entourer de simple quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $insertSQL = sprintf("INSERT INTO serveurdz (SERVEURDZ) VALUES ('%s')",$ipserveur);
    Ensuite quand tu as une erreur SQL il est bon d'afficher aussi la requete pour la voir entièrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $Result1 = mysql_query($insertSQL, $CnxCourrier) or die("Requete : $insertSQL<br/> " . mysql_error());

  3. #3
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Bonjour,

    Ton erreur vient de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ipserveur = $_POST['TB1'].".".$_POST['TB2'].".".$_POST['TB3'].".".$_POST['TB4'];
    En effet il faudrait entourer tes $_POST['TBn'] par des guillemets afin que le résultat ne soit pas interprété par PHP (les points par exemple).

    Donc ça doit donner un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ipserveur = "$_POST['TB1'] $_POST['TB2'] $_POST['TB3'] $_POST['TB4']";

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par loka Voir le message
    Bonjour,

    Ton erreur vient de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ipserveur = $_POST['TB1'].".".$_POST['TB2'].".".$_POST['TB3'].".".$_POST['TB4'];
    En effet il faudrait entourer tes $_POST['TBn'] par des guillemets afin que le résultat ne soit pas interprété par PHP (les points par exemple).

    Donc ça doit donner un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ipserveur = "$_POST['TB1'] $_POST['TB2'] $_POST['TB3'] $_POST['TB4']";
    Ce code ne pourra pas fonctionner, les variables ne seront pas interprétées vu que $_POST est un tableau, il n'y a plus de point séparant chaque nombre et il n'y a pas de quotes autour pour autant.

  5. #5
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Exact, au temps pour moi, je suis allé trop vite en besogne et je viens seulement de voir comment fonctionnait son code et surtout que tu avais déjà donné la bonne réponse

    Donc ne pas prendre en compte mon précédent message

    Désolé

Discussions similaires

  1. Problème de concaténation SQL Server 2005
    Par boubounz dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/01/2008, 11h54
  2. Réponses: 6
    Dernier message: 31/05/2007, 15h54
  3. [SQL] problème de concaténation
    Par yvon_huynh dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 30/06/2006, 17h01
  4. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  5. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h01

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