Page 1 sur 1

Espace membres : Modification non effectuée

Posté : 12 sept. 2013, 13:54
par jeanmaki
Bonjour,

Je réalise mon espace membre en php/javascript et je cherche plus précisemment à modifier le profil des membres pour cela j'ai mis en place un formulaire ou j'essaie pour l'instant de modifier uniquement le nom , le formulaire débute au niveau du <h3>Modifier son profil</h3>

profil_page.html
<!DOCTYPE html>
<html lang="en" >
<head>
    <title>Powerful Chat System - Lesson 7</title>
    <link href="css/main.css" rel="stylesheet" type="text/css" />
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="js/customizer.js"></script>
    <style>
        .container {
            {custom_styles}
        }
    </style>
</head>
<body>
    <header>
        <h2>Powerful Chat System - Lesson 7</h2>
        <a href="http://www.script-tutorials.com/powerful-chat-system-lesson-7/" class="stuts">Back to original tutorial on <span>Script Tutorials</span></a>
    </header>
    <div class="clear"></div>
    <div class="container">
        <div class="column">
            <h3>Name: {name}</h3>
            <h3>First name: {fname}</h3>
            <h3>Last name: {lname}</h3>
            <h3>About: {about}</h3>
            <h3>Date Reg: {datereg}</h3>
            <h3>Role: {role}</h3>
            <h3>Avatar: <img src="{avatar}" style="vertical-align:middle" /></h3>
        </div>
        <div class="column">
            <p><a href="index.php">Back to chat</a></p>
        </div>
    </div>
    <div class="container" {cust_visible}>
        <h2>You can customize your profile page</h2>
        <div class="column">
            <canvas id="color_canvas" width="370" height="60"></canvas>
        </div>
        <div class="column">
            <div class="customizer_buttons">
                <div id="preview"></div>
            </div>

            <form action="profile.php" method="GET" target="change_color_result">
                <input type="hidden" value="{id}" name="id">
                <input type="hidden" value="color" name="color" id="color">
                <input type="hidden" value="change_color" name="action">
                <input id="submit" type="submit" name="submit" value="Apply">
            </form>
            <iframe class="avatar_iframe" name="change_color_result"></iframe>
        </div>
    </div>
	
	<div class="container" >
        <div class="column">
		<h3>Modifier son profil</h3>
		 <form method="POST" action="profile.php">
    <label for="name">Pseudo : </label><input type="text" value="{name}" name="name" maxlength="20" /><br/>
    <label for="action">Action : </label><input type="submit" name="Envoyer" value="Envoyer" />
    <input name="Effacer" value="Effacer" type="reset" />
    </form>
    <br/>
		
	</div>
	</div>

    <div class="sidebar">
        <div>
            <h2>Online Members Block</h2>
            {online_members}
        </div>
        <div>
            <h2>Last Members</h2>
            {profiles}
        </div>
    </div>

    <div class="priv_dock_wrap"></div>
    {priv_js}

</body>
</html>
et voici le code php :
<?php
session_start();
// set error reporting level
if (version_compare(phpversion(), '5.3.0', '>=') == 1)
  error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
else
  error_reporting(E_ALL & ~E_NOTICE);

require_once('classes/CMySQL.php');
require_once('classes/CLogin.php');
require_once('classes/CProfiles.php');


$iPid = (int)$_GET['id'];

$sPrivChatJs = '';
if ($_SESSION['member_id'] && $_SESSION['member_status'] == 'active' && $_SESSION['member_role']) {
    if ($_GET['action'] == 'change_color') {
        $iRes = $GLOBALS['CProfiles']->changeColor($_GET['color']);
        header('Content-Type: text/html; charset=utf-8');
        echo ($iRes == 1) ? '<h2 style="text-align:center">New color has been accepted, refresh main window to see it</h2>' : '';
        exit;
    }
    $sPrivChatJs = '<script src="js/priv_chat.js"></script>';
}

$aInfo = $GLOBALS['CProfiles']->getProfileInfo($iPid);

$sName = $aInfo['name'];
$sFName = $aInfo['first_name'];
$sLName = $aInfo['last_name'];
$sAbout = $aInfo['about'];
$sDate = $aInfo['date_reg'];
$sRole = $GLOBALS['CProfiles']->getRoleName($aInfo['role']);
$sAvatar = $GLOBALS['CProfiles']->getProfileAvatar($iPid);
$sCustomBG = ($aInfo['color']) ? 'background-color:#'.$aInfo['color'] : '';

// get profiles lists
$sProfiles = $GLOBALS['CProfiles']->getProfilesBlock();
$sOnlineMembers = $GLOBALS['CProfiles']->getProfilesBlock(10, true);

// draw common page
$aKeys = array(
    '{id}' => $iPid,
    '{name}' => $sName,
    '{fname}' => $sFName,
    '{lname}' => $sLName,
    '{about}' => $sAbout,
    '{datereg}' => $sDate,
    '{role}' => $sRole,
    '{avatar}' => $sAvatar,
    '{custom_styles}' => $sCustomBG,
    '{cust_visible}' => ($_SESSION['member_id'] == $iPid) ? '' : 'style="display:none"',
    '{profiles}' => $sProfiles,
    '{online_members}' => $sOnlineMembers,
    '{priv_js}' => $sPrivChatJs
);
echo strtr(file_get_contents('templates/profile_page.html'), $aKeys);

// Modification profil
if ($_SESSION['name'] == 'active'){
$affiche = mysql_query("SELECT * FROM `cs_profiles` WHERE `name`='{$sName}'");

$result = mysql_fetch_assoc($affiche);
extract($result);
}

    if(isset($_POST['Envoyer'])){
        //si pseudo vide
        if(empty($_POST['name'])){
            echo '<div class="erreur">Veuillez saisir un pseudo!</div>';
        }
        
		//c'est ok
        else {
            //On sélectionne les données
            $donnees = mysql_query("SELECT name FROM `cs_profiles` WHERE `name`!='{$sName}'") or die ('Erreur :'.mysql_error());
 
            while($result = mysql_fetch_array($donnees)){
                //on vérifie si le pseudo est utilisé
                if(($_POST['name'])== $result['name']){
                    echo '<div class="erreur">Ce pseudo est utilisé!</div>'; return false;
                }             
            }
			 //si c'est ok
 
            //on modifie les données du membre
            $modif = mysql_query("UPDATE `cs_profiles` SET `name`='".($_POST['name'])."' WHERE `id`='{$iPid}'");
			//Si il y a une erreur
            if (!$modif) {
                die('Requête invalide : ' . mysql_error());
            }
			//tout est ok
            else{
                //on informe le membre
                echo '<div class="ok">Modification enregistré avec succès! Vous allez être déconnecté du service pour ouvrir une nouvelle session.</div>';
                
				echo '<script type="text/javascript"> window.setTimeout("location=(\'index.php?dec=close&session=new\');",3000) </script>';
            }
        }
    }

    ?>
Lorsque je modifie le nom et bien tout les "echo" écrits dans le code sont affichés le cas échéant , mais la modification ne s'effectue pas...

Merci de me venir en aide

Re: Espace membres : Modification non effectuée

Posté : 12 sept. 2013, 18:43
par xTG
Essaies cela pour trouver ce qui pose problème :
$sql = "UPDATE `cs_profiles` SET `name`='".($_POST['name'])."' WHERE `id`='{$iPid}'";
echo $sql;

Re: Espace membres : Modification non effectuée

Posté : 16 sept. 2013, 08:36
par jeanmaki
il ne m'affiche toujours pareil, "modification enregistré avec succes" mais aucune modification ne s'est effectué

Re: Espace membres : Modification non effectuée

Posté : 16 sept. 2013, 11:00
par xTG
Et la requête, qu'affiche-t-elle ? :)

Re: Espace membres : Modification non effectuée

Posté : 16 sept. 2013, 13:27
par jeanmaki
C'est bon je crois que j'ai réussi c'était la requête sur le "id" qui ne marchait pas, du coup j'ai changé id part "statut"= active et ça à marché

Merci

Re: [RESOLU] Espace membres : Modification non effectuée

Posté : 16 sept. 2013, 18:02
par xTG
Sauf que quand tu auras deux n-uplets qui seront en active tu vas updater les deux avec le même name...
L'affichage de la requête que je te proposais n'était pas bénin.
'{chiffre}' est différent de 'chiffre'
A moins que tu ais enregistré les accolades dans ta base de données. ;)

Re: [RESOLU] Espace membres : Modification non effectuée

Posté : 17 sept. 2013, 15:09
par jeanmaki
oui les accolades sont enregistrés dans la base de donnée... enfin je crois ^^

Re: [RESOLU] Espace membres : Modification non effectuée

Posté : 18 sept. 2013, 11:16
par xTG
oui les accolades sont enregistrés dans la base de donnée... enfin je crois ^^
|*()