MAJ de base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : MAJ de base de donnée

par trankyl » 14 nov. 2006, 18:45

pour ceux que ca interesse je met la solution si toute fois certains voudrais reprendre le script voila encore merci a vous.

<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 = "sql.free.fr";//le host
$database_connection = "*****";//nom de la table
$username_connection = "*****";//login de connexion
$password_connection = "*****";//mot de pass
$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 * FROM DB";
echo $requete."<br>";
$result=mysql_query($requete,$connection) or die('');
echo "donnee :".mysql_num_rows($result)."<br>";
//affectation valeur equivalente pour grade
$ligne=0;
while ($enreg=mysql_fetch_array($result))
{
	echo "ligner traitee ".$ligne."<br>";
	if ($enreg['grade']=="S"){$gradevalue=5;}
	if ($enreg['grade']=="A"){$gradevalue=4;}
	if ($enreg['grade']=="B"){$gradevalue=3;}
	if ($enreg['grade']=="C"){$gradevalue=2;}
	if ($enreg['grade']=="D"){$gradevalue=1;}
	if ($enreg['grade']=="No Grade"){$gradevalue=0;}
	//mise a jour vase de donnee
	$requete="UPDATE DB SET gradeeq=".$gradevalue." WHERE id=".$enreg['id'];
	$update=mysql_query($requete,$connection) or die('');
	echo $requete;
	$ligne++;
}
mysql_free_result($result);
mysql_close();
?>
</body>
</html>

par trankyl » 14 nov. 2006, 16:53

ben la requete "SELECT grade,id FROM DB" marche très bien et fait une belle mélodie quand je la joue dans phpmyadmin il m'affiche tout mes grades et les id comme convenu

apparement c'est le
"mysql_select_db($database_connection,$connection) or die('');"
qui posé probleme je l'ai retiré et mainteannt il ma incrémenté toute ma colonne mais j'ai un probleme qui se pose maintenant c'est qu'il n'a pas tenu compte du grade pour l'incrémentation ca fait que toute la colonne a été incrémenté de 0 alors que le 0 ne s'adresser que pour le grade S et noramlement pour le A j'aurai du avoir 1....

d'ou ca peut venir???

par Ryle » 14 nov. 2006, 16:49

Zigz4g >> l'erreur est sur le fetch_array, oubliez l'update !! :)

trankyl >> et que donne la requête "SELECT grade,id FROM db " quand tu la joues dans phpMyAdmin ? est-ce qu'elle retourne des résultat ou fait une erreur ?

Dans le premier cas, tu as un problème de connexion à ta base (il faut donc remonter voir du coté de mysql_connect et mysql_select_db)
Dans le second, ben il ne te reste plus qu'à la corriger pour qu'elle fonctionne ;)

par trankyl » 14 nov. 2006, 16:36

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

par zigz4g » 14 nov. 2006, 16:36

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.

par jojolapine » 14 nov. 2006, 16:35

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é

par trankyl » 14 nov. 2006, 16:28


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

par Ryle » 14 nov. 2006, 16:22

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 :)

par zeus » 14 nov. 2006, 16:20

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

par jojolapine » 14 nov. 2006, 16:18

m'est avis qu'il manque des ' autour du champ grade

par Ryle » 14 nov. 2006, 16:18

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 :)

par zigz4g » 14 nov. 2006, 16:17

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;

par jojolapine » 14 nov. 2006, 16:14

ç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 ?

par trankyl » 14 nov. 2006, 16:13

et je le vois a quoi car j'utilise pas vraiment phpmyadmin car j'aime pas trop bien que c utile je l'admet

par albat » 14 nov. 2006, 16:11

à vérifier que ta requête générée est correcte.