Calcul en php [Fermé]

Signaler
Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
-
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

Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 488
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...


Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010

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 ?
Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 488
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>'];
Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010

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!
Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 488
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...
Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010

Ok je vais essayer sa. Merci de ton aide.
Je te dirais si sa a fonctionner dans la soirée.
Messages postés
1190
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
515
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";
Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010

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
Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 488
Je pense qu'il voulais faire:

$chiffre=141;
Messages postés
1052
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
64
Salut,

Avant de passer par php, ta requête fonctionne directement sur mysql ? (en remplacant $chiffre par 141)
Messages postés
6118
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 488
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...