afficher Profil perso éditable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher Profil perso éditable

Re: afficher Profil perso éditable

par Vince Cotta » 16 mars 2012, 20:27

Bon je sais pas quoi vous dire j'ai du faire une erreur con mais laqelle??? Quoi qu'il en soit maintenant ca marche. :mrgreen: Herm bref je veux bien juste connaitre le code ajax si possible car je ne pratique pas du tout le js #-o Mais en tout cas merci pour vos précieux conseils.

Re: afficher Profil perso éditable

par Vince COTTA » 15 mars 2012, 16:33

Merci une fois de plus. Si possible j'aimerais bien savoir "kézako AJAX" et "comment ca marche" :lol:.

Et finalement voici mon code qui "même une fois la variable $text changé ne marche pas: enfin... s'execute sans erreur mais n'insere rien dans ma BDD.
<?php
session_start();

if(empty($_SESSION['membre']))
{
header('Location: terre.php');
}

try
{
$bdd= new PDO('mysql:host=localhost;dbname=croizad', 'root', '') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}

catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}

if(!empty($_POST))
{
extract($_POST);
$valid = true;
}

else
{
$valid=false;
}

if($valid)
{
$req = $bdd->prepare('UPDATE membre SET manifeste=:manifeste) WHERE login= '.$_SESSION['membre'].'');
$req->execute(array('manifeste'=>$manifeste));
$req->closeCursor();
}
?>
<!DOCTYPE html>
<html>
	<head>
	    <meta charset="utf-8" />
		<link href="style.css" rel="stylesheet"/>
		<title> CROIZAD - Chacun sa croix</title>
		<?php include("bann.php"); ?>
		<?php include("menu.php"); ?>
	</head>
	<body>
		<div class="titre">Profil de <?php echo $_SESSION['membre'];?></div>
	<br/>
<section>
		<div id="contenu">
<?php include("menu-membre.php"); ?>
<br/>
<div class="profil2">
	<form class="form" action="manifeste.php" method="post">
	<fieldset>
	<legend>Manifeste</legend>
	<br/>
	<label for="manifeste">Ecrivez votre texte ici:</label>
	<textarea class="label" name="manifeste" id="manifeste" rows=10 cols=40></textarea><br/>
	<br/>
	<input class="submit" type="submit" value="Ecrire">
	<br/>
	</fieldset>
	</form>
	</div>
</div>
<br/>
<br/>
<?php 
$req = $bdd->prepare('SELECT * FROM membre WHERE login = '.$_SESSION['membre'].'')->fetchColumn();?>
<div class="manifeste">
<?php echo $req ?>
 <h3><?php if(isset($_SESSION['membre'])) {echo $_SESSION['membre'];} ?></h3>
 <br/>
 <p><?php if(isset($data['manifeste'])) {echo $_SESSION['manifeste'];} ?></p>
</div>
	<br/>
	</div>
	</section>
             <?php include("footer.php"); ?>
	</body>
</html>			 

Re: afficher Profil perso éditable

par moogli » 15 mars 2012, 07:53

Salut,

Pour vérifier l'existence du pseudo dans la base, je te conseille d'utilisé Ajax c'est plus pratique, professionnel et évite a l'utilisateur de rechargé la page inutilement juste pour luis dire que le pseudo qu'il a choisi
+ pro c'est un point de vue effectivement ;)

Sinon effectivement il s'agit de la même requête que lors de l'inscription (par exemple sélect count(*) as Nb from gens where pseudo='le pseudo choisis'. Le résultat doit être zéro ou un.

Apresw effectivement sans le code on ne peux pas t'aider ça reste purement de la spéculation. (juste la validation du formulaire pas la peine de mettre le reste si ça n'en fait pas partis).

Si tu te lance dans Ajax retien juste deux principes
- tous ce que tu fais doit être réalisable sans js (donc quelque soit le navigateur tu te retrouve pas avec une merde sur l'écran t'en pêchant de faire quoique ce soit ;) )
- JS ne dispense des validations côté serveur ça vient donc en surplus, à coder après donc.
Aller tiens un 3ème mais plus général : ne jamais faire confiance à une donnée que tu n'a pas rentré toi même (à toute quoi :mrgreen: )

@+

Re: afficher Profil perso éditable

par libertux » 14 mars 2012, 20:34

Salut,

Pour vérifier l'existence du pseudo dans la base, je te conseille d'utilisé Ajax c'est plus pratique, professionnel et évite a l'utilisateur de rechargé la page inutilement juste pour luis dire que le pseudo qu'il a choisi existe déjà.

Bon, c'est mon point de vue :)

si tu a des soucies pour le faire fait signe te je vais voir pour planifier un peut de temps pour vous préparer un exemple fonctionnel ;)

Bon Travail

Re: afficher Profil perso éditable

par Vince COTTA » 14 mars 2012, 18:56

Merci pour vos réponses,
J''avais toutefois réglé pas mal de ces problèmes tout seul au final (C'est bien la peine de demander crétin :evil: ) Mais bon m'en voulez pas j'ai toujours besoin de vos précieux commentaires car mes deux pages ne sont pas terminé :D Par exemple pour la page d'ajout d'info j'aimerai donner la possibilité de changer également le pseudo et faire donc une vérification si celui ci n'existe pas. Alors je copie colle le "if reqcount>0 $erreur pseudo déja pris. En sélectionnant l'ID" (formule simplifié est il nécessaire de le préciser :wink: ) qui marche très bien lors de l'inscription et la non fin bref. Existe-t'il une autre solution? Et en ce qui concerne ma deuxième page carnage totale rien ne s'affiche plus. #-o Mais bon je vais suivre vos conseils à propos de "$text" et tenter par moi même, de résoudre tout ça sinon je reviens et je $_POST le code ^^.

Re: afficher Profil perso éditable

par libertux » 14 mars 2012, 18:38

Salut,

évitez les mots réservés (text)!

dans ton code il y a :
...
if($valid)
{
$req = $bdd->prepare('UPDATE membre SET (text=:text)');
$req->execute(array('text'=>$text));
$req->closeCursor();
}
...
alors ce code vas mettre ajour toutes les lignes de la table "membre" car il n y a pas la close "where" je n'utilise pas PDO mais il faut avoir un truck comme :
...
if($valid)
{
$req = $bdd->prepare('UPDATE membre SET (text=:text) where id='.$_SESSION['id']);
$req->execute(array('text'=>$text));
$req->closeCursor();
}
...
si vous enregistrer l'id du membre dans une variable session ça devra marché.

Bon Travail,

Re: afficher Profil perso éditable

par xTG » 13 mars 2012, 20:36

text est un mot réservé en SQL, cela provient sans doute de là.

Re: afficher Profil perso éditable

par Vince COTTA » 13 mars 2012, 20:28

Tout à fait oui après avoir revu mes sources j'ai résolu le problème et malgré quelques obstacles j'ai enfin réussi sans toutefois pouvoir vérifier si le pseudo existait mais qu'importe je ferais sa plus tard. Toutefois je suis sur un autre soucis. J'ai une text area qui ne veut pas s’insérer dans ma bdd voyez vous pourquoi?
<?php
session_start();

if(empty($_SESSION['membre']))
{
header('Location: terre.php');
}

try
{
$bdd= new PDO('mysql:host=localhost;dbname=croizad', 'root', '') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}

catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}

if(!empty($_POST))
{
extract($_POST);
$valid = true;
}

else
{
$valid=false;
}

if($valid)
{
$req = $bdd->prepare('UPDATE membre SET (text=:text)');
$req->execute(array('text'=>$text));
$req->closeCursor();
}
?>
<!DOCTYPE html>
<html>
	<head>
	    <meta charset="utf-8" />
		<link href="style.css" rel="stylesheet"/>
		<title> CROIZAD - Chacun sa croix</title>
		<?php include("bann.php"); ?>
		<?php include("menu.php"); ?>
	</head>
	<body>
		<div class="titre">Profil de <?php echo $_SESSION['membre'];?></div>
	<br/>
<section>
	<br/>
		<div id="contenu">
<ul class="profil">
<li><a href="profil.php">Informations</a></li>
<li><a href="profil1.php">Editer E-m@il|Mot de Passe</a></li>
<li><a href="manifeste.php">Manifeste</a></li>
<li><a href="ajout.php">Ajouter infos</a></li>
</ul>
<div class="profil2">
	<form action="manifeste.php" method="post">
	<fieldset>
	<label for="text">Manifeste</label><br/>
	<textarea name="text" id="text" rows=10 cols=40></textarea><br/>
	<br/>
	<input type="submit" value="Ecrire">
	<br/>
	</fieldset>
	</form>
	</div>
</div>
<br/>
<br/>
<?php 
$req = $bdd->prepare('SELECT * FROM membre WHERE login = '.$_SESSION['membre'].'')->fetchColumn();?>
<div class="manifeste">
<?php echo $req ?>
 <h3><?php if(isset($_SESSION['membre'])) {echo $_SESSION['membre'];} ?></h3>
 <br/>
 <p><?php if(isset($data['text'])) {echo $_SESSION['text'];} ?></p>
</div>
	<br/>
	</div>
	</section>
             <?php include("footer.php"); ?>
	</body>
</html>			 

Re: afficher Profil perso éditable

par xTG » 13 mars 2012, 19:33

Une requête SQL ce n'est qu'une chaîne de caractère, donc on y concatène ce que l'on veut.
$mot = 'test';
$phrase = 'Ceci est un ' . $mot . ' de concaténation.';
La question serait plutôt, d'où peut provenir l'identifiant unique à insérer dans la requête.
Et là on ne peut répondre à ta place car cela dépend de ton système de connexion.

Re: afficher Profil perso éditable

par Vince COTTA » 13 mars 2012, 19:31

Bah j'essaye plusieurs trucs, mais le plus judicieux serait de mettre l'id cependant comment peut on implanter un id dans un WHERE style $_SESSION['id'] est-ce possible?

Re: afficher Profil perso éditable

par xTG » 13 mars 2012, 18:52

WHERE quoi ?

Re: afficher Profil perso éditable

par Vince COTTA » 13 mars 2012, 18:50

Bon ca marche maintenant sauf que cela à pour effet de remplir toute mes lignes c'est à dire que si un membre change ses infos tous les membres auront les mêmes infos que ce dernier. J'ai essayé un UPDATE WHERE mais sans succes ^^

Re: afficher Profil perso éditable

par Vince COTTA » 13 mars 2012, 18:30

A savoir, ce problème m'arrive également lorsque j’utilise mon autre fichier php cité précédemment.

Re: afficher Profil perso éditable

par Vince COTTA » 13 mars 2012, 18:24

J'en suis à présent à un point ou aucun message d'erreur n'apparait mais rien ne s’insère dans la BDD. Pour plus de sécurité j'ai toutefois remplacé tous les champs prénom par prenom également dans la BDD

Re: afficher Profil perso éditable

par libertux » 11 mars 2012, 22:23

Salut,

Avez vous le message d'erreur ? si non voulez vous vérifier ce qui suit :
...
'prénom'=>$prénom,
...
d'habitude les lettres accentués posent souvent problèmes!

Bon travail,