PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » Problème de modification d'une table » 23-07-2013 19:39:09

Reverb
Réponses : 0

Bonjour à tous et à toutes,

J'ai précédemment créer un espace membre, et je rencontre quelque soucis pour le rajout d'informations supplémentaire.
Lors de l'inscription, l'id du membre est automatiquement inséré dans une table 'membres' et une seconde 'rs_membre'.
La table membre contient les infos principales du membre, et la seconde 'rs_membre' contient les réseaux sociaux des membres.

Pour modifier le profil, j'ai créé une page modifier.php,
dans laquelle se trouve le formulaire d'insertion pour les 2 tables et les requêtes de modifications des tables,
la modification s'effectue bien pour la table membres mais ne fonctionne pas pour la table rs_membre hmm

voici le code de ma page modifier.php (brut)

<?php session_start();
 echo '<div id="retourselect">
 <a href="voirprofil.php?action=consulter" title="recharger la page"><h1 class="titre1">'."Profil".'</h1></a>
 </div>';
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire

    //On commence par s'assurer que le membre est connecté
    if (isset ($_SESSION['membre_id'])) {

        //On prend les infos principale (obligatoire) du membre
    $id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar, membre_nom, membre_prenom, membre_naissance, membre_signature, membre_siteweb, membre_biographie, membre_profession, membre_localisation FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
    //On prend les infos secondaire du membre
    // On prend les infos réseaux sociaux du membre
    $id3=($_SESSION['rs_membre_id']);
        $query3 = $bdd->prepare('SELECT membre_facebook, membre_twitter, membre_tumblr, membre_flickr, membre_pinterest, membre_fotolog, membre_googleplus FROM rs_membre WHERE rs_membre_id=:id');
        $query3->bindValue(':id', $id3, PDO::PARAM_INT);
        $query3->execute();
        $data3 = $query3->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimplegrisay">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textemoyengrisay">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

        echo '<div id="infosmembre">';
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">

        <fieldset>
   
    <legend><p class="textesimplegrisay"><b>Identifiants</b></p></legend>
   
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
   
    <p class="textesimplegrisay">Vous devez renseigner votre mot de passe pour valider la modification.</p>
   
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Mot de Passe :</label><input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
     
      <p class="textesimplegrisay">La confirmation de votre mot de passe est essentiel pour la modification.</p>
     
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
   
    </fieldset>
    <fieldset>
   
    <legend><p class="textesimplegrisay"><b>Informations secondaire</b></p></legend>
   
    <div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom : </label><input type="text" name="nom" id="nom" value="' . $data['membre_nom'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom : </label><input type="text" name="prenom" id="prenom" value="' . $data['membre_prenom'] . '" /></p></div>
   
    <p class="textesimplegrisay">Votre date de naissance doit figurer de la manière suivante : AAAA-MM-JJ.</p>
   
    <div id="cadrepseu"><p class="classinscr"><label for="naissance">Votre date de naissance : </label><input type="text" name="naissance" id="naissance" value="' . $data['membre_naissance'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="siteweb">Votre site Web : </label><input type="text" name="siteweb" id="siteweb" value="' . $data['membre_siteweb'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="localisation">Votre localisation : </label><input type="text" name="localisation" id="localisation" value="' . $data['membre_localisation'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="signature">Votre signature : </label><input type="text" name="signature" id="signature" value="' . $data['membre_signature'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="biographie">Votre biographie : </label><input type="text" name="biographie" id="biographie" value="' . $data['membre_biographie'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="profession">Votre profession : </label><input type="text" name="profession" id="profession" value="' . $data['membre_profession'] . '" /></p></div>
   
        </fieldset>

        <fieldset>
   
    <legend><p class="textesimplegrisay"><b>Contacts</b></p></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="mail" id="email"
        value="' . $data['membre_mail'] . '" /></p></div>

        <fieldset><legend><p class="textesimplegrisay"><b>Profil sur le forum</b></p></legend>
    <p class="textesimplegrisay">Votre image profil ne doit pas dépassé 500px sur 500px ( 10 Mo ).</p>
        <div id="cadrepseu"><p class="classinscr"><label for="membre_avatar">Changer votre avatar :</label>
        <input type="file" name="membre_avatar" id="membre_avatar" />
        (Taille max : 10 Mo)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/' . $data['membre_avatar'] . '"
        class="imgavatar" alt="aucun avatar" /></p></div>

    </fieldset>
   
    <fieldset>
   
    <legend><p class="textesimplegrisay"><b>Réseaux Sociaux</b></p></legend>
   
    <div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data3['membre_facebook'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="twitter">Votre adresse Twitter : </label><input type="text" name="twitter" id="twitter" value="' . $data3['membre_twitter'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="tumblr">Votre adresse Tumblr : </label><input type="text" name="tumblr" id="tumblr" value="' . $data3['membre_tumblr'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="flickr">Votre adresse Flickr : </label><input type="text" name="flickr" id="flickr" value="' . $data3['membre_flickr'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="pinterest">Votre adresse Pinterest : </label><input type="text" name="pinterest" id="pinterest" value="' . $data3['membre_pinterest'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="googleplus">Votre adresse Google Plus : </label><input type="text" name="googleplus" id="googleplus" value="' . $data3['membre_googleplus'] . '" /></p></div>
   
    <div id="cadrepseu"><p class="classinscr"><label for="fotolog">Votre adresse Fotolog : </label><input type="text" name="fotolog" id="fotolog" value="' . $data3['membre_fotolog'] . '" /></p></div>
   
        </fieldset>
   
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();
    $query3->CloseCursor();
   
   
   
    } else {
        echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
        echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
    }
} else { //Cas du traitement

    //On déclare les variables
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;

    //Encore et toujours notre belle variable $i :p
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
  $nom = ($_POST['nom']);
  $prenom = ($_POST['prenom']);
  $naissance = ($_POST['naissance']);
  $siteweb = ($_POST['siteweb']);
  $localisation = ($_POST['localisation']);
  $signature = ($_POST['signature']);
  $biographie = ($_POST['biographie']);
  $profession = ($_POST['profession']);
  $facebook = ($_POST['facebook']);
  $twitter = ($_POST['twitter']);
  $tumblr = ($_POST['tumblr']);
  $pinterest = ($_POST['pinterest']);
  $googleplus = ($_POST['googleplus']);
  $fotolog = ($_POST['fotolog']);
  $flickr = ($_POST['flickr']);
    $confirm = ($_POST['confirm']);
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass)) {
        $mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
        $i++;
    }

    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)

    //On commence donc par récupérer le mail
  $id=($_SESSION['membre_id']);
    $query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
    $query->bindValue(':id', $id, PDO::PARAM_INT);
    $query->execute();
    $data = $query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email)) {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
        $query->bindValue(':mail', $email, PDO::PARAM_STR);
        $query->execute();
        $mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
        $query->CloseCursor();
        if (!$mail_free) {
            $email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
            $i++;
        }

        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
            $email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
            $i++;
        }
    }
    //Vérification de l'avatar

    if (!empty($_FILES['membre_avatar']['size'])) {
        //On définit les variables :
        $maxsize = 1000000; //Poid de l'image
        $maxwidth = 2000; //Largeur de l'image
        $maxheight = 2000; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');

        if ($_FILES['membre_avatar']['error'] > 0) {
            $avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
        }
        if ($_FILES['membre_avatar']['size'] > $maxsize) {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
        (" . $_FILES['membre_avatar']['size'] . " Octets
        contre " . $maxsize . " Octets)";
        }

        $image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
        " . $maxwidth . "x" . $maxheight . ")";
        }

        $extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
        if (!in_array($extension_upload, $extensions_valides)) {
            $i++;
            $avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
        }
    }
    echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';

    if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
        if (!empty($_FILES['membre_avatar']['size'])) {
  $nomavatar = basename($_FILES['membre_avatar']['name']);
  $destination = "./images/avatars/".$nomavatar;
  if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination)){
    echo '<div id="MR"><p class="textevalide">'."Le chargement de votre nouvelle 'image profil' à réussi avec succès !".'</p></div>';
  }else{
    echo '<div id="MR"><p class="texteerror">'."Le téléchargement de votre 'image profil' à échoué !".'</p></div>';
  }
  $id=($_SESSION['membre_id']);
    $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
  $query->bindValue(':avatar', $nomavatar, PDO::  PARAM_STR);
  $query->bindValue(':id', $id, PDO:: PARAM_INT);
  $query->execute();
  $query->CloseCursor();
        }

        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete'])) {
      $id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
            $query->bindValue(':id', $id, PDO::PARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }
   
   
   
echo '<div id="MR">';
        echo '<h1 class="textevalide">'."Modification terminée".'</h1>';
        echo '<p class="textevalide">'."Votre profil a été modifié avec succès !".'</p>';
        echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."pour revenir à la page d accueil.".'</p>';
    echo '<p class="textesimple">'. "Cliquez ".'<a href="./voirprofil.php?action=consulter">'." ici ".'</a>'."pour consulter votre profil.".'</p>';
echo '</div>';
/*
$reqmod=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON i.i_membre_id=m.membre_id INNER JOIN rs_membre r ON r.rs_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom=:nom, i.membre_prenom=:prenom, i.membre_naissance=:naissance, i.membre_siteweb=:siteweb, i.membre_localisation=:localisation, i.membre_signature=:signature, i.membre_biographie=:biographie, i.membre_profession=:profession, r.membre_facebook=:facebook, r.membre_twitter=:twitter, r.membre_tumblr=:tumblr, r.membre_flickr=:flickr, r.membre_fotolog=:fotolog, r.membre_pinterest=:pinterest, r.membre_googleplus=:googleplus WHERE m.membre_id=:id');
        $reqmod->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $reqmod->bindValue(':mail',$email,PDO::PARAM_STR);
    $reqmod->bindValue(':nom',$nom,PDO::PARAM_STR);
        $reqmod->bindValue(':prenom',$prenom,PDO::PARAM_STR);
    $reqmod->bindValue(':naissance',$naissance,PDO::PARAM_INT);
    $reqmod->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
    $reqmod->bindValue(':localisation',$localisation,PDO::PARAM_STR);
    $reqmod->bindValue(':signature',$signature,PDO::PARAM_STR);
    $reqmod->bindValue(':biographie',$biographie,PDO::PARAM_STR);
    $reqmod->bindValue(':profession',$profession,PDO::PARAM_STR);
    $reqmod->bindValue(':facebook',$facebook,PDO::PARAM_STR);
    $reqmod->bindValue(':twitter',$twitter,PDO::PARAM_STR);
    $reqmod->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
    $reqmod->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
    $reqmod->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
    $reqmod->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
    $reqmod->bindValue(':flickr',$flickr,PDO::PARAM_STR);
    $reqmod->bindValue(':id',$id,PDO::PARAM_INT);
        $reqmod->execute();
    $reqmod->CloseCursor();
*/
$id=($_SESSION['membre_id']);
$reqmodif=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail, membre_nom=:nom, membre_prenom=:prenom, membre_naissance=:naissance, membre_siteweb=:siteweb, membre_localisation=:localisation, membre_signature=:signature, membre_biographie=:biographie, membre_profession=:profession WHERE membre_id=:id');
$reqmodif->bindValue(':mdp',$pass,PDO::PARAM_STR);
$reqmodif->bindValue(':mail',$email,PDO::PARAM_STR);
$reqmodif->bindValue(':nom',$nom,PDO::PARAM_STR);
$reqmodif->bindValue(':prenom',$prenom,PDO::PARAM_STR);
$reqmodif->bindValue(':naissance',$naissance,PDO::PARAM_STR);
$reqmodif->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
$reqmodif->bindValue(':localisation',$localisation,PDO::PARAM_STR);
$reqmodif->bindValue(':signature',$signature,PDO::PARAM_STR);
$reqmodif->bindValue(':biographie',$biographie,PDO::PARAM_STR);
$reqmodif->bindValue(':profession',$profession,PDO::PARAM_STR);
$reqmodif->bindValue(':id',$id,PDO::PARAM_INT);
$reqmodif->execute();

$id3=($_SESSION['rs_membre_id']);
$reqmodif2=$bdd->prepare('UPDATE rs_membre SET membre_facebook=:facebook, membre_tumblr=:tumblr, membre_twitter=:twitter, membre_pinterest=:pinterest, membre_googleplus=:googleplus, membre_flickr=:flickr, membre_fotolog=:fotolog WHERE rs_membre_id=:id');
$reqmodif2->bindValue(':facebook',$facebook,PDO::PARAM_STR);
$reqmodif2->bindValue(':twitter',$twitter,PDO::PARAM_STR);
$reqmodif2->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
$reqmodif2->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
$reqmodif2->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
$reqmodif2->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
$reqmodif2->bindValue(':flickr',$flickr,PDO::PARAM_STR);
$reqmodif2->bindValue(':id',$id3,PDO::PARAM_INT);
$reqmodif2->execute();

    } else {
   
      echo '<div id="MI">';
        echo '<h1 class="texteerror">Modification interrompue</h1>';
        echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
        echo '<p class="texteerror">' . $mdp_erreur . '</p>';
        echo '<p class="texteerror">' . $email_erreur1 . '</p>';
        echo '<p class="texteerror">' . $email_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
        echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
      echo '</div>';
    }
}
?>

Merci pour votre aide et votre attention.

#2 Re : Forum Général PHP » Problème mise en forme du texte » 24-07-2013 09:25:40

Salut à toi ^^

Peut-tu envoyé le code de ton formulaire ^^ ?

Pied de page des forums

Propulsé par FluxBB