pb insert image base données

Eléphant du PHP | 250 Messages

18 déc. 2005, 23:37

Sinon, pour répondre à truc, le "predef" c'est l'avatar predefini si aucun choix
a savoir "avx.gif"

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 déc. 2005, 23:38

les remarques restent sans réponses.
a quoi correspond $_POST['avatar']

le nom de la liste est "predef" d'apres ton code ! je sais pas trop ce que tu veut vraiment récupérer avec tout ça.
ou ce ne serai pas $_POST['predef_name'] qu'il faut récupérer ?

Edit: je ne vois pas de champ qui s'appel "avatar" en tout cas

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

19 déc. 2005, 00:49

Il y a 1 léger mieux...
en modifiant cela ainsi

if(isset($_POST['predef']))$typeava=$_POST['predef'];
else $typeava="./avatars/avx.gif";

l'avatar choisi va s'inscrire dans la base (020.gif pour ce test.)........

par contre la session ne me le renvoit pas pour affichage sur la page membre.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 déc. 2005, 02:11

tu as une redirection:
header("Location: bravo.htm");
qui en principe devrai rediriger correctement, donc n'exécute pas le reste du code qu'il y a apres cela.

Précise le probleme parceque la c'est un peu floue :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

20 déc. 2005, 23:34

aucune amélioration, meme en virant (le peu) de code qui se trouve apres le header.
Je dois préciser que cette page (bravo.htm) est seulement une page qui confirme que le membre s'est bien inscrit.
celui ci va ensuite se connecter sur la page de login qui génère un script d'authentification et c'est ensuite là que ma session démarre (les valeurs telles que sexe, age pseudo fonctionneent, mais pas l'avatar choisi)..

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 déc. 2005, 23:59

et si on repartait sur des bases d'un code propore ?! :lol:

tu parle de sessions sur une autre page apres la redirection par la page en .HTML .... j'ai du mal a suivre.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

21 déc. 2005, 01:06

le schéma actuel du site est le suivant:

inscription (php)
pointe sur ins (php)
si ok ---> bravo.htm (confirme l'inscription)
ensuite page de login (php)
pointe sur verif_ins (php) (là dedans démarre ma session)
si ok ---> page membres (php) avec la session qui affiche les infos du visiteur.............

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 déc. 2005, 01:35

Le problème initial était la non inscription de l'avatar dans la BD...
C’est réglé ?!

Le problème de session n'a absolument rien à voir avec les bouts de code ici présent.

Dès lors que tu es renvoyé sur la page "Bravo.html" tu n'as plus accès aux variables POST du formulaire, jusque la je pense que tu es d'accord

l'affectation des variables de session se passe dans "verif_ins" et l'utilisation de ces variables dans "membres" il serait donc très intéressant de voir ces pages :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

24 déc. 2005, 17:31

l'avatar choisi par le membre dans une liste déroulante via inscription.php fonctionne correctement,ledit avatar va bien se loger dans la table (xxx.gif)

la redirection se fait bien sur bravo.htm, tout va bien jusque là.

voici donc la page "verif_ins" puis "page_membre".........
<?php
session_start() ;
$message = "";
//Vérifier si le pseudo et mot de passe sont envoyés non vides
if (
isset($_POST['pseudo']) && isset($_POST["passe"])
&& !empty($_POST["pseudo"]) && !empty($_POST["passe"])
)
{
//on recupere les données du formulaire
$login = $_POST['pseudo'];
$passe = $_POST['passe'];

// on recupère les info du membre à partir de la base ce qui permet aussi
//de voir si le pseudo et pass sont corrects
//Exécuter la requête
$db= mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données"); 	   
// sélection de la base  
 mysql_select_db('xxxx',$db)  or die('Erreur de selection base'.mysql_error());
$req = mysql_query("select * from membres where pseudo='$login' and passe='$passe'",$db)or die(mysql_error());

//Tester si la requête est réussie et qu'un membre est trouvé
if ($req && mysql_num_rows($req) >0) {
   //Lire le résultat retourné par la requête
   $data = mysql_fetch_assoc($req);
   if ($data) {
            //Lire et stocker les infos  dans la session
           $_SESSION['pseudo'] = $login;
           $_SESSION['age'] = $data["age"];
           $_SESSION['sexe'] = $data["sexe"];
           $_SESSION['statut'] = $data["statut"];
           $_SESSION['billet'] = $data["billet"];
           $_SESSION['avatar'] = $data["typeava"];
           //rediriger vers la page membre
           header("Location: page_membre.php");
    }
    else //pour if ($data ...
          $message = '<p>Une erreur est survenue, Merci de recommencer</p>';
}
else //pour if ($req ...
      $message = '<p><center>Mauvais pseudo / mot de passe. Veuillez recommencer</p></center>';
}
else //pour if (isset($_POST["pseudo ...
     $message = '<p>Merci de bien vouloir passer par la page Inscription</p>';

include ("inscription.php");
echo $message;
?>
A NOTER que pour la ligne de session correspondante j'ai testé avec "predef" avec "avatar" ca ne donne rien non plus....

LA PAGE_MEMBRE
<?php
session_start();
?>
<body background="images/fond.jpg" bgproperties="fixed">
<center>
  <table width="20%" border="3"> 
    <tr>    
      <td width="20%" height="30" bgcolor="#FFFFFF"> <center>
          <font size="4"><strong><font color="#EB0130" face="Calligraph421 BT"> 
          <? echo $_SESSION['pseudo'] ?> </strong></font></font> 
        </center>
    </td>
  </tr>
</table>
  <table width="9%" border="2" bgcolor="#FFFFFF">
    <tr>
       <td width="10%" height="25"><strong><font face="Calligraph421 BT">
 		  <? echo $_SESSION['sexe']?>&nbsp;&nbsp;<? echo $_SESSION['age'] ?>&nbsp;ans
</font></strong> 
    </td>
  </tr>
</table>
  <table width="8%" border="2" bgcolor="#FFFFFF">
    <tr>
       <td width="8%" height="60"><center><? echo $_SESSION['avatar']?></center></td>
</tr></table></center>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 déc. 2005, 14:33

Donc je suppose que le chemin pour accéder à l'avatar est enregistré dans la BD.

Mais l'avatar enregistré est dans le champ "avatar" et non "typeava" d'apres la requete d'insertion:
$sql = "INSERT INTO membres(id, pseudo, passe, email, sexe, age, avatar) VALUES ('','$login','$passe','$email', '$sexe','$age','$typeava')";
il faudrait donc faire:
$_SESSION['avatar'] = $data["avatar"]; 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

26 déc. 2005, 19:25

ok, Truc.... C'était donc vraiment un problème de chemin de fichier, donc.

A présent, l'avatar s'affiche mais le nom du fichier uniquement :oops:

(exemple 044.gif) au lieu "de l'icone 044.gif...."

le fichier se nomme avatars a quel endroit du script dois-je rentrer le chemin valide du fichier, parce que là, j'avoue coincer :(

je te refile le fichier ins.php qui valide toute la saisie lors d el'inscrition d'un membre....
<?php
// On commence par récupérer les champs
if(isset($_POST['pseudo']))$login=addslashes($_POST['pseudo']);
else $login="";
if(isset($_POST['passe']))$passe=htmlentities($_POST['passe']);
else $passe="";
if(isset($_POST['email']))$email=htmlentities($_POST['email']);
else $email="";
if(isset($_POST['sexe']))$sexe=$_POST['sexe'];
else $sexe="";
if(isset($_POST['age']))$age=$_POST['age'];
else $age="";
if(isset($_POST['predef']))$typeava=$_POST['predef'];
else $typeava="./avatars/avx.gif";

// On vérifie si les champs sont vides
if(empty($login) OR empty($passe) OR empty($email) OR empty($sexe) OR empty($age))
    {
    echo '<font face="Calligraph421 BT"> Attention ! Tous les champs ne sont pas correctement renseignés.</font>';
    }
// on se connecte à MySQL
       // connexion à la base
$db= mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données"); 	   
// sélection de la base  
 mysql_select_db('xxxxl',$db)  or die('Erreur de selection base'.mysql_error());
 // on regarde si le type existe déjà
$req = mysql_query("select * from membres where pseudo='". $login ."'",$db)or die(mysql_error());
    // on compte le nombre de résultats
$res = mysql_num_rows($req); 
if($res!=0)  // le pseudo existe déjà, on affiche un message d'erreur
        {
echo '<center><font color="red">Désolé, mais ce pseudo est déjà pris !</font></center>';
        }
else  // Le pseudo est pas encore pris, on insère les informations du formulaire dans la table
        {    	
$sql = "INSERT INTO membres(id, pseudo, passe, email, sexe, age, avatar) VALUES ('','$login','$passe','$email', '$sexe','$age','$typeava')";
     // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
    // on redirige vers une page de confirmation
    	header("Location: bravo.htm");
   mysql_close($db);  // on ferme la connexion
    } 
?> 

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 déc. 2005, 20:47

A présent, l'avatar s'affiche mais le nom du fichier uniquement :oops:
(exemple 044.gif) au lieu "de l'icone 044.gif...."
normal il n'y a pas de balises image dans ton code :wink:

Pour le fun je te rappel la structure :wink:
<img src="<?php echo $_SESSION['avatar']?>" alt="" />
par contre dans la BD comment sont enregistré les images?
1. avec le chemin du style: ./avatars/image.jpg
2. ou juste le nom : image.jpg

dans le 2nd cas il faut ajuster le chemin
src="./avatars/<?php echo $_SESSION['avatar']?>"
et dans ce cas
faire de meme pour l'image par défaut:
$typeava="avx.gif";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

26 déc. 2005, 23:04

Merci beaucoup pour ta patience, Truc :wink:
en fait, le pb venait vraiment du chemin dans la base et de la syntaxe au niveau du script (le fameux "img src".....)
Merci beaucoup (et à bientot surement!)