Calcul en php

Je bloque pour un calcul. J'ai fait un php de réservation (je suis un cinéma et les gens peuvent réserver leur place),tout fonctionne corectement,maintenant jaimerai crée un php dont je défini une variable $chiffre avec la valeur 141 ,ensuite je veux prendre l'id max(en Auto-Increment)(pour le moment ma table a 2 réservation de client) et je voudrais donc soustraire $chiffre à l'id et afficher le résultat,puis le passé en pourcentage.
Le principe étant d'indiquer combien de place son encore disponible et faire un taux de remplissage
J'ai tapé sa le code suivant :

<?php
$chiffre = $_POST['141'];
{
include "connexionbase.php";
$sql= "select max(id) - $chiffre from reservation";
$result= mysql_query($sql);
while($num=mysql_fetch_array($result))
{
echo $num;}
mysql_close();
}

?>

Sauf que,sa a pas lair de fonctionner.. J'ai crée ce code en mélangeant plusieurs éléments données en cours,mais bon..
Need help

3 réponses

  1. Contributeur
    Bonjour,

    $sql= "select max(id) - $chiffre from reservation";

    Ce n'est pas bon ça...

    max(id) c'est quoi ? Il n'y a pas de variable dans cette instruction...

    0
    1. max(id) correspond a un élément de ma data base,1er champ qui sapel "id" et qui est en auto-increment,donc quand les gens réserve sa liste tout seul au niveau des chiffres.
      Sa fonctionnai dans un exemple de cours ^^ donc c'est censé fonctionner ici aussi non ?
      0
    2. Contributeur
      Ah ok... je connaissais pas.

      Dans ce cas, tu remplace
      $chiffre = $_POST['141'];

      par

      $chiffre = 141;

      $_POST sert uniquement à récupérer des variables envoyés par formulaire avec la méthode du même nom.

      Pour la requête SQL, ça ne peut pas fonctionner pour deux raisons:

      1. Tu ne peux pas mettre le nom d'une variable entre guillemet et espéré qu'elle soit prix en compte.

      exemple:

      On ne fait pas:

      echo "le prix est de $prix euro";

      mais

      echo "le prix est de ".$prix."euro";

      2. Tout ce qui a entre SELECT et FROM doit correspondre à un nom de champ ou une instruction mysql comme count ou max()...

      En somme, tu dois présenter ta requête en deux temps... tu récupère d'abord le max(id) en faisant:

      $req1="select max(id) from reservation";
      $res1=mysql_query($req1);
      $idmax1=mysql_result($req1,0,"max(id)");
      echo $idmax1;

      et ensuite tu fais le calcul:

      $nouvel_id = $idmax - $chiffre;

      Et ensuite une nouvelle requête:

      $req2 = "select * from reservation where id=".$nouvel_id."";
      $res2 = mysql_query($req2);
      $don = mysql_fetch_array($res2);

      ensuite tu accèdes au champ en faisant: $don['<nom_du_champ>'];
      0
    3. J'ai essayé ce que tu m'a conseilé,sa fonctionne pas non plus ^^"
      La je fais des test depuis tout à l'heure ,mais j'men sor pa!
      0
    4. Contributeur
      met

      or die(mysql_error()) derrière chaque mysql_query...

      $res1 = mysql_query($req1) or die(mysql_error());

      $res2 = mysql_query($req2) or die(mysql_error());

      Il va t'afficher l'erreur qui bloque la requête...
      0
    5. Ok je vais essayer sa. Merci de ton aide.
      Je te dirais si sa a fonctionner dans la soirée.
      0
  2. Bonjour,

    Dans un premier temps, je pense qu'il y a un souci avec l'affectation de $chiffre.

    Il me semble que $_POST['141'] n'ets pas correct.

    il serait plus simple de mettre $chiffre=141;

    Ensuite, pour des raisons de lisibilité, il vaudrait mieux mettre :

    $sql= "select max(id) - ".$chiffre." from reservation";
    0
    1. J'ai testé ce que tu m'a dit,sa fonctionne pas :S
      Sa affiche sur la page " Array " ,uniquement sa. Donc je sais pas
      0
    2. Contributeur
      Je pense qu'il voulais faire:

      $chiffre=141;
      0
  3. Salut,

    Avant de passer par php, ta requête fonctionne directement sur mysql ? (en remplacant $chiffre par 141)
    0
    1. Contributeur
      C'est pourquoi je lui ai dit de rajouter le "die(mysql_error())", si c'est un problème de requête, la fonction le dira...
      0