Probleme Biographie PHP

Sh0kaP1k

Sh0kaP1k Le 3 avril 2016 à 13:53 (Édité le 25 janvier 2019 à 17:50)

Bonjour,

Mon probleme est simple mais chiant 😀

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.
PrimFX

PrimFX Le 3 avril 2016 à 14:20

Salut !

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

@+
Sh0kaP1k

Sh0kaP1k Le 3 avril 2016 à 16:03

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

PrimFX Le 3 avril 2016 à 16:13

Eh bien le code dont le bug est susceptible de provenir, donc ici ton système d'édition 😉 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 😋
TheFlameflo

TheFlameflo Le 3 avril 2016 à 16:43

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 ! 😀
Sh0kaP1k

Sh0kaP1k Le 3 avril 2016 à 18:13 (Édité le 6 avril 2016 à 23:30)


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

PrimFX Le 3 avril 2016 à 19:00

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

TheFlameflo Le 3 avril 2016 à 19:35

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

Ephtos Le 5 avril 2016 à 23:12 (Édité le 5 avril 2016 à 23:16)

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>
Sh0kaP1k

Sh0kaP1k Le 6 avril 2016 à 23:29

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

PrimFX Le 6 avril 2016 à 23:52

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

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 ? 😉
julienb

julienb Le 7 avril 2016 à 00:47 (Édité le 7 avril 2016 à 00:49)

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.
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte