8797 sujets

Développement web côté serveur, CMS

bonjour
voila j'aimerais savoir j'ai crée 2 table une inscription et une autre profile kan la personne s'inscrit elle arrive sur 2 lien qui sont
<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>


et j'aimerais que quand la personne clique sur mise a jour du profile et bien que c'est information s'affiche ,donc quand je clique je vais bien sur la page mais il y a rien qui s'affiche et j'ai même pas d'erreur
voici le code

 <?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);
      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
  
      }
  
      }
  
      ?>


merci
hello,

A priori, je dirais que ça vient de ta requête le problème vu que ça passe le premier if et ça ne peut que rentrer dans le deuxieme étant donnée que ton url est : ?type=response.

Met ça avant ton while, pour savoir combien d'enregistrements retourne ta requête :


echo mysql_num_rows($result);


Au pire, fais deux trois affichages de tes sessions pour voir si les conditions sont bien remplies.
Modifié par thoas (28 Sep 2008 - 15:39)
sa me retourne zero.

mais comment faire que quand la personne s'inscrit elle va sur la page pour enregistrer un nouveaux profil car moi j'ai fais comme sa
ici la personne ce connecter

<?php $check_exist= mysql_query("SELECT inscrit_id, login_m FROM membre_pets WHERE login_m='".$login."' AND pwd_m= '".$pwd."'");
	
	if(mysql_num_rows($check_exist)>0)
	{
		// on récupère les données du compte
		$line=mysql_fetch_array($check_exist,MYSQL_ASSOC);
		
		//si le login est bon il est connecte
		$query_online = mysql_query("UPDATE membre_pets WHERE login_m='".$line["login_m"]."'");
        $_SESSION["id"] = $line["inscrit_id"];
		$_SESSION["login_m"] = $line["login_m"];
	
		header("Location: menu_profil.php");
	}
	else
	{
			echo 'merci de vous inscrit Pour  sur le lien <a href="inscrit_membre.php">inscription</a>';
	}
	mysql_close();
}


?>


ensuite elle clique sur un lien et elle remplir et voici le script qui verifié et qui insert dans la base de donnée est ce que c'est bon ce que j'ai fais en sachant que mon login est les information du profil sont dans 2table differente? voici le code

<?php 
require_once('conexion_mysql/connexionMysql.php');
session_start();
		$pseudo=$_SESSION['login_m'];
        
		$nom     =htmlspecialchars($_POST['nom_m']);
		$prenom  =htmlspecialchars($_POST['prenom_m']);
		$adresse =htmlspecialchars($_POST['adresse_m']);
		$tel     =htmlspecialchars($_POST['tel']);
		$annonce =htmlspecialchars($_POST['annonce']);
		
	//verifie les champs;
	if(empty($nom)||empty($prenom)||empty($adresse)||empty($adresse)||empty($tel)||empty($annonce))
	{
		echo"il faut remplir";
	}
	else
	{	
		//verifie le upload
		$_FILES['image_m']['name'];
		$_FILES['image_m']['type'];
		$_FILES['image_m']['size'];
		$_FILES['image_m']['tmp_name'];
		$_FILES['image_m']['error'];
		
		if($_FILES['image_m']['error']>0 )$erreur="erreur lors du transfert";
		if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros";
		
		$extension_valide=array("png","jpeg","gif","jpg");
		$extension_uplod=strtolower(substr(strrchr($_FILES['image_m']['name'],'.'),1));
		if(in_array($extension_uplod,$extension_valide)) echo"extension correct";
		
		
		$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
		if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande";
	
		
		
		$nom_img="fichier/{$_SESSION['login_m']}.{$extension_uplod}";
		$resultat= move_uploaded_file($_FILES['image_m']['tmp_name'],$nom_img);
		
		if($resultat==true)
		{     
			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)."')");
		
		}
		else
		{
			echo"transfert pas bon";
		}
	}
?>


merci
Modifié par devweb75 (28 Sep 2008 - 16:27)
Si ton utilisateur existe dans la base de données c'est que ta requête est fausse.

Je pense que c'est ta clause WHERE qui pose problème :


$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 ="[b]%s[/b]"',
      mysql_real_escape_string($_SESSION['login_m']),
      [b]mysql_real_escape_string($_GET['type'])[/b]
);


Tu cherches l'utilisateur qui possède le login contenu dans ta clé login_m de sessions et qui a l'identifiant de profil $_GET['type'] autrement dit : la chaine de caractère "response".

Pour moi profil_membre.profil_id est un integer et représente l'id du profil de ton membre.
Après je peux me tromper en me fiant un peu trop au nom de ta colonne.
Modifié par thoas (28 Sep 2008 - 16:32)
je vais mettre mon schema

dans ma table profil_membre
profil_id qui est en autoincrementation
nom_m
prenom_m et tout le reste

ensuite dans la table membre_pets il y a
inscrit_id qui est en autoincrementation
login_m
pwd_m
email etc....
donc ensuite c'est comment je les relie qui est pas bon?
Je te traduis ta requête en SQL pour un utilisateur lambda, par rapport au script que tu as collé au premier post :


SELECT login_m, nom_m, prenom_m, adresse_m, tel, annonce, port 
FROM membre_pets,profil_membre 
WHERE membre_pets.login_m="lambda" 
AND profil_membre.profil_id ="response"'


C'est cette équivalence qui ne va pas dans ton script (troisième paramètre de ton sprintf) :


profil_membre.profil_id = $_GET['type']


Lorsque tu executes ton script $_GET['type'] contient response.
En gros profil_membre.profil_id attend l'identifiant du profil du membre dans la base de données et dans ton script tu lui donnes la chaine de caractère response.

Tu vois où je veux en venir ou tu as besoin que je reformule?
Modifié par thoas (28 Sep 2008 - 16:46)
en faite il trouve pas $_GET['type']

mais comment je dois faire pour qui le prend en compte car la je vois pas?
tu pense il faut mieux que je refais ma requête normalement sans le sprintf

parce que la je suis perdu
re,

Dans ta table profil_membre il doit y avoir l'identifiant du membre inscrit en clé étrangère, en gros ton schéma doit ressembler à ça :


create table profil_membre (
	-- les colonnes qui étaient dans ta table
	membre_pets_id int(11) default null
);

-- ajout de la clé étrangère

alter table profil_membre
	ADD CONSTRAINT `fk_membre_pets_id_membre_pets` FOREIGN KEY (membre_pets_id) REFERENCES membre_pets (inscrit_id);


De cette façon, à partir de la table membre_pets tu pourras récuperer qui lui est attaché.
Je te conseille de te documenter sur les jointures.
Modifié par thoas (28 Sep 2008 - 17:03)
sa membre_pets_id int(11) default null

je le mais dans ma table profile_membre c'est ca?
ou je peu reprendre le login aussi sa veut dir que dans ma table profile_membre je lui mais le login_m sa peut marcher?
ou si je reprend inscrit_id et je le mais dans ma table profil sa pourrais marcher? car dans l'autre elle est incrementer
Modifié par devweb75 (28 Sep 2008 - 17:33)