Calcul en php [Fermé]

Messages postés
7
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
8 mai 2010
- - Dernière réponse : Neliel
Messages postés
6197
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
Afficher la suite 

3 réponses

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


Nassou22
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 ?
Neliel
Messages postés
6197
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1342 -
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>'];
Nassou22
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!
Neliel
Messages postés
6197
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1342 -
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...
Nassou22
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
1193
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
487
0
Merci
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";
Nassou22
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
Neliel
Messages postés
6197
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1342 -
Je pense qu'il voulais faire:

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

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