Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: DarkShoka, julienb, PrimFX
Auteur Sujet: Probleme Biographie PHP

DarkShoka

Messages: 21

Bonjour,

Mon probleme est simple mais chiant Sourire

J'ai un systeme d'inscription sur mon site ou on peut mettre sa biographie (cela marche nickel)

Mais le probleme c'est que quand l'utilisateur edite sa biographie via une page d'édition de son profil.

Quand il met a jour son profil il que le premier mot de sa biographie qui est sauvegardé dans la bdd :(

HELP Merci de votre aide.
Publicité

PrimFX
Membre Premium

Messages: 113

Salut !

Peux-tu nous envoyer ton code ? Difficile de te donner une solution sans voir à quel endroit ça déconne :p

@+

DarkShoka

Messages: 21

Le code de l'inscription ou de l'édition ?

PrimFX
Membre Premium

Messages: 113

Eh bien le code dont le bug est susceptible de provenir, donc ici ton système d'édition Clin d'oeil D'ailleurs si tu peux rajouter un ou deux screenshots de ta base de données (en masquant les infos confidentielles si besoin bien sûr), ce serait pas mal histoire de voir comment sont tes champs (varchar, int, text,...) parce que l'erreur peut venir du code mais aussi de ta base de donnée Tire la langue

TheFlameflo

Messages: 303

Pour le code à mettre, ça dépend aussi si tu as décidé de demander la bio à l'inscription. Si c'est le cas, met l'inscription et l'édition. Sinon, juste l'édition ! Sourire

DarkShoka

Messages: 21


Je tiens à dire que j'ai supprime le champ de texte pourla biographie car il y a des bugs comme je lai dis
<?php    
    session_start();
    $bdd = new PDO('mysql:host=127.0.0.1;dbname=studentseeker', 'root', '');
        $mail = htmlspecialchars($_SESSION['mail']);
        $reqmail = $bdd->prepare("SELECT * FROM espace_membre WHERE mail = ?");
        $reqmail->execute(array($mail));
        $mailexist = $reqmail->rowCount();
    if(isset($_SESSION['id']))
    {
        $requser = $bdd->prepare("SELECT * FROM espace_membre WHERE id = ?");
        $requser->execute(array($_SESSION['id']));
        $user = $requser->fetch();        
        if(isset($_POST['newage']) AND !empty($_POST['newage']) AND $_POST['newage'] != $user['age'])
        {
            $newage = htmlspecialchars($_POST['newage']);
            $insertage = $bdd->prepare("UPDATE espace_membre SET age = ? WHERE id = ?");
            $insertage->execute(array($newage, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_POST['newnumero']) AND !empty($_POST['newnumero']) AND $_POST['newnumero'] != $user['tel'])
        {
            $newnumero = htmlspecialchars($_POST['newnumero']);
            $insertnumero = $bdd->prepare("UPDATE espace_membre SET numero = ? WHERE id = ?");
            $insertnumero->execute(array($newnumero, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_POST['newcodepostal']) AND !empty($_POST['newcodepostal']) AND $_POST['newcodepostal'] != $user['codepostal'])
        {
            $newcodepostal = htmlspecialchars($_POST['newcodepostal']);
            $insertcodepostal = $bdd->prepare("UPDATE espace_membre SET codepostal = ? WHERE id = ?");
            $insertcodepostal->execute(array($newcodepostal, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_POST['newville']) AND !empty($_POST['newville']) AND $_POST['newville'] != $user['ville'])
        {
            $newville = htmlspecialchars($_POST['newville']);
            $insertville = $bdd->prepare("UPDATE espace_membre SET ville = ? WHERE id = ?");
            $insertville->execute(array($newville, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_POST['newprix']) AND !empty($_POST['newprix']) AND $_POST['newprix'] != $user['prix'])
        {
            $newprix = htmlspecialchars($_POST['newprix']);
            $insertprix = $bdd->prepare("UPDATE espace_membre SET prix = ? WHERE id = ?");
            $insertprix->execute(array($newprix, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }              
        if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
        {
        $newmail = htmlspecialchars($_POST['newmail']);
        $insertmail = $bdd->prepare("UPDATE espace_membre SET mail = ? WHERE id = ?");
        $insertmail->execute(array($newmail, $_SESSION['id']));
        header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_POST['newdispo']) AND !empty($_POST['newdispo']) AND $_POST['newdispo'] != $user['dispo'])
        {
        $newdispo = htmlspecialchars($_POST['newdispo']);
        $insertdispo = $bdd->prepare("UPDATE espace_membre SET dispo = ? WHERE id = ?");
        $insertdispo->execute(array($newdispo, $_SESSION['id']));
        header('Location: profil.php?id='.$_SESSION['id']);
        }
        if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
        {            
            $tailleMax = 2097152;
            $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
            if($_FILES['avatar']['size'] <= $tailleMax)
            {
                $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
                if(in_array($extensionUpload, $extensionsValides))
                {
                    $chemin = "membre/avatar/".$_SESSION['id'].".".$extensionUpload;
                    $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
                    if($resultat)
                    {
                        $updateAvatar = $bdd->prepare("UPDATE espace_membre SET avatar = :avatar WHERE id = :id");
                        $updateAvatar->execute(array('avatar' => $_SESSION['id'].".".$extensionUpload, 'id' => $_SESSION['id']));
                        header('Location: profil.php?id='.$_SESSION['id']);
                    }
                    else
                    {
                        $erreur = "Erreur durant l'importation de la photo de profil";
                    }
                }
                else
                {
                   $erreur = "Votre photo de profil doit être au format jpg, jpeg, gif ou png !"; 
                }
            }
            else
            {
                $erreur = "Votre photo de profil ne doit pas dépasser 2Mo !";
            }            
        }
        if(isset($_POST['newcom']) AND !empty($_POST['newcom']) AND $_POST['newcom'] != $user['competences'])
        {
            $newcom = htmlspecialchars($_POST['newcom']);
            $insertcom = $bdd->prepare("UPDATE espace_membre SET competences = ? WHERE id = ?");
            $insertcom->execute(array($newcom, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }        
        if(isset($_POST['newniveau']) AND !empty($_POST['newniveau']) AND $_POST['newniveau'] != $user['niveau'])
        {
            $newniveau = htmlspecialchars($_POST['newniveau']);
            $insertniveau = $bdd->prepare("UPDATE espace_membre SET niveau = ? WHERE id = ?");
            $insertniveau->execute(array($newniveau, $_SESSION['id']));
            header('Location: profil.php?id='.$_SESSION['id']);
        }
        
    }  
        
    else
    {
    header("Location: connexion.php");
    }  
?>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="profil.css" />
        <link rel="icon" type="image/ico" href="images/favicon.ico"/>
            <!--[if lte IE 7]>
            <link rel="stylesheet" href="style_ie.css" />
            <![endif]-->
        <title>Edition du profil</title>
    </head>
    <body>
        <div align="center">
            <h2 id="titre_edition">Edition du profil</h2>
            
                <form method="POST" action="" enctype="multipart/form-data">
                <table>                  
                    <tr><td><label>Mail:</label></td>
                    <td><input type="text" name="newmail" placeholder="Nouveau mail" value=<?php echo $user['mail']; ?> /></td></tr>
                    <tr><td><label>Age:</label></td>
                    <td><input type="text" name="newage" placeholder="Nouvelle age" value=<?php echo $user['age']; ?> /></td></tr>
                    <tr><td><label>Telephone:</label></td>
                    <td><input type="text" name="newnumero" placeholder="Nouveau numero" value=<?php echo $user['numero']; ?> /></td></tr>
                    <tr><td><label>Département:</label></td>
                    <td><input type="text" name="newcodepostal" placeholder="Nouveau code postal" value=<?php echo $user['codepostal']; ?> /></td><tr><br />
                    <tr><td><label>Ville:</label></td>
                    <td><input type="text" name="newville" placeholder="Nouvelle ville" value=<?php echo $user['ville']; ?> /></td></tr>
                    <tr><td><label>Prix:</label></td>
                    <td><input type="text" name="newprix" value=<?php echo $user['prix']; ?>€ /></td></tr>
                    <tr><td><label>Avatar:</label></td>
                    <td><input type="file" name="avatar" /></td></tr>
                    <tr><td><label>Compétences:</label></td>
                    <td><input type="text" name="newcom" value=<?php echo $user['competences']; ?> /></td></tr>                                       
                    <tr><td><label>Niveau des cours:</label></td>
                    <td><SELECT name="newniveau" size="1" id="selecte" value=<?php echo $user['niveau']; ?> />
                    <OPTION>Primaire
                    <OPTION>Collège
                    <OPTION>Lycée
                    <OPTION>Primaire et -
                    <OPTION>Collège et -
                    <OPTION>Lycée et -
                    <OPTION>Études supérieures                   
                    </SELECT></td></tr>
                    <tr><td><label>Disponibilité:</label></td>
                    <td><SELECT name="newdispo" size="1">
                    <OPTION>Oui
                    <OPTION>Non                    
                    </SELECT></td></tr>
                    <p><strong>Pour changer votre biographie veuillez nous contacter par mail.</strong></p>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                    <tr><td></td></tr>
                        <tr><td><input type="submit" value="Mettre a jour" /></td></tr>
                </table>
                    
            </form>
                    <?php
                        if(isset($erreur))
                        {
                            echo '<font color="red">'.$erreur."</font>";
                        }
                    ?>                    
         </div>
    </body>
</html>

PrimFX
Membre Premium

Messages: 113

Hmm... Étrange, je ne vois aucune condition qui traite une nouvelle biographie dans ton code :O

D'ailleurs, pense à mettre ton code avec le bouton "CODE" sur le forum, histoire qu'il soit plus lisible:
<?php
   // Du code...
?>

TheFlameflo

Messages: 303

Je ne comprend pas.. T'as écris : Pour changer la bio, contacter par mail. Du coup, on ne peut pas voir l'erreur sur la page ! :|

Ephtos

Messages: 15

J'ai fais à peut près pareil, et voici mon code si ça peut aider, pour info ma table s'appelle membre et j'ai ajouté une info "biographie" de type TEXT (je n'ai pas precisé de longueur ou autre) 
if(isset($_POST['editionprofil']) AND !empty($_POST['editionprofil']) AND $_POST['editionprofil'] != $utilisateur['biographie']){
               $nouveauprofil = htmlspecialchars($_POST[editionprofil]);
               $insertprofil = $bdd->prepare("UPDATE membre SET biographie = ? WHERE id = ?");
               $insertprofil->execute(array($nouveauprofil, $_SESSION['id']));
               header('Location: index.php?page=profile&id='.$_SESSION['id']);
        }
Et pour l'html / php en affichage c'est une simple zone de texte comme ceci : 

<?php
require('includes/config.php');
    if(isset($_GET['id']) AND $_GET['id'] > 0){
        $getid = intval($_GET['id']);
        $requser = $bdd->prepare('SELECT * FROM membre WHERE id = ?');
        $requser->execute(array($getid));
        $userinfo = $requser->fetch();
?>

<div id=profiluser>
        <?php echo $userinfo['biographie']?>
 </div>

DarkShoka

Messages: 21

Je me suis mal exprimer:

Mon probleme ne viens pas du code mais de la bdd car la bdd enregistre que 1 seul mot sur toute la bio.

PrimFX
Membre Premium

Messages: 113

Oui mais le problème peut très bien venir de ton code quand même Tire la langue

Tente de faire un var_dump() de ce que tu es censé insérer comme biographie dans la base de donnée et n'effectue pas la requête, histoire de voir si à ce stade la biographie est encore complète où s'il ne reste plus qu'un mot:
  • S'il ne reste plus qu'un mot: le problème vient du code
  • Si la biographie est encore complète: le problème vient effectivement de la base de donnée
Du coup peux-tu également nous envoyer un screenshot de la structure de la table dans laquelle tu as le champ biographie ? Clin d'oeil

julienb

Messages: 34

Salut,
je vois des petits soucis même si ce n'est pas lié à ta question:
if(isset($_POST['newage']) AND !empty($_POST['newage'])
isset() sert à vérifier qu'une variable existe et empty() sert à vérifier qu'une variable n'est pas vide, tu fais donc deux fois la même vérification dans ton code, il faudrait laisser uniquement isset().

Sinon ton code est facilement factorisable, tu effectues la même opération 7x, tu peux la remplacer par une fonction qui prend en paramètre le nom de ton champ à modifier, la valeur à mettre et $_SESSION['id']. Ca t'évite de modifier 7x ton code si tu veux changer quelquechose. 

Ca donnerait quelquechose de ce style :
public function update($nom_champ,$valeur,$id){
   $valeur = htmlspecialchars($valeur);
   $req = $bdd->prepare("UPDATE espace_membre SET ? = ? WHERE id = ?");
   $req->execute(array($nom_champ, $valeur, $id);
   header('Location: profil.php?id='$id);
}
Sinon d'après ce que tu dis :
J'ai fais à peut près pareil, et voici mon code si ça peut aider, pour info ma table s'appelle membre et j'ai ajouté une info "biographie" de type TEXT (je n'ai pas precisé de longueur ou autre)  
Le problème pourrait venir de la valeur qui manque dans ta base de données.


Veuillez vous connecter ou créer un compte pour poster une réponse