mysql_fetch_array

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

par kkdzil » 29 mars 2007, 11:49

merci mere teresa !

bon je viens de voir qu'effectivement pas la peine de déclarer les variables ils suffie de rajouter un$devant le nom du champs pour qu'il se transforme en variable

je ne comprend pas alors pourquoi mon dernier petit script ne marche pas.

je vais faire d'autres tests je vais bien finir par trouver...

merci je reviendrai quand j'aurai mieux testé certaines choses !

par Ryle » 29 mars 2007, 11:43

Modération :
kkdzil, j'ai édité ton précédent message afin de masquer les informations de connexion... Dans la mesure où celles-ci ont tout de même été affichées sur un forum public où n'importe qui a pu les récupérer, je te recommande vivement de les modifier.

par kkdzil » 29 mars 2007, 11:39

mere teresa j'avais pas vu ton message

en fait j'ai pris un code existant et j'ai voulu le modifier mais là j'en suis à partir du tout début. Je comprend bien la théorie mais en pratique ça ne marche pas !!!

je vais faire des recherches sur le net déjà pour comprendre comment on passe du nom de champs à la variable et ensuite je me poserai la question d'afficher mes valeurs !

par kkdzil » 29 mars 2007, 11:35

j'ai mis ça au debut du script
// connection à la base de données

if(!mysql_connect("*****","*****","*****")){
echo "connexion impossible";
exit();
}else{
echo"connexion reussie";
}

mysql_select_db("formulaire");
et ma connexion est bien reussie

par contre effectivement il capte pas mon champ nom parce que meme quand je rentre une donnée il ne m'affiche pas mon echo "Insertion dans table ok"

ce que je trouve étrange c'est qu'à aucun moment j'écris un truc comme ça

$nom=nomdemonchamps(ici nom);

par mere-teresa » 29 mars 2007, 11:26

a quoi sert de faire le IF puis le WHILE ?

par Expreg » 29 mars 2007, 11:26

Perso je préfères !empty() à isset() sur des valeurs passées via un formulaire.
Tout dépend évidement de ce qu'on attend dans les champs du formulaire.

isset($_POST['pouet']) est toujours vrai dès que le formulaire est soumis.

Enfin oui, c'est une autre manière de faire.
Attention je n'ai pas dit que !empty() était la panacée et que isset() doit être mis au placard, mais dans une grande majorité des cas, !empty() c'est parfait.

par orgerix » 29 mars 2007, 11:22

Sinon, je te conseille quand tu dévellope t on script de mettre à chaque fois que tu fais un requet SQL ca :
$result=mysql_query($requet) or die(mysql_error())
Ca te permettera de voir si ta requet SQL est bonne.

par kkdzil » 29 mars 2007, 11:15

c'est celle là

if ($lig = mysql_fetch_array($mysql_resultat)) 
bon avant d'afficher je voulais vérifier que j'envoyais bien mes données mais c'est râté il fait une transaction alors que nom =""

j'ai donc supprimé une bonne partie du code !

<?

// connection à la base de données

$connexion=mysql_connect("195.8.66.15","cm148481","83mf7pi1");

mysql_select_db("formulaire");


//Si nom différent de rien on insert le nom

$nom = ''; // on défini la variable avec une valeur par défaut  
if (isSet($_POST['nom'])) // si jamais on récupère une valeur du formulaire  
$nom = $_POST['nom']; // on l'utilise en écrasant la valeur par défaut  

if ($nom != "")
	{
	//insertion dans la table formulaire
	$requete="INSERT INTO formulaire (nom) VALUES ('$nom');";
	
	mysql_query($requete,$connexion);
	
	echo "Insertion dans table ok";
	mysql_close();	
	}
	
	
	
?>

<html>
<head>
<title>Formulaire de saisie d'un nom</title>
</head>
<body>

<form name="saisie" action="<? echo $PHP_SELF; ?>" method="post">

	<table width="600" align="center">
		
		<tr>
		  <td colspan="2" align="center" heigth="25">
			<font face="arial" size="3">Entrer un nom</font>
		  </td>
		</tr>

		<tr>
		  <td width="450">
			<font face="arial" size="2">Nom</font>
		  </td>
			
		  </td>
		</tr>

		<tr>
		  <td width="450">
			<input type="text" name="nom" size="40" maxlength="40">
			</tr>
		
		<tr>
		  <td colspan="2" align="center">
			<input type="submit" value="Valider la saisie">
		  </td>
		</tr>

	</table>

</form>

</body>

</html>
et là il me met direct

Insertion dans table ok alors qu'il n'est pas censé transmettre quelque chose !

j'ai vraiement un pb avec la récupération de mon champs mais je vois pas où...

par mere-teresa » 29 mars 2007, 11:07

C'est laquelle, la ligne 44 ?

par kkdzil » 29 mars 2007, 11:01

si chu bête je l'ai mis à la suite sinon à cahque fois je lui dit que nom ne vaut rien

//Si nom différent de rien on insert le nom

$nom = ''; // on défini la variable avec une valeur par défaut 
if (isSet($_POST['nom'])) // si jamais on récupère une valeur du formulaire 
$nom = $_POST['nom']; // on l'utilise en écrasant la valeur par défaut 

if ($nom != "")
	{
	//insertion dans la table formulaire

par kkdzil » 29 mars 2007, 10:58

bon alors 2 ptits pb (j'ai tout réécris proprement mais bon)

j'ai defini nom mais je ne sais pas où mettre tes 2 autres lignes :?

if (isSet($_POST['nom'])) // si jamais on récupère une valeur du formulaire
$nom = $_POST['nom']; // on l'utilise en écrasant la valeur par défaut

avant mon test ?
if ($nom != "")
et avec mon code il bloque toujours sur mon tableau

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/sites/vhbu/8/84/58696/public/www/exosphp/index.php on line 44
Aucune donnée correspondant à votre recherche !!!

je vous le remet là il est bien propre !

<?

// connection à la base de données

$connexion=mysql_connect("host","base","mdp");

mysql_select_db("formulaire");


//Si nom différent de rien on insert le nom

$nom = ''; // on défini la variable avec une valeur par défaut 

if ($nom != "")
	{
	//insertion dans la table formulaire
	$requete="INSERT INTO formulaire (nom) VALUES ('$nom');";
	
	mysql_query($requete,$connexion);
	}

echo "nom vaut $nom";

?>

<html>
<head>
<title>Formulaire de saisie d'un nom</title>
</head>
<body>

<?


//Affichage de tous les noms triés par num


echo "<table width='600' align='center'>";
 echo "<tr><td colspan='3' align='center'><b><u>Liste des noms</u></b></td></tr>";
 
$query1 = "SELECT * FROM articles_info ORDER BY num";

$mysql_resultat = mysql_query($query1);

if ($lig = mysql_fetch_array($mysql_resultat))
{
	do
		{
		
		//récupération des données
		$num=$lig{'num'};
		$nom=$lig{'nom'};
		
			//affichage des données 
		
		  echo "<tr>";
		    echo "<td width='100'>$num</td>";
		    echo "<td width='300'>$nom</td>";
	
		  echo "</tr>";

		
		}
		
	while ($lig = mysql_fetch_array($mysql_resultat));
		
}
else
{

echo "Aucune donnée correspondant à votre recherche !!!";

}

		echo "</table>";

echo "<hr>";

//fermeture de la base
mysql_close();

?>

<form name="saisie" action="<? echo $PHP_SELF; ?>" method="post">

	<table width="600" align="center">
		
		<tr>
		  <td colspan="2" align="center" heigth="25">
			<font face="arial" size="3">Entrer un nom</font>
		  </td>
		</tr>

		<tr>
		  <td width="450">
			<font face="arial" size="2">Nom</font>
		  </td>
			
		  </td>
		</tr>

		<tr>
		  <td width="450">
			<input type="text" name="nom" size="40" maxlength="40">
			</tr>
		
		<tr>
		  <td colspan="2" align="center">
			<input type="submit" value="Valider la saisie">
		  </td>
		</tr>

	</table>

</form>

</body>

</html>
je suis bien perdue là...

par kkdzil » 29 mars 2007, 10:41

ok merci ! je vais essayer ! :D

par Ryle » 29 mars 2007, 10:36

Ta variable $nom est définie à partir de la valeur passée dans ton formulaire. Quand tu ouvres ta page pour la première fois, celle-ci ne peut pas être définie, il te faut donc gérer ce cas :)
$nom = ''; // on défini la variable avec une valeur par défaut

if (isSet($_POST['nom'])) // si jamais on récupère une valeur du formulaire
  $nom = $_POST['nom']; // on l'utilise en écrasant la valeur par défaut

ma variable

par kkdzil » 29 mars 2007, 10:20

en fait j'ai fait des essais et j'ai oublié de faire le changement de nom ailleurs.

oulà manifestement j'ai un problème avec mes variables !

j'ai un champs nom et un bouton envoyé

mais dès le départ ma variable $nom n'est pas reconnue


<?
//connexion à la base de données

$connexion=mysql_connect(host,'base','code');
mysql_select_db("formulaire");

if(!$connexion){ 

 Echo'Connection Impossible'; 

 exit(); 
 } else{ 

Echo'Connexion réussie'; 
if($nom!==""){
$requete="INSERT INTO formulaire (nom) VALUES ('$nom');";
mysql_query($requete,$connexion);
echo"transaction ok";}
}  
?>
<html>
<head>
<title>Formulaire de saisie de coordonnées</title>
</head>
<body>

<?
//affichage des noms

$query1="SELECT * FROM formulaire ORDER BY num";
$resultat = mysql_query($query1);
echo"texte avant le if";
if($lig=mysql_fetch_array($resultat))
{
	do
		{//recuperation des données
		$num=$lig{'num'};
		$nom=$lig{'nom'};
		//affichage des données
		echo "$num,$nom";
		echo "il y a des données";
		}
		while($lig=mysql_fetch_array($resultat));
		}else{
		echo"aucune donnée";
		}
		//fermeture de la bse
		mysql_close();
?>
	
<form name="toto" action="<? echo $PHP_SELF;?>" method="post">

	<table width="600" align="center">
    <tr> 
      <td colspan="2" align="center" heigth="25"><div align="left"><font face="arial" size="2">NOM</font> 
        </div></td>
    </tr>
    <tr> 
      <td width="450" height="20"><input type="text" name="nom" size="40" maxlength="40"> 
      </td>
    </tr>
  </table>
	<div align="left">
    <p> 
      <input type="submit" name="toto" value="Envoyer">
      <a href="affichage.php">Afficher la liste</a></p>
    </div>

</form>


</body>

</html>

je pense que je n'ai pas compris comment lui dire que ce qu'il y a à l'interieur de mon champs nom ça doit etre ma variable $nom

par Bobulum » 29 mars 2007, 10:08

Vérifie que
$resultat = mysql_query($query1);
est bien susceptible de te renvoyer des résultats (autrement dit si ta requête SQL est bonne).