Calcul en php

Fermé
Nassou22 Messages postés 7 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 8 mai 2010 - 26 avril 2010 à 15:01
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 - 26 avril 2010 à 17:05
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
A voir également:

3 réponses

Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 687
26 avril 2010 à 15:06
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
Nassou22 Messages postés 7 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 8 mai 2010
26 avril 2010 à 15:19
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
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 687
26 avril 2010 à 15:49
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
Nassou22 Messages postés 7 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 8 mai 2010
26 avril 2010 à 16:25
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
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 687
26 avril 2010 à 16:30
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
Nassou22 Messages postés 7 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 8 mai 2010
26 avril 2010 à 16:47
Ok je vais essayer sa. Merci de ton aide.
Je te dirais si sa a fonctionner dans la soirée.
0
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
26 avril 2010 à 15:12
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
Nassou22 Messages postés 7 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 8 mai 2010
26 avril 2010 à 15:17
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
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 687
26 avril 2010 à 15:18
Je pense qu'il voulais faire:

$chiffre=141;
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
26 avril 2010 à 16:56
Salut,

Avant de passer par php, ta requête fonctionne directement sur mysql ? (en remplacant $chiffre par 141)
0
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 687
26 avril 2010 à 17:05
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