Trier le résultat d'un mysql_query de plusieurs bases
Forum Programmation : Trier le résultat d'un mysql_query de plusieurs bases
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 . . .
Message édité par julien41@idn le 27-04-2007 à 10:45:46
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.
c'est surtout le ; apres )
Juste je n'y avais pas fait attention !
je vois peut etre mal mais jusqu'a preuve du contraire, une requete sql n'est pas une instruction php
il faut mettre le insert bidule machin comme argument pour la fonction mysql_query ()
Décidément , aujourd'hui tout me passe sous le nez !
mysql_connect('mysql.free.fr', 'login', 'mdp');
mysql_select_db('teamlfv');
mysql_query("INSERT INTO abdel_bachir (idgame,datetime,kills,deaths) VALUES ('','','".$_POST['k1']."','".$_POST['k2']."')" ) or die (mysql_error());
jour de bonté
Waouh merci beaucoup les gars !
ça marche !
remercie surtout okinou, parce que la il a fait un enorme effort
et mets un [resolu] dans le titre du topic
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 . . .
Message édité par julien41@idn le 29-03-2007 à 19:43:49
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 . ..
Message édité par julien41@idn le 10-04-2007 à 15:30:33
quand une instruction ne marche pas, faut pas essayer n'importe quoi non plus...
$datetime=current_timestamp c'est quoi ca, une fonction/variable...
bref enleve les ' autour de CURRENT_TIMESTAMP dans ta requete
Ok merci ! ( et je note : " chercher l'erreur de syntaxe avant autre chose" lol)
| coca25 a écrit : remercie surtout okinou, parce que la il a fait un enorme effort |
tu m'étonnes
| julien41@idn a écrit : PS : ça non plus ça marche pas . . .
|
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
Message édité par Yama310 le 10-04-2007 à 21:40:46
Webmaster, rentabilisez votre trafic : http://www.dream-shop.fr/affiliation 28% de commission !
Répondre à okinou
Pour la date , juste 'NOW()' devrait passer.
exacte! en plus je le fait tout le temps, je sais pas pourquoi la j'ai ecris autrement ...
Ah oui, la concaténation . . . (je l'ai vu, mais j'essaye peu etre d'aller un peu trop vite dans mon apprentissage ^^ ).
Merci !
( et le current_timestamp, c'est une valeur mysql en fait
)
Erf, encore un p'tit probleme
$dateperso = $_post['dateperso'];
echo "$dateperso";
normalement, tout est correct, mais si je rentres une date dans mon formulaire, il ne m'affiche rien avec ce script.
Pouvez vous m'aider encore une fois
?
Message édité par julien41@idn le 01-04-2007 à 23:40:33
| Citation :
|
echo $dateperso;
echo ' '.$dateperso;
echo "".$dateperso;
echo ' '.$dateperso." ";
Voila quelques possibilités fonctionnelles .
son echo est aussi fonctionel
entre ", la variable est interprétée, par contre un post en minuscule...
ah vi juste ! J'avais pas grillé que c'était des " " , j'avais pensé à des ' ' . Sans concaténation ca n'aurait pas passé .
Ok merci tout marche !
Bon maintenant je vais essayer de protéger ça avec .htaccess, on peut quand on est chez free 10Go gratuit ?
Ah j'suis bete, tant qu'on se connecte pas en admin sur le ftp sur le serveur, y'a pas moyen d'ouvrir les scripts en .php , n'est ce pas ?
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.
Message édité par julien41@idn le 02-04-2007 à 22:05:08
tu peux faire ca avec plusieurs requete sql,
une par type de stats:
exemple pour la semaine
Code :
|
remarque: je pense pas que le nom de ta table soit approprié
Message édité par coca25 le 02-04-2007 à 22:15:40
Coca25 juste pour ma culture personnelle la synthaxe "- interval x y" dans une requete SQL est vraiment reconnu par MySQL ? Rassure moi c'est juste un exemple, ne me dis pas que je me fais ch*er depuis des années a calculer la date en PHP (bon enfin y'a pire dans la vie)...
Campà Francese o more Corsu...
Répondre à Studientinu
| Citation :
|
http://dev.mysql.com/doc/refman/5. [...] tions.html
| Studientinu a écrit : 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
Ok merci j'vais chercher avec ça !
j'avais pas capté que c'était pas le même qui demandait pour la syntaxe interval...
je retire la derniere phrase alors
(meme si c'etait pas méchant de toute facon)
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";
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.
| julien41@idn a écrit : Encore une question : pourquoi il me renvoi 'Array' dans $avgratios ?
|
ça fait 1 heure que je cherche ^^
EDIT: erf 1.oui ratio est dans ma base
2. si je echo directement $requete, il me mets : Resource id #2
:s
Message édité par julien41@idn le 03-04-2007 à 23:30:47
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 ?
Message édité par julien41@idn le 03-04-2007 à 23:49:16
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
Code :
|
sortir la moyenne de chaque eleve d'une classe
Code :
|
Message édité par coca25 le 03-04-2007 à 23:57:07
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 ?
ah, je viens de comprendre ta base
en fait la table, c'est le joueur (d'ou le ne nom de la table), et dedans chaque enregistrement, c'est une partie.
pas bon comme schéma de base.
si tu veux ajouter un joueur, tu vas te faire chier...
Voilà!
C'est vrai que c'est vraiment pas pratique si on veux pouvoir rajouter facilement des joueurs, mais c'est faisable.
Et tu aurais d'autres idées de schéma ?
rapidement:
joueur (joueur_id, nom, prenom...)
jeux (jeux_id, joueur_id, ladate, kills, deaths)
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 !
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 ?
Message édité par julien41@idn le 04-04-2007 à 18:23:52
| julien41@idn a écrit : 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.
|
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 ?
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& [...] er&defl=fr
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 ?
Message édité par julien41@idn le 04-04-2007 à 21:17:50
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
Message édité par coca25 le 04-04-2007 à 21:33:36
Ok merci ça marche !
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 ...
Message édité par julien41@idn le 05-04-2007 à 07:34:59
qu'est ce que tu veux faire?
afficher la moyenne sur une semaine... alors pourquoi le GROUP BY
Il y a 753 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

okinou