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

Code : Tout sélectionner

or die('')
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... :shock:
$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