Créer des conditions...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Créer des conditions...

par ju3979 » 06 août 2007, 11:24

J'ai créé une autre page htm avec un champ à remplir par l'utiisateur. cette variable (nombre) va dans une base qui se nomme test

Juque la pas de problème

Ensuite je veux modifier mon script php précédent pour que si mon nombre total d'enregistrement est supérieur à la variable nombre alors la date de la saisie = date+1

voila la partie de mon script que j'ai modifié:
$nombre="SELECT nombre FROM test";

if($nb>=$nbMax || $now>=$HeureLimite) $DateLivraison = date('Y-m-d', strtotime('+1 day')); 

Mais quand je met ça dés que je saisie quelquechose dans mon formulaire la date se met à date+1

Pouvez vous m'aider

D'avance merci





C'est bon j'ai trouvé

voici la partie de mon script en question (si ça peut aider d'autres personnes)
$today = date('Y-m-d');
$sql = "SELECT date FROM livraisons WHERE date ='$today'"; 
$query=mysql_query($sql); 
$nb = mysql_num_rows($query);

$sql2="SELECT nombre FROM test";
$requete = mysql_query($sql2);
$donnees = mysql_fetch_array($requete); 
 

$now = mktime(date('H'), date('i'), 0, date('m'), date('d'), date('Y')); 
$HeureLimite = mktime(18, 30, 0, date('m'), date('d'), date('Y')); 

if($nb>=$donnees['nombre'] || $now>=$HeureLimite) $DateLivraison = date('Y-m-d', strtotime('+1 day')); 
else $DateLivraison = date('Y-m-d'); 
La dernière chose que je voudrais faire c'est que sur la page html ou l'utilisateur arrive pour remplir le formulaire il y est un compteur dynamique lui indiquant (en fonction de la valeur "nombre" saisie dans une autre page par un utilisateur prècis) combien il peut encore saisir de formulaire sur la journée
C'est en fait faire la soustraction de $donnees['nombre'] - $nb

Pouvez vous m'aider la dessus

D'avance merci

par d0m » 06 août 2007, 08:33

il suffit de remplacer 50 par une variable qui prendra comme valeur le champ saisi, pour ce qui est de l'affichage des saisies encore possibles, tu as le count de ta base et le nombre de saisie max, avec une simple différence ça devrait le faire.

par ju3979 » 05 août 2007, 16:53

Je voudrais permettre à un utilisateur particulier de modifier le chiffre 50 dans ma condition

if($nb>=50

Via une zone de sasie il pourra mettre n'importe quel nombre entier

Ensuite en fonction du nombre saisie je voudrais que sur la page de mon formulaire il y est un compteur qui indique aux utilisateurs le nombre de saisie possible pour le jour en cours

voila la partie du script concerné:
$today = date('Y-m-d'); 
$sql = "SELECT date FROM livraisons WHERE date ='$today'"; 
$query=mysql_query($sql); 
$nb = mysql_num_rows($query); 


$now = mktime(date('H'), date('i'), 0, date('m'), date('d'), date('Y')); 
$HeureLimite = mktime(15, 30, 0, date('m'), date('d'), date('Y')); 

if($nb>=50 || $now>=$HeureLimite) $DateLivraison = date('Y-m-d', strtotime('+1 day')); 
else $DateLivraison = date('Y-m-d'); 

$sql = "INSERT INTO livraisons VALUES ('', '".$civilite."', '".$nom."', '".$prenom."', '".$adresse."', '".$ville."', '".$codepostal."', '".$telephone."', '".$sqldocumentsafournir."', '".$conseiller."', '".$rendezvous."', '".$remarque."', '".$DateLivraison."')"; 
$res = mysql_query($sql); 


if ($res) { 
echo $msg_ok; 
} else { 
echo mysql_error(); 
} 

} 
D'avance merci pour votre aide

par d0m » 02 août 2007, 10:59

tu ne peux pas mettre le code directement comme ça dans une page php,
le code que Truc t'as donné est une requête SQL, elle doit être traitée par des fonctions php de base de données MySQL.
Regarde par ici

par ju3979 » 02 août 2007, 10:50

la ligne 45 correspond au code ci-dessus et je ne vois pas d'erreur de ponctuation dans ce code

par d0m » 02 août 2007, 10:04

parse error signifie qu'il y a un problème au niveau de l'écriture des instructions :
il manuqe un ; ou une parenthèse, ou une parenthèse de trop...
vérifie bien que toutes tes instructions se termine bien par un ; et que toutes tes parenthèses ouvertes sont refermées.
Le numero de ligne est donnée,ça ne devrait pas être trop difficile d'identifier l'erreur.

par ju3979 » 02 août 2007, 09:45

Bonjour

Tout d'abord un grand merci pour ton aide

J'ai mis ton code dans mon scrip php mais j'ai l'erreur suivante: Parse error: parse error, unexpected T_IF in c:\program files\easyphp1-7\www\traitement.php on line 45

c'est mon premier script php je suis un peu perdu

peux tu m'aider d'avantage

D'avance merci

par Truc » 01 août 2007, 22:52

hmm... c'est ton affaire mais tu va vite avoir un sacré cafouillage voire des jours d'avance:
Si tu dépasse 50 enregistrements le 1er jour (J) tu reportes le reste sur le jour suivant (J+1).
Si maintenant J+1 a plus de 50 enregistrements tu passes à J+2.. :?

Sinon tu peux procéder par étapes.
1. 1er chargemet du formulaire tu récupères la date avec laquelle l'info doit être enregistrée :

Code : Tout sélectionner

SELECT IF(count(date) < 50, date , DATE_ADD(date, INTERVAL 1 DAY)) as date_ok FROM table WHERE date >= NOW() GROUP BY date ORDER BY date DESC LIMIT 1
Cette requête devrait retourner la date avec laquelle l'enregistrement doit être effectué.
Valable pour un champ date de type "DATE" (pas DateTime sinon le group by ne servirait pas à grand chose).
On regroupe les données par date et on compte (count()) s'il y n'y a pas encore le compte d'enregistrements pour cette date on la prend sinon on ajoute un jour à cette même date (INTERVAL 1 DAY).
[Si aucune date n'est retournée alors c'est la date du jour qu'il faut prendre]
[Effectue des test à petite échelle avant :wink: ]
Ensuite je voudrais de la même maniere que à partir de 15h30 tous les enregistrement saisient soit datés à la date du lendemain
T'es fonctionnaire ? On ne le dira à personne que tu fais des heures sup :lol:

l2. ors du chargement tu récupères l'heure actuelle avec date() s'il est plus de 15h30 alors tu ajoutes un jour à la date précédente.

3. Et enfin tu places cette date dans un champ caché qui sera utilisé pour l'enregistrement

(Dans l'idée c'est ça)

Créer des conditions...

par ju3979 » 01 août 2007, 21:46

Bonjour

J'ai créé un formulaite en html avac un script Php qui vient alimenter ma base de donnée sql (mysql avec easyphp)
Jusque la tout fonctionne

Maintenant je souhaite mettre des conditions
Tout d'abord je souhaite limiter mon nombre d'enregistrement à 50/jour si ça dépasse alors le champ date de ma base de donnée doit automatiquement passer à la date du jour suivant.

Ensuite je voudrais de la même maniere que à partir de 15h30 tous les enregistrement saisient soit datés à la date du lendemain

Pouvez me donner quelques pistes

D'avance merci