Erreur de requête SQL

Rechercher

Erreur de requête SQL

Par mitnick  -  4 reponses  -  Le 27/09/2008 18:05  -  Editer  - 

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

Par Emacs  -  Le 27/09/2008 21:09  -  Haut de page  - 

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.

 
Par mitnick  -  Le 28/09/2008 11:54  -  Haut de page  - 

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

 
Par mitnick  -  Le 28/09/2008 12:37  -  Haut de page  - 

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

 
Par ZikoNFS  -  Le 29/09/2008 21:51  -  Haut de page  - 

Salut,

Est-ce que tu a utilisé mysql_connect() et mysql_select_db() et mysql_close() ?

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |