Trier le résultat d'un mysql_query de plusieurs bases
Dernière réponse : dans Programmation
Salut, mon code me renvoi une parse error Parse error: syntax error, unexpected T_STRING in . .. on line 4
<?php
mysql_connect('mysql.free.fr', 'login', 'mdp');
mysql_select_db("teamlfv");
INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','','$_POST['k1']','$_POST['k2']')
?>
Mais je vois pas ce qui cloche ?????
PS : avec un echo a la place de tout ça, il affiche mes valeurs de formulaire . . .
<?php
mysql_connect('mysql.free.fr', 'login', 'mdp');
mysql_select_db("teamlfv");
INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','','$_POST['k1']','$_POST['k2']')
?>
Mais je vois pas ce qui cloche ?????
PS : avec un echo a la place de tout ça, il affiche mes valeurs de formulaire . . .
Autres pages sur : trier resultat mysql query plusieurs bases
Lassé par la pub ? Créez un compte
INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','','$_POST['k1']','$_POST['k2']')
'$_POST['k1']' , tu dois rajouter un caractère d'échappement pour neutraliser le premier ', k1 se retouvre en dehors de la string et le moteur php essaie de convertir k1 en quelque chose .Seulement il n'y a pas de $k1 donc il pense à une erreur.
('','','$_POST['k1']','$_POST['k2']')
'$_POST['k1']' , tu dois rajouter un caractère d'échappement pour neutraliser le premier ', k1 se retouvre en dehors de la string et le moteur php essaie de convertir k1 en quelque chose .Seulement il n'y a pas de $k1 donc il pense à une erreur.
Merci okinou !
Mais j'ai encore un soucis avec ce code :
<?php
mysql_connect('mysql.free.fr', 'login', 'mdp');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES ('','CURRENT_TIMESTAMP','".$_POST['k1']."','".$_POST['d1']."')" ) or die (mysql_error());
?>
il ne m'enregistre pas la date et heure dans mon champ prévu a ce effet de ma table
j'ai essayé de mettre () juste apres mon current_timestamp, et aussi de le remplacer par now, mais ça ne ^marche pas . . .
Mais j'ai encore un soucis avec ce code :
<?php
mysql_connect('mysql.free.fr', 'login', 'mdp');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES ('','CURRENT_TIMESTAMP','".$_POST['k1']."','".$_POST['d1']."')" ) or die (mysql_error());
?>
il ne m'enregistre pas la date et heure dans mon champ prévu a ce effet de ma table
j'ai essayé de mettre () juste apres mon current_timestamp, et aussi de le remplacer par now, mais ça ne ^marche pas . . .
PS : ça non plus ça marche pas . . .
<?php
$datetime=current_timestamp
mysql_connect('mysql.free.fr', 'teamlfv', '');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','$datetime','".$_POST['k1']."','".$_POST['d1']."')" ) or die (mysql_error());
?>
EDIT : je viens d'essayer de mettre un champ timestamp plutot dans ma bdd, avec un current_timestamp par defaut, pas d'erreurs, mais il me laisse tout a 0 . ..
<?php
$datetime=current_timestamp
mysql_connect('mysql.free.fr', 'teamlfv', '');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','$datetime','".$_POST['k1']."','".$_POST['d1']."')" ) or die (mysql_error());
?>
EDIT : je viens d'essayer de mettre un champ timestamp plutot dans ma bdd, avec un current_timestamp par defaut, pas d'erreurs, mais il me laisse tout a 0 . ..
coca25 a dit :
remercie surtout okinou, parce que la il a fait un enorme effort
et mets un [resolu] dans le titre du topic
tu m'étonnes
julien41@idn a dit :
PS : ça non plus ça marche pas . . .<?php
$datetime=current_timestamp
mysql_connect('mysql.free.fr', 'teamlfv', '******');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES
('','$datetime','".$_POST['k1']."','".$_POST['d1']."')" ) or die (mysql_error());
?>
EDIT : je viens d'essayer de mettre un champ timestamp plutot dans ma bdd, avec un current_timestamp par defaut, pas d'erreurs, mais il me laisse tout a 0 . ..
As tu aumoins vu ma modification sur $_POST['k1'] par rapport a l'original, entre :
'".$_POST['k1']."'
et
'$datetime'
ne vois tu pas une différence ? (je parle de la concaténation, soit les ".$datetime." et non plus $datetime.
phpdebutant.org > a droite fait les bases.
$datetime=current_timestamp
ou tu as chopé "current_timestamp" ? Ca n'existe pas, de plus, si c'est une fonction php ca sera écris toujours comme ceci :
$datetime=current_timestamp();
dans l'état actuel essai :
$datetime=time();
et corrige l'erreur $datetime ca devrait allez mieux.
sinon change ton type de table timestamp en date 0000-00-00 et : $datetime= date("Y-m-d");
je vais resté dans le simple ...
C'est rare que je fasse un tel roman alors estime toi heureux
En fait je fais un site pour ma team et j'ai fait une table pour chaque joueur, contenant : id, datetime, kills, deaths.
Chaque partie est dans une entrée de chaque table.
J'aimerais pouvoir faire des statistiques sur une semaine, sur un mois,et totales, du ratio kills/deaths. Comment dois-je m'y prendre ?
Mettre a jour les stats a chaque actualisation de la page en extrayant de ma bdd les infos dans des variables, et en travaillant dessus ?
Comment travailler avec des dates ?
Utiliser le id ?
Merci d'avance.
Chaque partie est dans une entrée de chaque table.
J'aimerais pouvoir faire des statistiques sur une semaine, sur un mois,et totales, du ratio kills/deaths. Comment dois-je m'y prendre ?
Mettre a jour les stats a chaque actualisation de la page en extrayant de ma bdd les infos dans des variables, et en travaillant dessus ?
Comment travailler avec des dates ?
Utiliser le id ?
Merci d'avance.
Citation :
Depuis MySQL 3.23, INTERVAL expr type est autorisé des deux cotés de l'opérateur + si l'expression de l'autre coté est de type DATE ou DATETIME. Pour l'opérateur -, INTERVAL expr type est autorisé uniquement du coté droit, car on ne peut pas soustraire une date d'un intervalle (voir les exemples ci-dessous).
http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-fu...
Studientinu a dit :
je me fais ch*er depuis des années a calculer la date en PHP (bon enfin y'a pire dans la vie)...rassure moi, ca fait pas des années que tu fais du php
Encore une question : pourquoi il me renvoi 'Array' dans $avgratios ?
$requete=mysql_query("SELECT AVG(ratio) FROM abdel_bachir WHERE datetime > now() - interval 1 week GROUP BY idgame");
$nb_games=mysql_num_rows($requete);
$avgratios=mysql_fetch_array(mysql_query("SELECT AVG(ratio) FROM abdel_bachir WHERE datetime > now() - interval 1 week "));
echo "$nb_games";
echo "$avgratios";
$requete=mysql_query("SELECT AVG(ratio) FROM abdel_bachir WHERE datetime > now() - interval 1 week GROUP BY idgame");
$nb_games=mysql_num_rows($requete);
$avgratios=mysql_fetch_array(mysql_query("SELECT AVG(ratio) FROM abdel_bachir WHERE datetime > now() - interval 1 week "));
echo "$nb_games";
echo "$avgratios";
1. ratio fait partie des colonnes de ta base?
2. avg => fonction d'aggrégat: average: moyenne. ca te renverra dans tous les cas 1 seule ligne.
$avgratios=mysql_fetch_array(mysql_query("SELECT AVG(ratio) FROM
RTFM
http://php.benscom.com/manual/fr/index.php
2. avg => fonction d'aggrégat: average: moyenne. ca te renverra dans tous les cas 1 seule ligne.
julien41@idn a dit :
Encore une question : pourquoi il me renvoi 'Array' dans $avgratios ?$avgratios=mysql_fetch_array(mysql_query("SELECT AVG(ratio) FROM
RTFM
http://php.benscom.com/manual/fr/index.php
Et j'ai essayé de faire :
$requete=mysql_query("SELECT ratio FROM abdel_bachir WHERE datetime > now() - interval 1 week GROUP BY idgame");
$nb_games=mysql_num_rows($requete);
echo"$nb_games";
while($row=mysql_fetch_row($requete))
{
echo"<BR>$row";
Mais pareil . . .
EDIT : et je ne comprends pas la fonction de group by , pouvez vous m'expliquer ?
$requete=mysql_query("SELECT ratio FROM abdel_bachir WHERE datetime > now() - interval 1 week GROUP BY idgame");
$nb_games=mysql_num_rows($requete);
echo"$nb_games";
while($row=mysql_fetch_row($requete))
{
echo"<BR>$row";
Mais pareil . . .
EDIT : et je ne comprends pas la fonction de group by , pouvez vous m'expliquer ?
ce que tu comprends pas aussi, c'est le fonctionnement de mysql_fetch_xxx et c'est pour ca que je t'ai indiqué un site de manuel php
tu tapes la fonction dans la zone recherche, tu arrives sur l'explication qui est agrémentée par plusieurs exemples
EDIT: pour le group by, c'est simple:
ex:
sortir la moyenne d'une classe
sortir la moyenne de chaque eleve d'une classe
tu tapes la fonction dans la zone recherche, tu arrives sur l'explication qui est agrémentée par plusieurs exemples
EDIT: pour le group by, c'est simple:
ex:
sortir la moyenne d'une classe
select avg(note) from notes;
sortir la moyenne de chaque eleve d'une classe
select eleve_id, avg(note) from notes group by elve_id;
ah ok, pour le group by, j'essayait de l'appliquer a mon cas, mais dans chaque table, aucun enregistrement n'a un champ qui peut des fois etre le meme, donc je comprenais pas.
et pour le mysql_fetch_array, je rajoute le MYSQL_ASSOC; et mon echo je le fais sur ce modele : echo $row['id'] . ': ' . $row['name'] . "\n";
C'est juse ça ?
et pour le mysql_fetch_array, je rajoute le MYSQL_ASSOC; et mon echo je le fais sur ce modele : echo $row['id'] . ': ' . $row['name'] . "\n";
C'est juse ça ?
encore une question : pour mes ratios de performance, je fais le nb kills sur le nb deaths, il me faut donc au moins 3 chiffres apres la virgule.
Quelle type de variable me conseilles tu dans ma bdd ?
Double,float ?
EDIT : j'ai essayé double, mais quand je fais ma requete , il ne me renvoi que des entiers arondis dans mon tableau.
Et les valeurs sont des entiers dans ma bdd
INSERT INTO ne travaille peut etre qu'avec des entiers ?
Quelle type de variable me conseilles tu dans ma bdd ?
Double,float ?
EDIT : j'ai essayé double, mais quand je fais ma requete , il ne me renvoi que des entiers arondis dans mon tableau.
Et les valeurs sont des entiers dans ma bdd
INSERT INTO ne travaille peut etre qu'avec des entiers ?
julien41@idn a dit :
Ok merci mais je ne vais pas compliquer parce que j'veux juste arriver a un truc potable pour mon site, et les joueurs j'pourrai les rajouter facilement dans mon code et ma base.En tout cas, merci pour ton aide !
plus facilement qu'avec mon schéma, je ne pense pas...
pour les entiers
donnes le code, parce que la j'ai du mal...
si tu n'as que des entiers dans la base, c'est normal qu'il ne te retournent que des entiers
$ratio1 = $_POST['k1'] / $_POST['d1'];
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths,ratio) VALUES ('','".$dateperso."','".$_POST['k1']."','".$_POST['d1']."','".$ratio1."')" ) or die (mysql_error());
=> là je fais echo ratio1 et il me renvoi un bon decimal
mais je regarde dans ma bdd et je ne vois que des entiers, et quand je fais ma requete, il me renvoi des entiers.
A priori, c'est qu'il arrondi pour le passer dans la bdd mon ratio, non ?
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths,ratio) VALUES ('','".$dateperso."','".$_POST['k1']."','".$_POST['d1']."','".$ratio1."')" ) or die (mysql_error());
=> là je fais echo ratio1 et il me renvoi un bon decimal
mais je regarde dans ma bdd et je ne vois que des entiers, et quand je fais ma requete, il me renvoi des entiers.
A priori, c'est qu'il arrondi pour le passer dans la bdd mon ratio, non ?
ca c'est comme le array...
tu dis que t'as que des entiers dans ta base, et tu te plains que ca ne t'enregistre que des entiers...
http://www.google.fr/search?hl=fr&oi=definer&q=define:n...
tu dis que t'as que des entiers dans ta base, et tu te plains que ca ne t'enregistre que des entiers...
http://www.google.fr/search?hl=fr&oi=definer&q=define:n...
O_o, je dis que je ne vois que des entiers dans ma base : c'est a dire que je peux voir que dans chaque enregistrement, le champ ratio est un entier, alors que je l'ai défini comme decimal ( j'ai essayé aussi float, et double)
Alors faut-il utiliser une autre requete mysql que INSERT INTO pour pouvoir enregistrer un réel ? Ou le probleme vient d'ailleurs ?
EDIT : Quand je fais echo ratio1, j'ai bien un décimal, donc le probleme viens forcement de l'enregistrement dans la base. Soit ça vient de la requete INSERT INTO, soit ça vient de la configuration ( type de variable ) du champ de ma base .
Je me trompes ?
Alors faut-il utiliser une autre requete mysql que INSERT INTO pour pouvoir enregistrer un réel ? Ou le probleme vient d'ailleurs ?
EDIT : Quand je fais echo ratio1, j'ai bien un décimal, donc le probleme viens forcement de l'enregistrement dans la base. Soit ça vient de la requete INSERT INTO, soit ça vient de la configuration ( type de variable ) du champ de ma base .
Je me trompes ?
au temps pour moi
par contre je vois pas, pour moi, la requete est bonne et decimal est bon
par contre ca depend comment tu déclares ton champs
ratio decimal (precision, echelle)
precision: le nombre de chiffre (ceux après la virgule sont compris dedans)
echelle: chiffres après la virgule
si tu l'as déclarée decimal(x), ca sera un entier avec x chiffres
par contre je vois pas, pour moi, la requete est bonne et decimal est bon
par contre ca depend comment tu déclares ton champs
ratio decimal (precision, echelle)
precision: le nombre de chiffre (ceux après la virgule sont compris dedans)
echelle: chiffres après la virgule
si tu l'as déclarée decimal(x), ca sera un entier avec x chiffres
J'ai un souci avec la moyenne AVG : $requete=mysql_query("SELECT AVG(ratio) FROM abdel_bachir WHERE datetime > now() - interval 1 week GROUP BY idgame");
$nb_games=mysql_num_rows($requete);
while($resultat=mysql_fetch_row($requete))
{
$moyenne=$resultat[0];
}
echo"$nb_games<BR>$moyenne";
Avec ça , je n'arrive pas a afficher la moyenne des ratios.
J'ai cherché mais je n'arrives pas a comprendre ce que me renvoie AVG, et donc comment le faire afficher.
Peux tu m'eclairer ?
EDIT : le code ci dessus affiche bien le bon nombre. Mais $moyenne me renvoi seulement le dernier ratio ...
$nb_games=mysql_num_rows($requete);
while($resultat=mysql_fetch_row($requete))
{
$moyenne=$resultat[0];
}
echo"$nb_games<BR>$moyenne";
Avec ça , je n'arrive pas a afficher la moyenne des ratios.
J'ai cherché mais je n'arrives pas a comprendre ce que me renvoie AVG, et donc comment le faire afficher.
Peux tu m'eclairer ?
EDIT : le code ci dessus affiche bien le bon nombre. Mais $moyenne me renvoi seulement le dernier ratio ...
Ah oui ok merci !
par contre , maintenant, j'ai la moyenne sur une semaine des ratios de chaque joueur, mais je n'ai aucune idée de la manière de m"y prendre pour les trier sans faire un code uzinagaz ^^.
Faire un tableau avec les champs moyenneRatio et nomDuJoueur; puis trier ce tableau pour enfin pouvoir l'afficher ?
par contre , maintenant, j'ai la moyenne sur une semaine des ratios de chaque joueur, mais je n'ai aucune idée de la manière de m"y prendre pour les trier sans faire un code uzinagaz ^^.
Faire un tableau avec les champs moyenneRatio et nomDuJoueur; puis trier ce tableau pour enfin pouvoir l'afficher ?
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
je vois peut etre mal mais jusqu'a preuve du contraire, une requete sql n'est pas une instruction php