Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1540 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  probleme requete sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme requete sql

n°2460217
axd13
Posté le 15-12-2023 à 05:05:44  profilanswer
 

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
mood
Publicité
Posté le 15-12-2023 à 05:05:44  profilanswer
 

n°2460220
mechkurt
Posté le 15-12-2023 à 07:53:25  profilanswer
 

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
n°2460295
rufo
Pas me confondre avec Lycos!
Posté le 16-12-2023 à 11:27:45  profilanswer
 

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
n°2460498
axd13
Posté le 19-12-2023 à 22:37:07  profilanswer
 

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
 
}
 
?>

n°2460508
mechkurt
Posté le 20-12-2023 à 10:32:30  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  probleme requete sql

 

Sujets relatifs
Problème requête GET serveurWeb/MicrocontroleurProblème pour structurer le résultat d'une requete SQL
Problème de requête sous AccessProblème requete MSSQLSERVER_4104
Problème de requête sqlProblème requête SQL: command not properly ended
[JQUERY]Problème requête ajax en GET via PHPRequête mysql probleme
[SQL/PLSQL] problème sur requêteRequête qui me pose problème
Plus de sujets relatifs à : probleme requete sql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR