Se connecter / S'enregistrer
Votre question

Trier le résultat d'un mysql_query de plusieurs bases

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
29 Mars 2007 00:23:45

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 . . .

Autres pages sur : trier resultat mysql query plusieurs bases

29 Mars 2007 08:19:32

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.
29 Mars 2007 10:34:03

c'est surtout le ; apres )
Contenus similaires
29 Mars 2007 10:40:18

Juste je n'y avais pas fait attention !
29 Mars 2007 11:25:29

:heink:  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 ()
29 Mars 2007 11:30:59

Décidément , aujourd'hui tout me passe sous le nez !
29 Mars 2007 13:08:43

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é
29 Mars 2007 19:22:58

Waouh merci beaucoup les gars !
ça marche !
29 Mars 2007 19:28:58

remercie surtout okinou, parce que la il a fait un enorme effort :D 
et mets un [resolu] dans le titre du topic
29 Mars 2007 19:42:50

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 . . .
29 Mars 2007 19:55:59

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 . ..
29 Mars 2007 20:42:55

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
29 Mars 2007 21:02:04

Ok merci ! ( et je note : " chercher l'erreur de syntaxe avant autre chose" lol)
30 Mars 2007 01:37:14

coca25 a dit :
remercie surtout okinou, parce que la il a fait un enorme effort :D 
et mets un [resolu] dans le titre du topic

tu m'étonnes :D 

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 :D  :D  :whistle:  :hello: 
30 Mars 2007 09:44:41

Pour la date , juste 'NOW()' devrait passer.
30 Mars 2007 16:05:32

exacte! en plus je le fait tout le temps, je sais pas pourquoi la j'ai ecris autrement ...
1 Avril 2007 20:35:52

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 :/  )
1 Avril 2007 23:37:37

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 :/  ?
1 Avril 2007 23:43:29

Citation :

En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le nom est sensible à la casse (i.e. $x != $X).
2 Avril 2007 00:06:19

echo $dateperso;
echo ' '.$dateperso;
echo "".$dateperso;
echo ' '.$dateperso." ";

Voila quelques possibilités fonctionnelles .
2 Avril 2007 11:29:41

son echo est aussi fonctionel ;) 
entre ", la variable est interprétée, par contre un post en minuscule...
2 Avril 2007 11:31:31

ah vi juste ! J'avais pas grillé que c'était des " " , j'avais pensé à des ' ' . Sans concaténation ca n'aurait pas passé .
2 Avril 2007 19:49:27

Ok merci tout marche !
Bon maintenant je vais essayer de protéger ça avec .htaccess, on peut quand on est chez free 10Go gratuit ?
2 Avril 2007 20:49:35

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 ?
2 Avril 2007 21:59:49

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.
2 Avril 2007 22:15:03

tu peux faire ca avec plusieurs requete sql,
une par type de stats:
exemple pour la semaine

  1. select idgame, sum(kills) as nb_kills, sum(deaths) as nb_deaths
  2. from abdel_bachir
  3. where datetime > now() - interval 1 week
  4. group by idgame
  5. ;


remarque: je pense pas que le nom de ta table soit approprié ;) 
3 Avril 2007 12:17:10

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)...
3 Avril 2007 13:47:19

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 :p 
3 Avril 2007 19:50:12

Ok merci j'vais chercher avec ça !
3 Avril 2007 20:46:15

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)
3 Avril 2007 22:50:53

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";
3 Avril 2007 23:11:44

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 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
3 Avril 2007 23:21:36

ç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
3 Avril 2007 23:43:28

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 ?
3 Avril 2007 23:54:18

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
  1. select avg(note) from notes;

sortir la moyenne de chaque eleve d'une classe
  1. select eleve_id, avg(note) from notes group by elve_id;
4 Avril 2007 06:48:01

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 ?
4 Avril 2007 11:36:27

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...
4 Avril 2007 16:34:28

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 ?
4 Avril 2007 16:58:32

rapidement:
joueur (joueur_id, nom, prenom...)
jeux (jeux_id, joueur_id, ladate, kills, deaths)
4 Avril 2007 18:08:45

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 !
4 Avril 2007 18:15:07

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 ? :/ 
4 Avril 2007 18:33:05

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
4 Avril 2007 18:36:36

$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 ?
4 Avril 2007 21:13:54

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 ?
4 Avril 2007 21:32:52

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
5 Avril 2007 07:33:38

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 ...
5 Avril 2007 11:03:11

qu'est ce que tu veux faire?
afficher la moyenne sur une semaine... alors pourquoi le GROUP BY
      • 1 / 2
      • 2
      • Dernier
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS