Page 1 sur 2
MAJ de base de donnée
Posté : 14 nov. 2006, 15:41
par trankyl
Voila je voudrai faire une update de ma DB pour ne pas le faire manuellement car trop de donné et en fait j'ai simplement rajouté un champ à la table et je voudrai que lke script met a jour ce champ en y mettant une valeur propre en relation avec un autre champs voila mon script
$connection = mysql_connect($hostname_connection, $username_connection, $password_connection) or die("");
mysql_select_db($database_connection,$connection) or die("");
// lecture base de donnee
$requete="SELECT grade,id FROM DB";
echo $requete;
$result=mysql_query($requete,$connection) or die("rate !!");
//affectation valeur equivalente pour grade
while ($enreg=mysql_fetch_array($result))
{
$grade=$enreg['grade'];
switch ($grade)
{
case "S";
$gradevalue=0;
break;
case "A";
$gradevalue=1;
break;
case "B";
$gradevalue=2;
break;
case "C";
$gradevalue=3;
break;
case "D";
$gradevalue=4;
break;
case "No Grade";
$gradevalue=5;
break;
}
//mise a jour vase de donnee
$requete="UPDATE DB SET gradeeq=".$gradevalue." WHERE id=".$enreg['id'];
$result=mysql_query($requete,$connection) or die("rate 2!!");
}
mysql_free_result($result);
mysql_close();
?>
Et voila l'erreur qui va avec
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/135/sdb/1/4/mondelendill/misajourgrade.php on line 24
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /mnt/135/sdb/1/4/mondelendill/misajourgrade.php on line 52
Et impossible de trouver mon erreur donc si quelqu'un peut m'aider merci d'avance
Posté : 14 nov. 2006, 15:59
par Cyrano
ça veut dire que l'exécution de ta requête retourne une erreur : as-tu testé ta requête directement via phpMyAdmin par exemple ?
Posté : 14 nov. 2006, 16:08
par trankyl
non ca m'avancera a quoi de l'esayé avec phpmyadmin d'abord????
Posté : 14 nov. 2006, 16:11
par albat
à vérifier que ta requête générée est correcte.
Posté : 14 nov. 2006, 16:13
par trankyl
et je le vois a quoi car j'utilise pas vraiment phpmyadmin car j'aime pas trop bien que c utile je l'admet
Posté : 14 nov. 2006, 16:14
par jojolapine
ça servira peut-être à te rendre aimable, quoique, les carottes c'est mieu pour ça...
non en fait ça te servira surtout à te dire que c'est pas ton script php qui plante, mais ta requête qui ne fonctionne pas...
tu est sur que ta table s'appel DB ?
Posté : 14 nov. 2006, 16:17
par zigz4g
Fait un echo de ta requete et passe la dans phpmyadmin ou dans tout autre outils qui peut faire la requete sur ton serveur.
$requete="UPDATE DB SET gradeeq=".$gradevalue." WHERE id=".$enreg['id'];
echo $requete;
Posté : 14 nov. 2006, 16:18
par Ryle
A la place des or die("") qui ne servent absolument à rien, ou du or die("rate !!") qui n'est pas spécialement explicite. Utilise des message explicite ("Impossible de se connecter à la base", ...) ou bien mysql_error() en cas d'erreur SQL, cela aura au moins pour effet de te la signaler tout de suite

Posté : 14 nov. 2006, 16:18
par jojolapine
m'est avis qu'il manque des ' autour du champ grade
Posté : 14 nov. 2006, 16:20
par zeus
A la place des or die("") qui ne servent absolument à rien,...
Le
a tout de même l'utilité d'arreter l'exécution du script. Même si l'affichage d'un affichage n'est pas inutile pour savoir où s'est arreté le script.
Sinon, libre à toi de ne pas suivre nos conseils pour phpMyAdmin ... mais ne vient pas demander de l'aide si tu ne l'acceptes pas ...
Posté : 14 nov. 2006, 16:22
par Ryle
Jojo >> c'est un nombre, y a pas besoin d'apostrophe...
Ceci dit, vous noterez que l'erreur provient du mysql_fetch et donc du SELECT, pas de l'UPDATE...
$result n'est pas bon, donc le mysql_query n'est pas bon.
A vérifier maintenant si c'est la requête ou la connexion qui ne fonctionne pas...
Edit : oops au temps pour moi jojo, je croyais que tu parlais du champ de l'update (qu'à un nom assez proche

)... ceci dit, je crois pas que "grade" soit un mot clé sql et qu'il ne nécessite d'être protégé...
Edit bis : bon bah au temps pour moi itou zeus, c'est vrai que je ne pensais pas à l'interruption, mais c'est sur que sans plus d'information ça risque de pas être évident en cas d'erreur de trouver d'où ça vient

Posté : 14 nov. 2006, 16:28
par trankyl
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
// script de connexion
$hostname_connection = "localhost";//le host
$database_connection = "mondelendill";//nom de la table
$username_connection = "root";//login de connexion
$password_connection = "";//mot de pass
$connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection) or die('');
mysql_select_db($database_connection,$connection) or die('');
// lecture base de donnee
$requete="SELECT grade,id FROM DB";
echo $requete;
$result=mysql_query($requete,$connection) or die('');
//affectation valeur equivalente pour grade
while ($enreg=mysql_fetch_array($result))
{
$grade=$enreg['grade'];
switch ($grade)
{
case "S";
$gradevalue=0;
break;
case "A";
$gradevalue=1;
break;
case "B";
$gradevalue=2;
break;
case "C";
$gradevalue=3;
break;
case "D";
$gradevalue=4;
break;
case "No Grade";
$gradevalue=5;
break;
}
//mise a jour vase de donnee
$requete="UPDATE DB SET gradeeq=".$gradevalue." WHERE id=".$enreg['id'];
$result=mysql_query($requete,$connection) or die('');
}
mysql_free_result($result);
mysql_close();
?>
</body>
</html>
Voila le nouvo code pour le phpmyadmin
et voila l'erreur avec l'echo qui été demandé
SELECT grade,id FROM DB
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\site\misajourgrade.php on line 22
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in f:\site\misajourgrade.php on line 50
[/b]
Posté : 14 nov. 2006, 16:35
par jojolapine
voila le nouvo code pour le phpmyadmin
c'est à dire ?
nous on souhaite que tu fasses un essais de tes deux requêtes dans phpmyadmin... et nous rapporter ce que ça a donné
Posté : 14 nov. 2006, 16:36
par zigz4g
Je me rappel pas avoir demande cette information...
$requete="SELECT grade,id FROM DB";
echo $requete;
Mais plus celle ci :
$requete="UPDATE DB SET gradeeq=".$gradevalue." WHERE id=".$enreg['id'];
echo $requete;
De plus afficher une requete qui n'est pas dynamique se copie colle directement dans phpmyadmin.
Posté : 14 nov. 2006, 16:36
par trankyl
sorry jsuis a la ramasse jvien de comprendre ce que vous vouliez avec phpmyadmin mdr
SELECT grade,id FROM db (echo 1ere requete)
UPDATE DB SET gradeeq=0 WHERE id=6607 (echo 2e requete)
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\site\misajourgrade.php on line 22
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in f:\site\misajourgrade.php on line 51