tester mysql au moyen de php

Eléphanteau du PHP | 13 Messages

07 nov. 2007, 10:12

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

d0m
Mammouth du PHP | 1141 Messages

07 nov. 2007, 10:18

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

Mammouth du PHP | 19672 Messages

07 nov. 2007, 10:19

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 nov. 2007, 10:24

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 13 Messages

07 nov. 2007, 16:05

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

Mammouth du PHP | 19672 Messages

07 nov. 2007, 16:08

Compte tes accolades ouvrantes et compare avec le nombre d'accolades fermantes...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

07 nov. 2007, 16:56

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

Mammouth du PHP | 19672 Messages

07 nov. 2007, 16:58

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 nov. 2007, 17:03

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

08 nov. 2007, 18:46

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

Eléphanteau du PHP | 13 Messages

09 nov. 2007, 14:15

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