Vérification d'une valeur avant enregistrement

Petit nouveau ! | 8 Messages

04 nov. 2013, 13:30

Bonjour,

J'ai besoin d'un coup de main pour un enregistrement dans mon script php, je ne sais pas comment procéder!! j'ai tenté plusieurs tests mais je n'y arrive pas :(

j'ai un script d'utilisation des véhicules et je souhaite que quand un utilisateur restitue le véhicule, la l'utilisateur saisi le km lors de la restitution, et que le script vérifie que le kilométrage est supérieur a l'ancienne valeur déja dans la base, mais en fonction du bon véhicule (car plusieurs véhicules)

je vérifie déja que les champs sont bien remplis, mais comment savoir que le champs "km" est supérieur a l'ancienne valeur saisie lors de la restitution de l'ancien utilisateur ?

les champs dans ma base sont ID, km, dated,datef,comment, actif
<?php
include('base.php');
include('../head.php');

$date = date("Y-m-d");
$heure = date("H:i:s");

//$idmission=$_POST["idmission"];
$km=$_POST["km"];
$qte=$_POST["qte"];
$comment=$_POST["comment"];


// On vérifie si les champs sont vides
if(empty($km) OR empty($qte) OR empty($comment))
    {
    echo '<br><br><center><font color="red">Attention, Tous les champs doivent être remplis !</font><br><br>
<FORM>
<INPUT type="button" value="Précédent" onclick="history.back()">
</FORM>  <br><br></centre>';
    } 

// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    { 

echo "test OK";

mysql_close();
}  
Merci a vous :)

Max

Mammouth du PHP | 2278 Messages

04 nov. 2013, 13:58

kilo est l'ancien kilométrage
500 pourrait être une variable
$req = "(select $new_kilo > (select kilo from bidule))";
(select 5000 > (select kilo from bidule));
Ceci fonctionne (à adapter avec des variables au lieu de 5000):
UPDATE bidules SET rest = 5000 WHERE id = 1 AND (kilo < 5000 OR rest IS NULL);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Invité
Invité n'ayant pas de compte PHPfrance

04 nov. 2013, 15:42

merci pour ta réponse, mais comment mettre en forme cette explication avec mon script ? je capte pas ?

Petit nouveau ! | 8 Messages

04 nov. 2013, 15:53

un truc dans le genre non ?

$km=$_POST["km"];
$qte=$_POST["qte"];
$comment=$_POST["comment"];
$control = "(select $km > (SELECT  km_parcouru FROM mission))";
$req = mysql_query($control) or die('Erreur SQL !<br>'.$control.'<br>'.mysql_error());


 

Mammouth du PHP | 2278 Messages

04 nov. 2013, 16:13

On va faire progressif avec une autre solution:
On suppose que tu connais une valeur pour $id (le numéro de la mission)
Teste ca:
$kilo_ancien = "SELECT  km FROM mission where ID = $id";
print "ancien kilométrage $kilo_ancien";
et reposte pour avoir la suite (que ça marche ou pas)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

04 nov. 2013, 16:20

Bonjour,

Je pense qu'une lecture préalable comme le propose sirakawa est nécessaire. Cela permet de contrôler le nombre de km, mais aussi que l'id n'a pas été trafiqué ou supprimer, que le véhicule est actf...

Petit nouveau ! | 8 Messages

04 nov. 2013, 17:50

merci :)

Voila ma requete :
$kilo_ancien = "SELECT KMPARCOURUMISSION FROM mission WHERE IDMISSION = ".$_GET['idmission']."";
print "ancien kilométrage $kilo_ancien";
resultat :
ancien kilométrage SELECT KMPARCOURUMISSION FROM mission WHERE IDMISSION = 114 

Mammouth du PHP | 2278 Messages

04 nov. 2013, 18:41

merci :)

Voila ma requete :
$kilo_ancien = "SELECT KMPARCOURUMISSION FROM mission WHERE IDMISSION = ".$_GET['idmission']."";
print "ancien kilométrage $kilo_ancien";
resultat :
ancien kilométrage SELECT KMPARCOURUMISSION FROM mission WHERE IDMISSION = 114 
Non, après un SELECT,, on n'obrtient pas directement le résultat :
aussi::
/*comme ça on peut afficher la requete en cas d'erreur*/
$requete =  "SELECT KMPARCOURUMISSION FROM mission WHERE IDMISSION = ".$_GET['idmission']."";
/*$resultat est une ressource qui sera exploitée plus loin (il vaut false si la requête n'a pas de résultat*/
$resultat =mysql_query ($requete);
if ($resultat !== false)
{
$ligne = mysql_fetch_assoc($resultat);
}
else
{
/*on pourrait mettre ici un traitement d'erreur mysql*/
}
print_r($ligne);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 8 Messages

05 nov. 2013, 11:12

a ok, voila le résultat :

Array ( [KMPARCOURUMISSION] => 12000 )

Mammouth du PHP | 2278 Messages

05 nov. 2013, 14:06

$ancien_kilo = $ligne['KMPARCOURUMISSION' ];
et après tu devrais pouvoir te débrouiller
if ()
{

}
else
{

}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD