Erreur de requête SQL
Bonjour,
J'ai 2 tables : une pour les membres où l'on s'inscrit et une autre qui stocke les profils.
La personne s'incrit et arrive sur une page où il y a 2 liens :
- un pour modifier le profil
- l'autre pour enregister le profil
Pour enregister le profil, voici ma requête. Elle marche mais je sais pas si je les bien faite pour la suite.
<div id="update_profile"><a href="update_profile.php?type=response">mise a jour de votre profil</a> </div> <div id="save_profile"><a href="profil_membre.php">enregistrer votre profil</a> </div>
<?php mysql_query("INSERT INTO profil_membre(profil_id, nom_m, prenom_m, adresse_m, tel, image_m, annonce) VALUES('','".addslashes($nom)."','".addslashes($prenom)."','".addslashes($adresse)."','".addslashes($tel)."','".addslashes($nom_img)."','".addslashes($annonce)."')"); ?>
Mais si elle veut modifier sont profil, j'aimerai récupérer ses infos. Je fais donc une requête mais ça me met comme erreur Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
Voici le code pour récupérer les infos :
<?php if($_GET['type']==response) { $ph=("SELECT login_m, nom_m, prenom_m, adresse_m, tel, annonce, port FROM membre_pets,profil_membre WHERE membre_pets.login_m=".$_SESSION['login_m']." AND profil_membre.profil_id =".$_GET['type']."") or die(mysql_error()); echo $ph; $result=mysql_query($ph); while($row=mysql_fetch_array($result,MYSQL_ASSOC)) { echo "<tr><td>".$row['nom_m']."</td><td>".$row['prenom_m']."</td><td>".$row['adresse_m']."</td><td>".$row['tel']."</td><td>".$row['annonce']."</td><td><a href='supp_genre.php?id=".$row['port']."'>S</a></td><td></tr>"; } } else { header("location: index.php"); session_unset($_SESSION['login_m']); }?>
Merci d'avance.
Réponses apportées à cette discussion
Salut Mitnick,
Avant de parler de ton problème de requête SQL, pourrais-tu faire attention au titre que tu donnes au topic et à ton orthographe pour tous tes prochains messages stp. J'ai du repassé dans ton topic pour corriger et reformuler tes phrases pleine de fautes et presque incompréhensibles. La prochaine fois, je supprimerai ton message.
Concernant ton problème, il y'a bien évidemment plusieurs erreurs dans ton code. Tout d'abord le $_GET['type']. Tu fais une comparaison sur une constante et non une chaine de caractères. Il faut mettre 'response' entre guillemets ou apostrophes dans ton if().
De plu, ta requête SQL est mal formée. En somme voici ce que tu devrais faire :
<?php
$req = mysql_query(
sprintf(
'INSERT INTO profil_membre(nom_m, prenom_m, adresse_m, tel, image_m, annonce) VALUES("%s","%s","%s","%s","%s","%s")',
mysql_real_escape_string($nom),
mysql_real_escape_string($prenom),
mysql_real_escape_string($adresse),
mysql_real_escape_string($tel),
mysql_real_escape_string($nom_img),
mysql_real_escape_string($annonce)
)
);
?>
Et niveau code PHP:
<?php
if(empty($_SESSION['login_m'])) {
$_SESSION = array();
session_destroy();
unset($_SESSION);
header('Location: http://www.tonsite.com/index.php');
}
if(isset($_GET['type']) && 'response' === $_GET['type'])
{
$sql = sprintf('
SELECT login_m, nom_m, prenom_m, adresse_m, tel, annonce, port FROM membre_pets,profil_membre WHERE membre_pets.login_m="%s" AND profil_membre.profil_id ="%s"',
mysql_real_escape_string($_SESSION['login_m']),
mysql_real_escape_string($_GET['type'])
);
$result = mysql_query($sql);
if(false !== $result && mysql_num_rows($result)>0)
while($row = mysql_fetch_assoc($result))
{
?>
<tr>
<td><?php echo htmlspecialchars($row['nom_m']); ?></td>
<td><?php echo htmlspecialchars($row['prenom_m']); ?></td>
<td><?php echo htmlspecialchars($row['adresse_m']); ?></td>
<td><?php echo htmlspecialchars($row['tel']); ?></td>
<td><?php echo htmlspecialchars($row['annonce']); ?></td>
<td><a href="supp_genre.php?id=<?php echo htmlspecialchars($row['port']); ?>">S</a></td>
</tr>
<?php
}
}
?>
++
Hugo.
merci pour cette solution que je vais testé, j'ai une autre question quand la personne rempli la partir inscription pour la premiere fois elle va donner sont login et mot de passe qui va etre dans la table membre_pets et quand elle va aller pour la premiere fois dans la partir profile qui est dans une autre table,est ce qui faut lui donner id du de la personne qui s'inscrit ou on le fait quand on veut ajouter ces info sur l'ecran.
merci
bon j'ai essayer le code ou je dois afficher les informations mais sa ne mais plus l'erreur mais j'ai rien qui s'affiche a l'écran donc je ne comprend pas
merci
Salut,
Est-ce que tu a utilisé mysql_connect() et mysql_select_db() et mysql_close() ?