commande onclick/pb dates | | |
je ne sais pas si c'est bien l'endroit où poser ces questions, mais j'ai 2
autres petits problèmes à régler. Je débute en php, vous allez peut-être
trouver les questions faciles, tant mieux dans ce cas:
1) dans ma table transac (transactions) j'ai un champ bordereau qui vaut
NULL ou 1 qui permet de savoir si la transaction a été relevée par la banque
ou non. J'ai mis en place dans le fichier php d'affichage des transaction
ceci:
<? if ($row["bordereau"]==1) {?>
<INPUT type=checkbox name=valide value="caseacocher" checked>
<? }
else {
?>
<INPUT type=checkbox name=valide value="caseacocher" unchecked>
<? } ?>
je voudrais qu'à chaque clique sur le bouton, le champ bordereau soit ajusté
(ie si la case est cochée le champ vaut 1, si la case est décochée le champ
vaut 0). Sûrement faut-il utiliser la commande onclick, mais où la placer?
quels arguments mettre? placer du code dans une page séparée?
2) voilà et le deuxième problème... je voudrais pouvoir filtrer mes données
pour n'afficher que celle d'un mois choisi...
par exemple pour afficher les opérations sur le compte CCP j'emploie une
requête de ce type
$requeteMathieu="select * from transac where compte='LaPosteCCP' order by
date";
quelle requête employer pour par exemple sélectionner les opérations de
novembre 2006???
Voilà, j'espère que mon message n'est pas trop long
Cordialement
Mathieu | | | | re: commande onclick/pb dates
>1) faut-il utiliser la commande onclick?
Pas besoin, le naviguateur donne une valeur de 1 ou 0 automatiquement
Suivant la soumission du formulaire tu lis :
if($_POST['valide'] =='1'){
// valide est coché
}else{
// valide n'est pas coché
} Quote:
2) je voudrais pouvoir filtrer mes données
mysql:
"select * from transac where compte='LaPosteCCP' and YEAR(ma_date) =
'2006' and MONTH(ma_date) = '11' order by ma_date"; | | | | re: commande onclick/pb dates
Salut Zorro,
alors, ok pour n°2
mais pour n°1,
ce que je voulais à la base, c'était en fait que le formulaire soit soumis
dés qu'on clique sur le bouton, sans avoir à cliquer sur un bouton submit,
c'est à dire, que la modification soit prise en compte seulement en cochant
ou décochant la case. Crois-tu que ce soit possible?
éventuellement, je veux bien créer une autre page php qui modifie la base de
données avec
@ $db=mysql_pconnect("localhost","root");
mysql_select_db("compta");
etc...
ça je sais faire, mais que faut-il mettre exactement dans cette page php, et
comment faire pour qu'elle ne s'affiche pas à l'écran??
Merci
Mathieu
"zorro" <myahact@yahoo.caa écrit dans le message de news: 1167878947.762801.126030@s34g2000cwa.googlegroups. com... Quote:
>1) faut-il utiliser la commande onclick?
Pas besoin, le naviguateur donne une valeur de 1 ou 0 automatiquement
Suivant la soumission du formulaire tu lis :
if($_POST['valide'] =='1'){
// valide est coché
}else{
// valide n'est pas coché
} Quote:
2) je voudrais pouvoir filtrer mes données
mysql:
"select * from transac where compte='LaPosteCCP' and YEAR(ma_date) =
'2006' and MONTH(ma_date) = '11' order by ma_date"; | | | | re: commande onclick/pb dates
// Dans ce cas, ca te prends "onclick" comme tu pensais :
<form action="caisse.php" method="post">
Chocolat
<input type="radio" name="saveur" onclick="soumettre('chocolat')">
Vanille
<input type="radio" name="saveur" onclick="soumettre('vanille')">
<input type="hidden" name="choix" id="choix">
<form>
<script>
function soumettre(qqchose){
document.getElementById('choix').value = qqchose;
var f = document.forms[0];
f.submit();
}
</script>
// Dans caisse.php :
if($_POST['choix']=='chocolat'){
mysql_query("insert chocolat...");
$redirection = 'cinema.php';
}else{
$redirection = 'snackbar.php?erreur=pas_de_vanille';
}
header('location: ' . $redirection); | | | | re: commande onclick/pb dates
a vrai dire, tu peux meme te passer de "choix" :
<input type="radio" name="saveur" value="chocolat"
onclick="soumettre()">
<input type="radio" name="saveur" value="vanille"
onclick="soumettre()">
..
..
..
function soumettre(){
var f = document.forms[0];
f.submit();
}
..
..
..
if($_POST['saveur']=='chocolat')... | | | | re: commande onclick/pb dates
merci Zorro,
je vais essayer ta solution dés que je pourrais
là il est un peu tard, j'ai déjà bien travaillé, mais j'ai un autre petit
problème de formulaire encore...
Le but (atteint) c'est d'afficher pour chaque mois du passé le bilan
comptable. J'ai utilisé $row["sum(montant)"], et tout va bien. Les noms des
mois et des années sont affichés dans un tableau avec les sommes.
Seulement voilà sur chaque ligne j'ai placé un bouton qui devrait permettre
d'ouvrir une page php avec les opérations du mois correspondant. $filtre est
une variable qui est employée dans un switch de affichagetransactions.php:
case=3 qui est employé ici, ça devrait afficher les opérations du mois en
cours.
Voilà, alors le problème c'est que quand ce sont des données d'une base
mysql qui sont affichés, des commandes du type
<input type=hidden name=lieu value=<?echo $row["lieu"]?>ça permet bien de
renvoyer le lieu de la ligne.
Mais ici
<input type=hidden name=moisetude value=<?echo $moisetude?>>, ça va renvoyer
la valeur de moisetude pour la dernière ligne... donc problème...
Alors, en fait, je suis parti du mois courant, et après avec la commande
date("Y",mktime(0,0,0,$moisetude ,0,$anneeetude) à chaque fois je peux
calculer le mois et l'année d'avant (la difficulté c'était quel est le mois
avant janvier). ça ça marche bien également.
Alors voici une partie (qui ne marche pas) d'un code qui ne marche pas. En
fait au début j'avais pas introduit de variables i et j, j'ai compliqué le
truc inutilement, mais j'ai pas gardé ce que j'avais fait avant, disons que
c'est une version brouillon pour donner l'idée du problème, mais comme il me
faudrait juste l'idée de la solution...
(mes questions sont à la fin)
<?
$requeteMathieu="select sum(montant) from transac where
MONTH(datetransac)=$mois0 and YEAR(datetransac)=$annee0";
$result=mysql_query($requeteMathieu);
$row=mysql_fetch_array($result);
echo "<tr><td>".$nom_mois[$mois0]."
".$annee0.":<td><h2>".$row["sum(montant)"]." ?<td>(ce mois-ci)</tr>";
$requeteMathieu="select sum(montant) from transac where
MONTH(datetransac)=$mois1 and YEAR(datetransac)=$annee1";
$result=mysql_query($requeteMathieu);
$row=mysql_fetch_array($result);
echo "<tr><td>".$nom_mois[$mois1]."
".$annee1.":<td><h2>".$row["sum(montant)"]." ?<td>(le mois dernier)</tr>";
$requeteMathieu="select sum(montant) from transac where
MONTH(datetransac)=$mois2 and YEAR(datetransac)=$annee2";
$result=mysql_query($requeteMathieu);
$row=mysql_fetch_array($result);
echo "<tr><td>".$nom_mois[$mois2]."
".$annee2.":<td><h2>".$row["sum(montant)"]." ?</tr>";
$mois[0]=$mois2;
$annee[0]=$annee2;
$i=0;
echo $annee[0];
?>
<?
while ($annee[$j]>=2004)
{$annee[$i]=date("Y",mktime(0,0,0,$mois[$i-1] ,0,$annee[$i-1]));
$mois[$i]=date("n",mktime(0,0,0,$mois[$i-1],0,$annee[$i-1]));
$j=$i--;
$requeteMathieu="select sum(montant) from transac where
MONTH(datetransac)=$mois[$j] and YEAR(datetransac)=$annee[$j]";
$result=mysql_query($requeteMathieu);
$row=mysql_fetch_array($result);
echo "<tr><td>".$nom_mois[$mois[$i]]." ".$annee[$i].":
<td><h2>".$row["sum(montant)"]." ?";
$i++;
?>
<form action="affichagetransactions.php" name="afficher" method=post>
<input type=hidden name=filtre value='3'>
<input type=hidden name=moisetude value=<?echo $moisetude?>>
<input type=hidden name=anneeetude value=<?echo $anneeetude?>>
<td colspan=100><input type=submit value="afficher"></td>
</tr>
<?}?>
</table>
Voilà donc les questions:
1) Quelle est la syntaxe pour $annee[$i-1] qui ne fonctionne pas??? faut-il
introduit $j=$i-1 ???
2) Quelle solution au problème? c'est à dire que ce soit la donnée du mois
et de l'année de la ligne courant qui sont passées dans post et non pas les
données de la dernière ligne?
Cordialement
Mathieu | | | | re: commande onclick/pb dates
une solution qui fait une seule requete sql, les resultats sont tries
<?php
$sql="
SELECT
SUM(montant),
MONTH(datetransac),
YEAR(datetransac)
FROM
transac
GROUP BY
MONTH(datetransac),
YEAR(datetransac)
ORDER BY
YEAR(datetransac),
MONTH(datetransac)";
$result = mysql_query($sql);
$filtre = 3;
echo '<table border=1>';
while($row=mysql_fetch_array($result)){
$mois = $row['MONTH(datetransac)'];
$annee = $row['YEAR(datetransac)'];
$somme = $row['SUM(montant)'];
echo "<tr><td>$mois $annee</td><td>$somme</td><td><button
onclick='details($mois,$annee,$filtre);'>Details</button></td></tr>";
}
echo '</table>';
?>
<form method="post" action="affichagetransactions.php">
<input type="hidden" name="mois" id="mois">
<input type="hidden" name="annee" id="annee">
<input type="hidden" name="filtre" id="filtre">
</form>
<script>
function details(mois,annee,filtre){
document.getElementById('mois').value=mois;
document.getElementById('annee').value=annee;
document.getElementById('filtre').value=filtre;
document.forms[0].submit();
}
</script>
pour reutiliser $results sans passer par la bd tu fais
mysql_data_seek($results,0);
while($row=mysql_fetch_array($result)){...}
j'envoie l'adresse pour le cheque ;-) | | | | re: commande onclick/pb dates
Ok, je viens de garder, ça fonctionne impeccable
à part que je ne comprends pas à quoi sert la fin, le bouton onclick et la
fonction details... à quoi sert document.getElementById?
perso, j'ai utilisé
<td colspan=100><input type=submit value="afficher"></td>
et ça marche très bien...
Thank you
"zorro" <myahact@yahoo.caa écrit dans le message de news: 1167972763.012455.73920@s34g2000cwa.googlegroups.c om... Quote:
une solution qui fait une seule requete sql, les resultats sont tries
>
<?php
>
$sql="
SELECT
SUM(montant),
MONTH(datetransac),
YEAR(datetransac)
FROM
transac
GROUP BY
MONTH(datetransac),
YEAR(datetransac)
ORDER BY
YEAR(datetransac),
MONTH(datetransac)";
>
$result = mysql_query($sql);
$filtre = 3;
>
echo '<table border=1>';
while($row=mysql_fetch_array($result)){
>
$mois = $row['MONTH(datetransac)'];
$annee = $row['YEAR(datetransac)'];
$somme = $row['SUM(montant)'];
>
echo "<tr><td>$mois $annee</td><td>$somme</td><td><button
onclick='details($mois,$annee,$filtre);'>Details</button></td></tr>";
>
}
echo '</table>';
>
?>
>
<form method="post" action="affichagetransactions.php">
<input type="hidden" name="mois" id="mois">
<input type="hidden" name="annee" id="annee">
<input type="hidden" name="filtre" id="filtre">
</form>
>
<script>
function details(mois,annee,filtre){
document.getElementById('mois').value=mois;
document.getElementById('annee').value=annee;
document.getElementById('filtre').value=filtre;
document.forms[0].submit();
}
</script>
>
>
pour reutiliser $results sans passer par la bd tu fais
mysql_data_seek($results,0);
while($row=mysql_fetch_array($result)){...}
>
j'envoie l'adresse pour le cheque ;-)
>
| | | | re: commande onclick/pb dates
En fait, je ne comprends pas très bien...
Si je place ce code dans mon premier fichier:
<form action="caisse.php" method="post">
Vanille<input type="radio" name="saveur" onclick="soumettre('vanille');">
Chocolat<input type="radio" name="saveur" onclick="soumettre('chocolat');">
Fraise<input type="radio" name="saveur" onclick="soumettre('fraise');">
</form>
<script>
function soumettre(qqchose){
var f = document.forms[0];
document.getElementById('saveur').value = qqchose;
f.submit(); }
</script>
et ça dans le deuxième:
<?
echo "saveur:".$saveur."<br>";
if($_POST['saveur']=='chocolat'){
echo "coucou choco";
// mysql_query("insert chocolat...");
// $redirection = 'cinema.php';
}else{
echo "coucou vanille";
//$redirection = 'snackbar.php?erreur=pas_de_vanille';
}
//header('location: ' . $redirection);
?>
pour chocolat et fraise, la valeur de saveur renvoyée est: On!!!
Comment expliquer ce miracle???
Merci
cordialement
Mathieu
"zorro" <myahact@yahoo.caa écrit dans le message de news: 1167925364.238639.194010@i15g2000cwa.googlegroups. com... Quote:
a vrai dire, tu peux meme te passer de "choix" :
>
<input type="radio" name="saveur" value="chocolat"
onclick="soumettre()">
<input type="radio" name="saveur" value="vanille"
onclick="soumettre()">
.
.
.
function soumettre(){
var f = document.forms[0];
f.submit();
}
.
.
.
if($_POST['saveur']=='chocolat')...
>
| | | | re: commande onclick/pb dates
bon, j'y reviens :-)
enfait, je crois que je n'ai pas compris la signification de getElementById.
j'ai trouvé un peu de doc sur le web, mais j'ai pas tout compris...
peut-être pourriez-vous m'éclairer sur l'exemple plus simple suivant:
<form action="caisse2.php" method="post">
validé par la banque?<input type="checkbox" name="bordereau"
id="bordereau" onclick="soumettre();">
</form>
<script>
function soumettre(){
var f = document.forms[0];
//document.getElementById('bordereau').value = qqchose;
f.submit(); }
</script>
et le fichier caisse2.php:
<?
echo "bordereau:".$bordereau."<br>";
?>
Le but est ici simplement d'écrire si le checkbox est activé ou non quand on
clique dessus.
En effet après, il me sera facile de mettre la base de données à jour en
fonction de sa valeur.
Voilà, fini pour ce soir, je suis fatigué!
Mathieu | | | | re: commande onclick/pb dates
Mathieu wrote: Quote:
En fait, je ne comprends pas très bien...
Si je place ce code dans mon premier fichier:
tu as change mon code dans la fonction soumettre(),
c'est pas 'saveur' mais 'choix' qui etait lu sur le serveur Quote:
>
>
<form action="caisse.php" method="post">
Vanille<input type="radio" name="saveur" onclick="soumettre('vanille');">
Chocolat<input type="radio" name="saveur" onclick="soumettre('chocolat');">
Fraise<input type="radio" name="saveur" onclick="soumettre('fraise');">
</form>
>
<script>
function soumettre(qqchose){
var f = document.forms[0];
document.getElementById('saveur').value = qqchose;
f.submit(); }
</script>
>
>
et ça dans le deuxième:
>
<?
echo "saveur:".$saveur."<br>";
if($_POST['saveur']=='chocolat'){
echo "coucou choco";
// mysql_query("insert chocolat...");
// $redirection = 'cinema.php';
}else{
echo "coucou vanille";
//$redirection = 'snackbar.php?erreur=pas_de_vanille';
}
>
| | | | re: commande onclick/pb dates
Mathieu wrote: Quote:
Ok, je viens de garder, ça fonctionne impeccable
à part que je ne comprends pas à quoi sert la fin, le bouton onclick et la
fonction details... à quoi sert document.getElementById?
perso, j'ai utilisé
<td colspan=100><input type=submit value="afficher"></td> getElementById est utile dans le cas ou par exemple tu veux envoyer une
valeur par le biais d'un INPUT de type "hidden", mais on peut
generalement s'en passer pour les autres input car l'utilisateur peut y
entrer une valeur lui meme.
Dans mon exemple ou j'utilise 3 input hidden, ca permet d'envoyer des
valeurs qui correspondent au mois clique. Mais tu peux mettre des
boutons radios a la place - ils y a plusieurs facons d'arriver a une
meme fin. |  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,510 network members.
|