Je ne comprend pas ou est mon erreur sql ?

Résolu/Fermé
Utilisateur anonyme - Modifié par tbbth le 25/08/2015 à 14:03
 Utilisateur anonyme - 26 août 2015 à 08:43
Bonjour, j'ai fais un code mais il ne fonctionne pas le voici :
<!DOCTYPE html>
<html> <!-- oncontextmenu="return false" ondragstart="return false" onselectstart="return false" onclick="return false" -->
 <head>
  <meta charset="utf-8"/>
  <link rel="stylesheet" href="../base.css" />
  <link rel="stylesheet" href="../header.css" />
  <link rel="stylesheet" href="ied.css">
  <link href="../favicon.ico" rel="shortcut icon" type="image/x-icon">
  <title></title>
  <!--[if lt IE 9]>
   <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
   <script src="/js/respond.min.js"></script>
  <![endif]-->
 </head>
 <body>
  <?php
   require_once '../header.html';
  ?>
  <div id="formulaire">
  <form method="post" action="graph.php">
   <select name="annee" id="annee">
    <optgroup label="2014">
     <option value="safege2014">12014</option>
     <option value="ld2014">22014</option>
    </optgroup>
    
    <optgroup label="2015">
     <option value="ld2015" selected>12015</option>
    </optgroup>
   </select>
   <input type="submit" value="Envoyer" />
  </form>
  </div>
 </body>
</html>

<?php

require_once 'phplot/phplot.php';

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=ied;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM possesseur = \'' . $_POST['annee'] . '\'');

$datas = array_map(function($data){
    return array('', $data['id'], $data['montant']);
}, $response->fetchAll());

$response->closeCursor();


$plot = new PHPlot(800, 600);

$plot->SetFailureImage(False);
$plot->SetPrintImage(False);

$plot->SetPlotType('lines');
$plot->SetDataType('data-data');
$plot->SetDataValues($datas);

$plot->DrawGraph();

?>
<img id="graph" src="<?php echo $plot->EncodeImage();?>" alt="Image"> 

Et voici la structure de ma base
db=ied -> structure des tables :
# Nom Type
1 id(Primaire) int(11)
2 montant int(11)
Nom des tables : safege2014, ld2014, ld2015
Ma requête est concaténé mais c'était pour les tests je la préparerai plus tard.
$response = $bdd -> prepare("SELECT * FROM annee = ?");
$response -> execute(array($_POST['annee']));

Et voici l'erreur que sa affiche :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''ld2015'' at line 1' in C:\xampp\htdocs\ied\graph.php:13

Cdlt Théo B
Théo B

3 réponses

Utilisateur anonyme
25 août 2015 à 15:37
Bonjour

Ta requête est incorrecte.
SELECT * FROM annee = ?
ne veut rien dire. Une requête ressemble plutôt à
SELECT * FROM matable WHERE annee = ?
.
1
Ah d'accord mais moi je voulais faire varier justement la table c'est impossible de le faire donc ?
0
Utilisateur anonyme
25 août 2015 à 21:13
Non, tu peux très bien le faire :

$matable="nom de ma table";
$requete='SELECT * FROM '.$matable.' WHERE annee = ?';
0
Utilisateur anonyme
26 août 2015 à 00:06
<?php

require_once 'phplot/phplot.php';

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=ied;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->query("SELECT * FROM ".$_POST['annee']."")

$datas = array_map(function($data){
    return array('', $data['id'], $data['montant']);
}, $response->fetchAll());

$response->closeCursor();


$plot = new PHPlot(800, 600);

$plot->SetFailureImage(False);
$plot->SetPrintImage(False);

$plot->SetPlotType('lines');
$plot->SetDataType('data-data');
$plot->SetDataValues($datas);

$plot->DrawGraph();

?>
<img id="graph" src="<?php echo $plot->EncodeImage();?>" alt="Image"> 
J'ai compris mon erreur de syntaxe grâce a ce forum : ( https://openclassrooms.com/forum/sujet/affectation-d039-une-varaible-au-nom-de-la-table-29775 ) mais j'ai toujours une erreur : Parse error: syntax error, unexpected '$datas' (T_VARIABLE) in C:\xampp\htdocs\ied\graph.php on line 15
0
jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 4 739
26 août 2015 à 00:43
Bonjour,
Ligne 13 .. il te manque un ";"
0
Utilisateur anonyme > jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025
26 août 2015 à 08:43
Ah oui mince, dsl j'avais pas fait gaffe, merci quand même :D
Cdlt Théo B
0