Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2007, 20h45   #1
Membre Expert
 
Avatar de Jumano
 
Inscription : février 2007
Messages : 1 162
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 1 162
Points : 1 369
Points : 1 369
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 :
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 :
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
Jumano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 10h35   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Quand tu insères une chaine de caractères dans la base de données, il faut l'entourer de simple quotes :
Code :
  $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 :
  $Result1 = mysql_query($insertSQL, $CnxCourrier) or die("Requete : $insertSQL<br/> " . mysql_error());
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 17h37   #3
Rédacteur
 
Avatar de loka
 
Homme Romain PERRUCHON
Architecte - Expert Technique
Inscription : novembre 2004
Messages : 2 664
Détails du profil
Informations personnelles :
Nom : Homme Romain PERRUCHON
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Architecte - Expert Technique
Secteur : Service public

Informations forums :
Inscription : novembre 2004
Messages : 2 664
Points : 3 607
Points : 3 607
Bonjour,

Ton erreur vient de cette ligne :

Code :
$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 :
$ipserveur = "$_POST['TB1'] $_POST['TB2'] $_POST['TB3'] $_POST['TB4']";
__________________
SFML - API Multimédia C++ multiplateforme !
loka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 17h44   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par loka Voir le message
Bonjour,

Ton erreur vient de cette ligne :

Code :
$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 :
$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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2007, 01h36   #5
Rédacteur
 
Avatar de loka
 
Homme Romain PERRUCHON
Architecte - Expert Technique
Inscription : novembre 2004
Messages : 2 664
Détails du profil
Informations personnelles :
Nom : Homme Romain PERRUCHON
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Architecte - Expert Technique
Secteur : Service public

Informations forums :
Inscription : novembre 2004
Messages : 2 664
Points : 3 607
Points : 3 607
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é
__________________
SFML - API Multimédia C++ multiplateforme !
loka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h47.


 
 
 
 
Partenaires

Hébergement Web