Page 1 sur 1

tester mysql au moyen de php

Posté : 07 nov. 2007, 10:12
par aramis42
Bonjour,
Je n'ai pas du poster au bon endroit sur le forum, c'est pourquoi je me permets de le poster à cet endroit

je voudrai gérer un fichier de données dans un site web.
j'ai installé WAMP5 et je suis entrain de tester les configs.
le fichier a utiliser pour tester Mysql est le suivant :
<html> 
<head> 
<title>Test de Mysql</title> 
</head> 
<body> 
<! test-mysql.php --> 
<?php 
$host="localhost"; 
$user=" "; 
$password="arthur"; 

mysql_connect($host,$user,$password); 
$sql="show status"; 
$result= mysql_query($sql); 
if ($result==0) 
echo("<b>erreur" . mysqL_errno() . ":" . mysql_error() . "</b>"); 
elseif (mysql_num_rows($result) == 0) 
echo("<b>Requète exécutée avec succès</b>"); 
else 
{ 
?> 
<!-- Tableau affichant les résultats ---> 
<table border="1"> 
<tr><td><b>Nom de la variable</b></td><td><b>Valeur</b></td></tr> 
<?php 
for ($i = 0; $i <mysql_num_rows($result); $i++){ 
echo("<TR>"); 
$row_array =mysql_fetch_rows($result); 
for ($j = 0; $j <mysql_num_fields($result); $j++) { 
echo("<TD>" . $row_array[$j] . "</td>"); 
} 
echo("</tr>"); 
} 
</table > 
<?php }?> 
</body> 
</html> 
la ligne <table border="1"> est mal écrite et me renvoie un message d'erreur
les " " sont en réalité >> 1 >> je ne sais pas les écrire
pouvez vous m'indiquer comment faire ou m'indiquer où m'orienter.
merci

Posté : 07 nov. 2007, 10:18
par d0m
ta ligne est bien écrit, par contre plus haut il te manque des caractères dans ta balise de commentaires :

Code : Tout sélectionner

//pas <! test-mysql.php --> //mais <!-- test-mysql.php -->

Posté : 07 nov. 2007, 10:19
par Cyrano
Regarde donc ton code : tu as fait :
<?php
//...
}
</table >
Au lieu de
<?php
//...
}
?>
</table >
Et utilise donc les boutons [code] ou [php] quand tu poste du code, ça aidera un peu ;)

Posté : 07 nov. 2007, 10:24
par zeus
Modération :
aramis42, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 07 nov. 2007, 16:05
par aramis42
merci pour vos conseils,
j'ai tenu compte de vos observations mais la modif d'emplacement de

Code : Tout sélectionner

table border="1"><
et de

Code : Tout sélectionner

</table >
n'a fait que modifier la ligne erreur avec le message suivant :

Parse error: syntax error, unexpected $end in C:\wamp\www\membres\test-mysql.php on line 41

ci dessous le script corrigé :
<html>
<head>
<title>Test de Mysql</title>
</head>
<body>
<!--   test-mysql.php -->
<?php
$host="localhost";
$user=" ";
$password="arthur";

mysql_connect($host,$user,$password);
$sql="show status";
$result= mysql_query($sql);
if ($result==0)
	echo("<b>erreur" . mysqL_errno() . ":" . mysql_error() . "</b>");
elseif (mysql_num_rows($result) == 0)
	echo("<b>Requète exécutée avec succès</b>");
else

?>
<!-- Tableau affichant les résultats --->
<table border="1">
	<tr><td><b>Nom de la variable</b></td><td><b>Valeur</b></td></tr>
<?php
	
	for ($i = 0; $i <mysql_num_rows($result); $i++){
	echo("<TR>");
	$row_array =mysql_fetch_rows($result);
	for ($j = 0; $j <mysql_num_fields($result); $j++)
 {
	echo("<TD>" . $row_array[$j] . "</td>");
}
{
	echo("</tr>");
}

?>
</table >
</body>
</html>
La ligne 41 correspond à:

Code : Tout sélectionner

</html>
qu'est-ce-qui est erroné ?

Ce sont mes premiers pas dans le language PHP, je demande beaucoup d'indulgence
merci

Posté : 07 nov. 2007, 16:08
par Cyrano
Compte tes accolades ouvrantes et compare avec le nombre d'accolades fermantes...

Posté : 07 nov. 2007, 16:56
par aramis42
Re bonjour,
il y en avait bien un { qui manquait.
le script se déroule bien jusqu'à la fin mais j'ai d'autres messages d'erreurs qui sont apparus

ligne 12
mysql_connect($host,$user,$password);
avec le message suivant :

Warning: mysql_connect() [function.mysql-connect]: Access denied for user ' '@'localhost' (using password: YES) in C:\wamp\www\membres\test-mysql.php on line 12

ligne 14
$result= mysql_query($sql);
avec les messages suivant :

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\membres\test-mysql.php on line 14

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\membres\test-mysql.php on line 14
erreur1045:Access denied for user 'ODBC'@'localhost' (using password: NO)


Ces 2 erreurs proviennent certainement d'un mauvaise identifications de $host, $user, $password
dans mon script j'ai écrit :
$host="localhost";
$user=" ";
$password="arthur";
dois-je m'identifier différemment ?

Ce n'est pas terminé :
ligne 27 j'ai écrit :
for ($i = 0; $i <mysql_num_rows($result); $i++)
message d'erreur :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\membres\test-mysql.php on line 27

ligne 31 j'ai écrit :
$row_array =mysql_fetch_rows($result);
avec le message d'erreur :

Fatal error: Call to undefined function mysql_fetch_rows() in C:\wamp\www\membres\test-mysql.php on line 31

Voilà terminé pour les anomalies
si tu peux m'expliquer
je te remercie

Posté : 07 nov. 2007, 16:58
par Cyrano
En corrigeant le premier, les autres devraient tomber en cascade :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ' '@'localhost' (using password: YES) in C:\wamp\www\membres\test-mysql.php on line 12
En clair, le mot de passe utilisé est invalide.

Posté : 07 nov. 2007, 17:03
par Ryle
hmm... c'est le couple login/password qui a été refusé.. cela ne vient pas nécessairement que du mot de passe :)

Et en l'occurence, je dirais plutôt que c'est le login (espace) qui est à remettre en cause. Un 'root' et un mot de passe vide ("") aurait sans doute plus de chance de fonctionner... Maintenant c'est juste une valeur par défaut et tout dépend des users créés dans ta base de données :)

Tester Mysql au moyen de PHP

Posté : 08 nov. 2007, 18:46
par aramis42
Merci à Ryle et Cyrano,
j'ai tout essayé dans les valeurs de $host, $user, $password mais rien n'a fonctionné

Dans un autre script en PHP j'ai écrit :
<!--Nom du programme : musql_envoi.php
  	Description : envoi d'une requète SQL au serveur SQL
		et affichage des résultats

-->
<html>
<head>
<title>Envoi de la requète SQL</title>
</head>
<body>
<?php
$host="localhost";
$user="";
$password="arthur";

/*section exécution de la requète */
if(@$_GET['form'] == "yes")
	{
	mysql-connect($host,$user,$password);
	mysql_select_db($_POST['internationaux']);
	$query = stripSlashes($_POST['query']);
	$result = mysql_query($query);
	echo "Base de données sélectionnées : <b>{$_POST['internationaux']}
						</b><br>
		Requète : <b>$query</b><h3>Résultats</h3><hr>";
	if(result == 0)
		echo "<b>Erreur ".mysql_errno().": ".mysql_error().
			"</b>";
	elseif (@musql_num_rows($result) == 0)
		echo("<b>Requète exécutée. Aucun résultat renvoyé.
			</b><br>");
	else
	{
	echo "<table border='1'>
		<thead>
		<tr>";
		for($i =0;$i <mysql_num_fields($result);$i++)
		{
		echo "<th>".mysql_field_name($result,$i).
			"</th>";
		}
	echo " </tr>
		</thead>
		<tbody>";
		for ($i =0; $i <mysql_num_rows($result); $i++)
		{
		echo "<tr>";
		$row = mysql_fetch_row($result);
		for($j = 0;$j<mysql_num_fields($result);$j++)
		{
		echo("<td>" . $row[$j] . "</td>");
		}
		echo "<tr>";
		}
	echo "</tbody>
		</table>";
 }  //end else
	echo "
	<hr><br>
	<form action=\"{$_SERVER['PHP_SELF']} \"method=\"POST\">
	<input type ='hidden' name='query' value='$query'>
	<input type ='hidden' name='database'
			value={$_POST['database']}>
	<input type ='submit' name=\"queryButton\"
			value=\"Nouvelle requète\">
	<input type ='submit' name=\"queryButton\"
			value=\"Editer la requète\">
	</form>";
	unset($form);
	exit();
}  //endif form=yes

/* Section that requests user input of query */
@$query=stripSlashes($_POST['query']);
if (@$_POST['queryButton'] != "Editer la requète")
{
	$query = " ";
}
?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?> ?form=yes"
					method="POST">
	<table>
		<tr>
			<td align=right><b>Indiquez le nom<br>de la base de données</b>
			</td>
			<td><input type="text" name="database"
			value="<?php echo @$_POST['database']; ?>" >
			</td>
		</tr>
		<tr>
			<td align="right" valign="top">
				<b>Saisissez la requète SQL</b>
			</td>
			<td>	
				<textarea name="query" cols="60"	
					rows="10"><?php echo $query ?>
				</textarea>
			</td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input type="submit"
				value="Envoyez la requète">
			</td>
		</tr>
	</table>
</form>
</body>
</html>...

le résultat obtenu est correct alors que les valeurs sont identiques à celles du script test-mysql.php
<?php
$host="localhost";
$user=" ";
$password="arthur";

mysql_connect($host,$user,$password);
$sql="show status";
$result= mysql_query($sql);
if ($result==0)
	echo("<b>erreur" . mysqL_errno() . ":" . mysql_error() . "</b>");
elseif (mysql_num_rows($result) == 0)
	echo("<b>Requète exécutée avec succès</b>");
else

?>
je ne comprend pas pourquoi cela marche dans un cas et pas dans l'autre

les premiers pas dans PHP me sont très difficiles heureusement que vous êtes là pour me faire avancer pas à pas

je compte sur vous tous pour voir un jour le bout du tunnel (je sais que ce sera long) mais j'y mettrai le temps

merci

tester Mysql au moyen de PHP

Posté : 09 nov. 2007, 14:15
par aramis42
Bonjour,
J'ai enfin trouvé 2 anomalies

la 1ère
$user=" ";
au lieu de
$user="";
un espace de trop

la 2ème
$row_array =mysql_fetch_rows($result);
au lieu de
$row_array =mysql_fetch_row($result);
un s de trop à row

j'obtiens bien le tableau mais uniquement le titre de ce tableau Nom de la variable Valeur
je n'ai pas la liste comme prévu

je m'en passerai je pense que l'on peut considérer le sujet résolu

merci à tous
à la prochaine