Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1030 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP calculs possible ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP calculs possible ?

n°1740915
Titus94120
Posté le 03-06-2008 à 16:31:04  profilanswer
 

Vous pouvez me dire si on peut peu faire ces calculs :
 

Code :
  1. while ($row = mysql_fetch_array($resulta)) 
  2.   {
  3.   $$row["nom_appli"]=addslashes($_POST['$row["nom_appli"]']);
  4.   $query1="SELECT COUNT(login_fr)
  5.   FROM result_fr";
  6.   $result1 = mysql_query($query1) or die(mysql_error());
  7.   $query2="SELECT score_appli
  8.   FROM appli
  9.   WHERE nom_appli='".$row['nom_appli']."'";
  10.   $result2 = mysql_query($query2) or die(mysql_error());
  11.   $result3 = $result2 + $$row["nom_appli"];
  12.   $sql2="UPDATE appli
  13.     SET score_appli='$result3'
  14.    WHERE nom_appli='".$row['nom_appli']."'";
  15.   mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
  16.   $result4 = $result2/$result1;
  17.   $sql3= "UPDATE appli
  18.      SET tot='$result4'
  19.     WHERE nom_appli='".$row['nom_appli']."'";
  20.   mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());
  21.   }


 
Parce que ces calculs me donne des resultats improbable dans ma base de donnée.
Pourtant dans la logique les calculs que je veu faire sont bon.

mood
Publicité
Posté le 03-06-2008 à 16:31:04  profilanswer
 

n°1740926
skeye
Posté le 03-06-2008 à 16:41:03  profilanswer
 

J'ai la flemme de lire ton code tellement c'est dur à lire là, mais c'est forcément faisable. Et tu as $$row au début de la boucle alors que tu veux surement utiliser $row.


Message édité par skeye le 03-06-2008 à 16:42:25

---------------
Can't buy what I want because it's free -
n°1740927
skeye
Posté le 03-06-2008 à 16:44:45  profilanswer
 

Bon, j'ai regardé le code, tu ne fetches jamais le résultats de tes requêtes, tu utilises le résultat de mysql_query à la place, m'étonne pas que ça fasse n'importe-quoi. Et tu utilises plusieurs fois $$, j'espère que c'est des fautes de frappe et pas comme je le crains volontaire pour remplacer un bête tableau.


Message édité par skeye le 03-06-2008 à 16:45:54

---------------
Can't buy what I want because it's free -
n°1740928
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-06-2008 à 16:45:03  profilanswer
 

Tu pourrais faire ton truc en une seule requête plutot que d'en faire 4  requêtes:

Code :
  1. $sql =  sprintf("UPDATE
  2. appli
  3. SET
  4. score_appli += %d,
  5. tot = ( appli + %d ) / COALESCE(SELECT COUNT(DISTINCT login_fr) FROM result_fr)",
  6. mysql_real_escape_string( $_POST[$row["nom_appli"]] ),
  7. mysql_real_escape_string( $_POST[$row["nom_appli"]] )
  8. );


enfin si j'ai tout bien compris :)

Message cité 1 fois
Message édité par anapajari le 03-06-2008 à 16:45:34

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740929
skeye
Posté le 03-06-2008 à 16:46:31  profilanswer
 

anapajari a écrit :

Tu pourrais faire ton truc en une seule requête plutot que d'en faire 4  requêtes:

Code :
  1. $sql =  sprintf("UPDATE
  2. appli
  3. SET
  4. score_appli += %d,
  5. tot = ( appli + %d ) / COALESCE(SELECT COUNT(DISTINCT login_fr) FROM result_fr)",
  6. mysql_real_escape_string( $_POST[$row["nom_appli"]] ),
  7. mysql_real_escape_string( $_POST[$row["nom_appli"]] )
  8. );


enfin si j'ai tout bien compris :)


oui, aussi [:joce]


---------------
Can't buy what I want because it's free -
n°1740949
Titus94120
Posté le 03-06-2008 à 17:11:30  profilanswer
 

Si j'ai bien compris a ta requete 'anapajari' il faudrait que je fasse ca :
 

Code :
  1. $resulta = mysql_query("SELECT nom_appli FROM appli" );
  2.   while ($row = mysql_fetch_array($resulta)) 
  3.   {
  4.       $sql2 =  sprintf("UPDATE
  5.       appli
  6.       SET
  7.       score_appli += %d,
  8.       tot = ( score_appli ) / COALESCE(SELECT COUNT(login_fr) FROM result_fr)",
  9.       mysql_real_escape_string( $_POST[$row["nom_appli"]] ),
  10.       mysql_real_escape_string( $_POST[$row["nom_appli"]] )
  11.       );
  12.   mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
  13.   }


 
Mais il me met une erreur de syntaxe a la ligne 4 :

Code :
  1. tot = ( score_appli ) / COALESCE(SELECT COUNT(login_fr) FROM result_fr)",

n°1740959
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-06-2008 à 17:20:31  profilanswer
 

c'est pas forcément facile de s'y retrouver avec le peu d'information que tu donnes mais:

  • c'est pas la requête que j'avais donnée, le double %d était voulu car lors de l'execution score_appli n'aurait pas encore été mis à jour et la valeur de tot ne sera pas bonne
  • si tu tiens à conserver ta requête, vu que tu n'as plus qu'un seul bind dans le sprintf , pourquoi passer deux fois nom_appli


Ensuite sur l'erreur elle-même, j'imagine qu'il s'agit d'une erreur SQL car le code php ( enfin celui que tu montres) a l'air bon.
Quelle est exactement l'erreur rencontrée? le message complet?
Quel SGBD? Quelle Version? (Si tu me sors MySQL 3 tu peux directement oublier).

 

Ma conclusion: essaye au moins de faire un effort pour expliquer ton problème et comprendre ce qu'on te donne comme indication.


Message édité par anapajari le 03-06-2008 à 17:21:05

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740969
Titus94120
Posté le 03-06-2008 à 17:30:38  profilanswer
 

Ce que je veu c'est de faire :
-score_appli = score_appli + la valeur de $row["nom_appli"]
-une moyenne en faisant le score_appli / nombre de login
 
SGBD: MySQL: 5.0.45
 
Et l'erreur : Erreur SQL !UPDATE appli SET score_appli += 4, tot = ( score_appli ) / COALESCE(SELECT COUNT(login_fr) FROM result_fr)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+= 4, tot = ( score_appli ) / COALESCE(SELECT COUNT(login_fr) FROM result' at line 4
 
J'espere avoir été assez claire  :pt1cable:

n°1740974
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-06-2008 à 17:38:17  profilanswer
 

Code :
  1. COALESCE((SELECT COUNT(login_fr) FROM result_fr),1)


manquait un param ç coalesce.


---------------
Software and cathedrals are much the same - first we build them, then we pray.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP calculs possible ?

 

Sujets relatifs
[PHP] Découper une image[Résolu] Initialiser un Bean avec des champs d'un formulaire.
Modifications de code PHP (mise en page)[Résolu] Fil d'Ariane PHP/MySQL sur système d'include
Ecrire un texte à la verticale, à 90° : possible ?Probleme REGEX et PHP
Php + LDAP+ APACHE gros soucisPHP MYSQL PhpMyAdmin
[PHP/SGBD] Migration de Access à MySQL - Export pictures[PHP/MySQL] : recherche dans une base de données + affichage
Plus de sujets relatifs à : PHP calculs possible ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR