probleme requete sql

probleme requete sql - SQL/NoSQL - Programmation

Marsh Posté le 15-12-2023 à 05:05:44    

bonjour;
 
 
http://www.adx-multiservices.fr/pb.jpg
 
 
voici mon code php/html:
 
<?php
include('./config.php'); // sql
 
 
if(isset($_POST['ref']))
{  
 
 
//********************** on recup le solde actuel ***************************
 
 
 
 
//********************** on recup le dernier id de facture***************************
 
mysql_select_db($database_dbprotect, $dbprotect);
$query2 = "SELECT * FROM factures ORDER BY id DESC LIMIT 1";  
$resultconnect2 = mysql_query($query2, $dbprotect) or die(mysql_error());
 while ($rowconnect2 = mysql_fetch_array($resultconnect2))  
 {
$idfact = $rowconnect2['id']+1;
 }
 
 
  // on passe toutes les variables $POST en variables
 
 $ref2 = $_POST['ref2'];
 if($ref2=="" )    
 {
  $ref = $_POST['ref'];
 
     if($ref=="JARD" )    
     {
     $descript="1h de jardinage";
     }
     elseif($ref=="4hJARD" )    
     {
     $descript="1/2 journée de jardinage";
     }
     elseif($ref=="1jJARD" )    
     {
     $descript="1 journée de jardinage";
     }
     elseif($ref=="INFO" )    
     {
     $descript="1h d'informatique";
     }
     elseif($ref=="4hINFO" )    
     {
     $descript="1/2 journée d'informatique";
     }
     elseif($ref=="1jJARD" )    
     {
     $descript="1 journée d'informatique";
     }
     elseif($ref=="BRICO" )    
     {
     $descript="1h de bricolage";
     }
     elseif($ref=="4hBRICO" )    
     {
     $descript="1/2 journée de bricolage";
     }
     elseif($ref=="1jBRICO" )    
     {
     $descript="1 journée de bricolage";
     }
     elseif($ref=="MENAG" )    
     {
     $descript="1h de ménage";
     }
     elseif($ref=="4hMENAG" )    
     {
     $descript="1/2 journée de ménage";
     }
     elseif($ref=="1jMENAG" )    
     {
     $descript="1 journée de ménage";
     }
     elseif($ref=="PISC" )    
     {
     $descript="1h d'entretien piscine";
     }
     elseif($ref=="4hPISC" )    
     {
     $descript="1/2 journée d'entretien de piscine";
     }
     elseif($ref=="1jPISC" )    
     {
     $descript="1 journée d'entretien de piscine";
     }
     elseif($ref=="DECHR" )    
     {
     $descript="frais de mise à la décharge";
     }
     elseif($ref=="DEV" )    
     {
     $descript="Facture du devis n°DV___";
     }
     elseif($ref=="MAT" )    
     {
     $descript="prix des materiaux";
     }
     else      
     {
     }
 
 
  }
  else      
  {
 
$ref = $_POST['ref2'];
$descript = $_POST['descript2'];
 
  }
 
 
 
  $quantite = $_POST['nb'];
  $prix = $_POST['prix'];
  $prixtotal = $_POST['prixtotal'];
 
 
  // on fait l'INSERT dans la base de données
  $insert_donnee = sprintf("INSERT INTO reffacts (id, idfact, ref, descript, quantité, prix, prixtotal) VALUES ('', '$idfact', '$ref', '$descript', '$quantite', '$prix', '$prixtotal')" );
    mysql_select_db($database_dbprotect, $dbprotect);
    $result = mysql_query($insert_donnee, $dbprotect) or die(mysql_error());
  redir('?af=addok'); // redirection si création réussie
 
}
else
{
 
?>
 
<center>
 
 
<?php
if (isset($_GET['af']))
{
$p=$_GET['af'];
       
     if($p=="addok" )    
     {
 
 
echo "<font color=limegreen>Ajout Ok !</font>";
 
 
      }
}
?>
 
 
Ajouter une ligne de réference:        <font color=red><b>(VALIDER)</font></b>
<br><br>
 
<form action="" method="post" name="add">
 
Type: <select name="ref" id="ref">
 
 
<option value="JARD">JARD - 1h de jardinage</option>
<option value="4hJARD">JARD - 1/2 journée jardinage</option>
<option value="1jJARD">JARD - 1 journée jardinage</option>
<option value="---">----------------------</option>
<option value="INFO">INFO - 1h d'informatique</option>
<option value="4hINFO">INFO - 1/2 journée d'info</option>
<option value="1jINFO">INFO - 1 journée d'info</option>
<option value="---">----------------------</option>
<option value="BRICO">BRICO - 1h de bricolage</option>
<option value="4hBRICO">BRICO - 1/2 journée bricolage</option>
<option value="1jBRICO">BRICO - 1 journée bricolage</option>
<option value="---">----------------------</option>
<option value="MENAG">MENAG - 1h de ménage</option>
<option value="4hMENAG">MENAG - 1/2 journée de ménage</option>
<option value="1jMENAG">MENAG - 1 journée de ménage</option>
<option value="---">----------------------</option>
<option value="PISC">PISC - 1h d'entretien piscine</option>
<option value="4hPISC">PISC - 1/2 journée piscine</option>
<option value="1jPISC">PISC - 1 journée piscine</option>
<option value="---">----------------------</option>
<option value="DECHR">DECHR - Frais de mise à la décharge</option>
<option value="MAT">MAT - Prix des materiaux</option>
</select><br>
<b>OU</b> ref:<input type="text" name="ref2" id="ref2" value="" size="3">-<input type="text" name="descript2" id="descript2" value="" size="28"><br>
nbre:<input type="text" name="nb" id="nb" value="1" size="3">  
prix unit:<input type="text" name="prix" id="prix" value="" size="3">
prix total:<input type="text" name="prixtotal" id="prixtotal" value="" size="3">
 
        <font color=red><b><input type="submit" name="Submit" value="ajouter la ligne dans la facture"> !!!</font></b>
 
 </form>
 
</center>
 
 
 
<?php
 
}
 
?>
 

 
et voici mon erreur:

 
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, prix, prixtotal) VALUES ('', '89', 'JARD', '1h de jardinage', '1', '20', '...' at line 1
 
je comprend pas aidez moi svp


Message édité par axd13 le 15-12-2023 à 05:27:04
Reply

Marsh Posté le 15-12-2023 à 05:05:44   

Reply

Marsh Posté le 15-12-2023 à 07:53:25    

Code :
  1. // on fait l'INSERT dans la base de données
  2.   $insert_donnee = sprintf("INSERT INTO reffacts (id, idfact, ref, descript, quantité, prix, prixtotal) VALUES ('', '$idfact', '$ref', '$descript', '$quantite', '$prix', '$prixtotal')" );
  3.     mysql_select_db($database_dbprotect, $dbprotect);
  4.     $result = mysql_query($insert_donnee, $dbprotect) or die(mysql_error());
  5.   redir('?af=addok'); // redirection si création réussie


Ton sprintf ne fait rien comme échange de valeur...
https://www.php.net/manual/en/function.sprintf.php
Tu utilises un outil d’édition de code qui colorie la syntaxe ?
Pacque tu aurais dut le voir tout de suite...
 
De plus ta requête n'est pas du tout sécurisé, si tu le peux passe plutôt par PDO qui te nettoiera et protégera tes variable en entré.
https://www.php.net/manual/fr/pdo.prepare.php
 
Sinon regarde un exemple ou le sprintf est bien utilisé :
https://www.php.net/manual/fr/function.mysql-query.php


---------------
D3
Reply

Marsh Posté le 16-12-2023 à 11:27:45    

Bonjour,
Déjà, merci d'utiliser les balises

Code :
  1. pour poster du code et faciliter sa lecture.
  2. Après, le if/else énorme bien sale, tu peux le remplacer par un tableau associatif du genre :
  3. [cpp]
  4. $ArrayPrestations = array(
  5.                                       "Jardinage" => array(                                     
  6.                                                                       "JARD" =>"1h de jardinage",
  7.                                                                       "4hJARD" => "1/2 journée jardinage",
  8.                                                                       "1jJARD" => "1 journée jardinage"
  9.                                                                     ),
  10.                                       "Informatique" => array(
  11.                                                                            "INFO" => "1h d'informatique",
  12.                                                                            "4hINFO" => "1/2 journée d'info",
  13.                                                                            "1jINFO" => "1 journée d'info"
  14.                                                                     ),
  15.                                       "bricolage" => array(
  16.                                                                     ....
  17.                                                                     ),
  18.                                    ...
  19.                                   );
  20. // Pour afficher la liste
  21. echo "<select name=\"ref\" id=\"ref\">";
  22. foreach($ArrayPrestations as $Groupe => $ArrayValues)
  23. {
  24.    echo "<optgroup label=\"$Groupe\">";
  25.    foreach($ArrayValues as $Code => $Label)
  26.    {
  27.          echo "<option value=\"$Code\">$Label</option>";
  28.    }
  29.    echo "</optgroup>"; 
  30. }
  31. echo "</select>";


Ca sera bien plus propre.
 
Comme ça, côté serveur, pour récupérer le libellé, tu fais :

Code :
  1. $ref = $_POST['ref'];
  2. $descript = $ArrayPrestations[$ref];


 
;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-12-2023 à 22:37:07    

j'ai pourtant tout simplifier mais ca me fait la même erreur au secours s'il vous plait
 
 
 
<?php
include('./config.php'); // sql
 
 
if(isset($_POST['ref']))
{  
 
//********************** on recup le dernier id de facture***************************
 
mysql_select_db($database_dbprotect, $dbprotect);
$query2 = "SELECT * FROM factures ORDER BY id DESC LIMIT 1";  
$resultconnect2 = mysql_query($query2, $dbprotect) or die(mysql_error());
 while ($rowconnect2 = mysql_fetch_array($resultconnect2))  
 {
$idfact = $rowconnect2['id']+1;
 }
 
 
  // on passe toutes les variables $POST en variables
 
 
 
 
 
  $ref = $_POST['ref'];
  $descript = $_POST['descript2'];
  $quantite = $_POST['nb'];
  $prix = $_POST['prix'];
  $prixtotal = $_POST['prixtotal'];
 
 
  // on fait l'INSERT dans la base de données
  $insert_donnee = sprintf("INSERT INTO reffacts (id, idfact, ref, descript, quantité, prix, prixtotal) VALUES ('', '$idfact', '$ref', '$descript', '$quantite', '$prix', '$prixtotal')" );
    mysql_select_db($database_dbprotect, $dbprotect);
    $result = mysql_query($insert_donnee, $dbprotect) or die(mysql_error());
  redir('?af=addok'); // redirection si création réussie
 
 
 
 
}
else
{
 
 
?>
 
<center>
 
 
<?php
if (isset($_GET['af']))
{
$p=$_GET['af'];
       
     if($p=="addok" )    
     {
 
 
echo "<font color=limegreen>Ajout Ok !</font>";
 
 
      }
}
 
?>
 
 
Ajouter une ligne de réference:        <font color=red><b>(VALIDER)</font></b>
<br><br>
 
<form action="" method="post">
ref:<input type="text" name="ref" id="ref" value="" size="3">
<input type="text" name="descript" id="descript" value="" size="28"><br>
nbre:<input type="text" name="nb" id="nb" value="1" size="3">  
prix unit:<input type="text" name="prix" id="prix" value="" size="3">
prix total:<input type="text" name="prixtotal" id="prixtotal" value="" size="3">
 
 <font color=red><b><input type="submit" name="Submit" value="ajouter la ligne dans la facture"> !!!</font></b>
 
 </form>
 
</center>
 
 
 
<?php
 
}
 
?>

Reply

Marsh Posté le 20-12-2023 à 10:32:30    

Si tu ne lis pas nos réponses et ne changes pas ton code avec ce qu'on te conseille, que tu ne nous met pas tes messages d'erreur [:michaeldell], comment veux tu avancer ?


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed