Page 1 sur 2
mysql_fetch_array
Posté : 29 mars 2007, 09:57
par kkdzil
bonjour,
voici mon code pour afficher des données (sans mise en page !)
//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($mysql_resultat));
}else{
echo"aucune donnée";
}
//fermeture de la bse
mysql_close();
?>
mais quand je lance mon script il me marque
Connexion réussietransaction ok texte avant le if
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 36
aucune donnée
mai sje ne vois pas pourquoi il me dit que mon argument n'est pas bon !
merci
Posté : 29 mars 2007, 09:59
par mere-teresa
Modération :
kkdzil, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).
Je l'ai fait pour toi cette fois ci, mais je ne réitérerais pas.
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é : 29 mars 2007, 10:03
par mere-teresa
while($lig=mysql_fetch_array($mysql_resultat));
D'où sort la var $mysql_resultat ?
c'est ma variable qui marche pas
Posté : 29 mars 2007, 10:06
par kkdzil
merci pour les balises
bon en fait j'ai un problème plus haut dans le code vu mes nouveaux tests.
je vais y reflechir....
Posté : 29 mars 2007, 10:08
par Bobulum
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).
ma variable
Posté : 29 mars 2007, 10:20
par kkdzil
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
Posté : 29 mars 2007, 10:36
par Ryle
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
Posté : 29 mars 2007, 10:41
par kkdzil
ok merci ! je vais essayer !

Posté : 29 mars 2007, 10:58
par kkdzil
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à...
Posté : 29 mars 2007, 11:01
par kkdzil
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
Posté : 29 mars 2007, 11:07
par mere-teresa
C'est laquelle, la ligne 44 ?
Posté : 29 mars 2007, 11:15
par kkdzil
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ù...
Posté : 29 mars 2007, 11:22
par orgerix
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.
Posté : 29 mars 2007, 11:26
par Expreg
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.
Posté : 29 mars 2007, 11:26
par mere-teresa
a quoi sert de faire le IF puis le WHILE ?