Notes Moyennes

Eléphant du PHP | 101 Messages

25 sept. 2005, 06:43

c'est au niveau de

Code : Tout sélectionner

WHERE id=".$_GET['id'];
qu il y a une erreur car quand je remplace par

Code : Tout sélectionner

WHERE id='1'";
Ca marche

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 11:03

en principe il n'y a pas utilité de mettre des quotes puisque'il s'agit d'un champ int, mais remplace par (on vera bien):
$sql_select="SELECT (total_note/nb_note) as moyenne FROM jeux WHERE id='".$_GET['id']."'";
pareil pour les autres

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

25 sept. 2005, 20:28

je comprends pas ca marche tjs pas pourtant il n'y a plus de message d'erreur mais rien n'est inserer dans la table

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 20:32

fait afficher toutes les requetes ->
echo '<br>'.$req_select.'<br>'; 
echo '<br>'.$sql_moy.'<br>';
echo '<br>'.$sql_update.'<br>';
et fait un copier coller ici

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 06:31

Code : Tout sélectionner

UPDATE jeuxSET moyenne= WHERE id='' UPDATE jeuxSET total_note=total_note+17 , nb_note=nb_note+1 WHERE id=''

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 12:53

UPDATE jeuxSET moyenne=..WHERE id='..'

UPDATE jeuxSET total_note=total_note+17 , nb_note=nb_note+1 WHERE id='..'
Ca ne te met pas la puce a l'oreille ce que j'ai mis en rouge ?! :wink:

Il y a des trous dans la requete... d'ou sort le $_GET['id'] ?
regarde déja de ce coté avant de t'attaquer a la requete qui est certainement correct.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 18:22

le $_GET['id'] sort du lien ../note.php?id='. $row['id']. que j'ai mis sur la page jeux et ceci marche car dans la barre d'adresse de note je vois
/note.php?id=1 OU /note.php?id=2 ......

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 18:33

et ceci marche car dans la barre d'adresse de note je vois
/note.php?id=1 OU /note.php?id=2 ......
Oui Oui je ne met pas en doute tes dires :wink:
c'est bien bizzare si dans la barre tu vois le chiffre et que tu ne peut le récupèrer :?
As tu essayé de faire un echo $_GET['id'] sur la page note.php, juste au cas ou

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 18:48

oui j'ai deja essayer et ca marque bien le bon id

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 18:51

si tu arrive a faire afficher la variable GET pourquoi elle n'est plus présente dans la requete :?: :!:

:-s tu veux bien me mettre tout ton code avec le requetes en question ..

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 18:53

<?php /* Date de création: 04/08/2005 */ ?>
<html>
<body>


<form action="note.php" method="post">
 <select name="nouvelle_note">
	<option value="1"> 1</option>
	<option value="2"> 2</option>
	<option value="3"> 3</option>
	<option value="4"> 4</option>
	<option value="5"> 5</option>
	<option value="6"> 6</option>
	<option value="7"> 7</option>
	<option value="8"> 8</option>
	<option value="9"> 9</option>
	<option value="10"> 10</option>
	<option value="11"> 11</option>
	<option value="12"> 12</option>
	<option value="13"> 13</option>
	<option value="14"> 14</option>
	<option value="15"> 15</option>
	<option value="16"> 16</option>
	<option value="17"> 17</option>
	<option value="18"> 18</option>
	<option value="19"> 19</option>
	<option value="20" selected> 20</option>
</select>

<input type="submit" value="Valider" /> </form>
<?
mysql_connect("sql.free.fr", "mazflo007", "*******");
mysql_select_db("mazflo007");

if (isset($_POST['nouvelle_note']))
{ 


//Ici tu peut mettre a jour les 2 champs a la fois 
$sql_update="UPDATE jeux SET total_note=total_note+".$nouvelle_note." , nb_note=nb_note+1 WHERE id='".$_GET['id']."'"; 
mysql_query($sql_update);   

$sql_select="SELECT (total_note/nb_note) as moyenne FROM jeuxWHERE id='".$_GET['id']."'";   
$requete = mysql_query($sql_select) or die (mysql_error()); 

//Pas besoin de boucle étant donné que tu n'aura qu'un seul résultat, avec lma clause WHERE sur l'id 
$row=mysql_fetch_array($requete); 
$sql_moy="UPDATE jeuxSET moyenne=".$row['moyenne']." WHERE id='".$_GET['id']."'"; 
mysql_query($sql_moy);    
}    
echo '<br>L\'id est'.$_GET['id'].'<br>'; 
 
?>  

</body>
</html>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 19:01

Ok en faite tu peut affciher la variable GET la première fois que tu affiche le formulaire ensuite tu valide le formulaire avec la note sur la meme page => $_GET['id'] n'existe plus, essai comme ça (avec un champ chaché):
<?php /* Date de création: 04/08/2005 */ ?>
<html>
<body>


<form action="note.php" method="post">
 <select name="nouvelle_note">
   <option value=1> 1</option>
   <option value=2> 2</option>
   <option value=3> 3</option>
   <option value=4> 4</option>
   <option value=5> 5</option>
   <option value=6> 6</option>
   <option value=7> 7</option>
   <option value=8> 8</option>
   <option value=9> 9</option>
   <option value=10> 10</option>
   <option value=11> 11</option>
   <option value=12> 12</option>
   <option value=13> 13</option>
   <option value=14> 14</option>
   <option value=15> 15</option>
   <option value=16> 16</option>
   <option value=17> 17</option>
   <option value=18> 18</option>
   <option value=19> 19</option>
   <option value=20 selected> 20</option>
</select>
<input type="hidden" name="id" value="<? echo $_GET['id'] ?>">
<input type="submit" value="Valider" /> </form>
<?
mysql_connect("sql.free.fr", "mazflo007", "*******");
mysql_select_db("mazflo007");

if (isset($_POST['nouvelle_note']))
{
    //test (a supprimer apres) pour verifier si la variable GET s'affiche (je pense que tu aura une erreur ici)
    echo '<br>L\'id est'.$_GET['id'].'<br>';


    $id=$_POST['id'];
    //Ici tu peut mettre a jour les 2 champs a la fois
    $sql_update="UPDATE jeux SET total_note=total_note+".$_POST['nouvelle_note']." , nb_note=nb_note+1 WHERE id=".$id  ;
    mysql_query($sql_update);   

    $sql_select="SELECT (total_note/nb_note) as moyenne FROM jeuxWHERE id=".$id;   
    $requete = mysql_query($sql_select) or die (mysql_error());

    //Pas besoin de boucle étant donné que tu n'aura qu'un seul résultat, avec lma clause WHERE sur l'id
    $row=mysql_fetch_array($requete);
    $sql_moy="UPDATE jeuxSET moyenne=".$row['moyenne']." WHERE id=".$id;
    mysql_query($sql_moy);   
}   
 
?> 

</body>
</html>
EDIT j'ai changer les "values" de la liste sans les guillemets sinon l'addition ne se fera pas dans la requete je pense

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 19:10

Voici ce qui mo mit
L'id est
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 '=6' at line 1

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 19:13

un espace manquant ?!
$sql_select="SELECT (total_note/nb_note) as moyenne FROM jeux WHERE id=".$id;
Mais si tu me donne une erreur dit moi aussi sur quelle requete elle porte ça aide :wink:
Sinon comme toujours les test obligatoire AFFICHER les requetes et verifier ce quelles contienent vraiment.
Modifié en dernier par Truc le 26 sept. 2005, 19:15, modifié 1 fois.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

26 sept. 2005, 19:14

Vraiment un grand merci
ca marche