473,405 Members | 2,272 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,405 software developers and data experts.

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


Jan 3 '07 #1
11 2236
>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é
}

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";

Jan 4 '07 #2
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" <my*****@yahoo.caa écrit dans le message de news:
11**********************@s34g2000cwa.googlegroups. com...
>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é
}

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";

Jan 4 '07 #3
// 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);

Jan 4 '07 #4
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')...

Jan 4 '07 #5
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

Jan 5 '07 #6
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 ;-)

Jan 5 '07 #7
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" <my*****@yahoo.caa écrit dans le message de news:
11*********************@s34g2000cwa.googlegroups.c om...
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 ;-)

Jan 5 '07 #8
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" <my*****@yahoo.caa écrit dans le message de news:
11**********************@i15g2000cwa.googlegroups. com...
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')...

Jan 5 '07 #9
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


Jan 5 '07 #10

Mathieu wrote:
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

>

<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';
}
Jan 7 '07 #11

Mathieu wrote:
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.

Jan 7 '07 #12

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Bernard Guennoc | last post by:
La commande vmstat permet de connaitre périodiquement l'état de la mémoire. Le problème est que pour des raisons de sécurité il n'est pas possible d'accéder à la machine et donc de la lancer à...
21
by: Bigorre.Edouardd | last post by:
bonjour, j'ai une erreur de compilage qui me revient souvent qui est : "undefined reference ", il s'agit d'un probleme de librairie. Je voulais savoir comment on faisait pour incorporer des...
1
by: sousimou | last post by:
i want to ceate a comman buttum to close my web application. this script dont work. can you cerrect it me than <html> <head> <title</title> </head> <body> <p><object ...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.