Bonjour,

J'ai un soucis sur mon code, quand j'ouvre ma page web depuis un onglet du site (redirection href="modification.php") j'ai des formulaire a remplir et quand j'appuie sur le bouton validé rien ne ce passe, par contre si j'actualise la page et que j'appuie sur validé ca fonctionne ...

et deja quand on arrive sur la page j'ai mis un code pour que sa nous rajoute ?id= avec son id de session mais il ne ce rajoute pas, il ce rajoute seulement après un refresh de la page... ce qui me fait penser que le php n'ai pas directement lu... c'est normal ? ou bizarre ? vous avez des idées ?

Pour le moment je suis obligé de faire un fichier avec un refresh.php qui redirige vers ma page modification.php dès que l'ont clique sur l'onglet sur la page web mais comment dire que c'est pas beau quoi......

Merci a tous

5 réponses


Carouge10
Réponse acceptée

le action n'est pas nécesaire si tu recharges la même page.
En revanche tu as beaucoup d'erreur html avec des block qui se chevauchent.
Tu ne peux pas ouvrir une div puis ouvrir le form et ensuite fermer cette div. Il faut respecter l'ordre. La dernière balise ouverte doit être la première à être fermé

bonsoir.
montre le code du formulaire
car là, la seule chose que je pense c'est que tu n'affecte pas ta session

bykertix
Auteur

Voila le code @Carouge10
j'ai pas mis le reste c'est la fin de l'html

<?php
require 'inc/functions.php';
include('bd/connexionDB.php'); 
session_start();

        $id = (int) htmlentities(trim($_GET['id']));

        if($_SESSION['auth']->id == $_GET['id']) {

        }else{header('Location: modiaccount.php?id='.$_SESSION['auth']->id); exit;}

    $afficher_profil = $DB->query("SELECT * FROM users WHERE id = ?", array($id));
    $afficher_profil = $afficher_profil->fetch();

    if(!empty($_POST['facebook'])){
        $user_id = $_SESSION['auth']->id;
        $facebook=($_POST['facebook']);
        require_once 'inc/db.php';
        $pdo->prepare('UPDATE users SET facebook = ? WHERE id = ?')->execute([$facebook, $user_id]);
        $_SESSION['flash']['green2'] = "Facebook a été mis a jour";
        header('Location: account.php?id='.$_SESSION['auth']->id);

    }
    if(!empty($_POST['instagram'])){
        $user_id = $_SESSION['auth']->id;
        $instagram=($_POST['instagram']);
        require_once 'inc/db.php';
        $pdo->prepare('UPDATE users SET instagram = ? WHERE id = ?')->execute([$instagram, $user_id]);
        $_SESSION['flash']['green2'] = "Instagram a été mis a jour";
        header('Location: account.php?id='.$_SESSION['auth']->id);

    }
        if(!empty($_POST['tel'])){
        $user_id = $_SESSION['auth']->id;
        $tel=($_POST['tel']);
        require_once 'inc/db.php';
        $pdo->prepare('UPDATE users SET tel = ? WHERE id = ?')->execute([$tel, $user_id]);
        $_SESSION['flash']['green2'] = "Le numéro de téléphone a été mis a jour";
        header('Location: account.php?id='.$_SESSION['auth']->id);

    }

    if(!empty($_POST['nompro'])){
        $user_id = $_SESSION['auth']->id;
        $nompro=($_POST['nompro']);
        require_once 'inc/db.php';
        $pdo->prepare('UPDATE users SET nom_pro = ? WHERE id = ?')->execute([$nompro, $user_id]);
        $_SESSION['flash']['green2'] = "Votre nom pro a été mis a jour";
        header('Location: account.php?id='.$_SESSION['auth']->id);

    }

if(!empty($_POST['biographie']) || $_FILES['avatar']['name']){
//    if(empty($_POST['biographie']) || $_POST['biographie'] != $_POST['biographie']){
//        $_SESSION['flash']['red2'] = "La biographie est incomplète";
//    }else{
        $user_id = $_SESSION['auth']->id;
        $biographie=($_POST['biographie']);
        require_once 'inc/db.php';
        $pdo->prepare('UPDATE users SET biographie = ? WHERE id = ?')->execute([$biographie, $user_id]);
        $_SESSION['flash']['green2'] = "Votre profil a été mis a jour";
                if(!empty($_FILES['avatar']['name'])){
                    $id_avatar = $_SESSION['auth']->id;
                    $tailleMax = 12097152;
                    $extensionValides = array('jpg', 'jpeg', 'gif', 'png');
                    if($_FILES['avatar']['size'] <= $tailleMax){
                        $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
                        if(in_array($extensionUpload, $extensionValides)){
                            $chemin = "membres/avatars/".$id_avatar.".".$extensionUpload;
                            $resultat = compressImage($_FILES['avatar']['tmp_name'], $chemin, 30);
                                require_once 'inc/db.php';
                                $updateavatar = $pdo->prepare('UPDATE users SET avatar = :avatar, avatar_test = :id WHERE id = :id');
                                $updateavatar->execute(array(
                                    'avatar' => $id_avatar.".".$extensionUpload,
                                    'id' => $id_avatar
                                ));
                        }else{ $_SESSION['flash']['red2'] = "Votre photo de profil doit être au format jpg, jpeg, gif ou png."; }
                    }
                }
        header('Location: modiaccount.php?id='.$_SESSION['auth']->id);
        exit;

//    }
}

function compressImage($source, $destination, $quality) {

  $info = getimagesize($source);

  if ($info['mime'] == 'image/jpeg') 
    $image = imagecreatefromjpeg($source);

  elseif ($info['mime'] == 'image/gif') 
    $image = imagecreatefromgif($source);

  elseif ($info['mime'] == 'image/png') 
    $image = imagecreatefrompng($source);

  imagejpeg($image, $destination, $quality);

}            

?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover" />
<title>Mercasa</title>
<link href="https://fonts.googleapis.com/css?family=Poppins:200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i|Roboto:300,300i,400,400i,500,500i,700,700i,900,900i&display=swap" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/styles/style.css">
<link rel="stylesheet" type="text/css" href="/styles/framework.css">
<link rel="stylesheet" type="text/css" href="/fonts/css/fontawesome-all.min.css">    
<link rel="apple-touch-icon" sizes="180x180" href="/app/icons/icon-192x192.png">
</head>

<body class="theme-light"  data-highlight="blue2">

<div id="page">

    <div id="page-preloader">
        <div class="loader-main"><div class="preload-spinner border-highlight"></div></div>
    </div>

    <div class="header header-fixed header-logo-app header-auto-show">
        <a href="index.php" class="header-subtitle">Retour</a>
        <a href="#" data-back-button class="header-icon header-icon-1"><i class="fas fa-arrow-left"></i></a>
        <a href="#" data-toggle-theme class="header-icon header-icon-2"><i class="fas fa-lightbulb"></i></a>
        <a href="settings.php" class="header-icon header-icon-3"><i class="fas fa-cog"></i></a>
    </div>  

    <div class="page-content">   
        <br>
        <div data-height="150" class="page-title-bg bg-20"><!-- image --></div>
        <div data-height="150" class="page-title-bg dark-mode-tint"><!-- contrast for dark mode --></div>
        <div data-height="150" class="page-title-bg opacity-90 bg-highlight"><!-- background color --></div>

        <div class="page-title-small color-white bottom-30" style="background-image:membres/avatars/<?= $afficher_profil['avatar'] ?>;">
            <h1><i class="fa fa-arrow-left back-button"></i>Modifier mon profil</h1>
            <a href="#" data-menu="menu-main" class="shadow-huge scale-box bg-fade-gray2-dark" style="background-image:url(membres/avatars/<?= $afficher_profil['avatar'] ?>?<?echo time()?>);"></a>
        </div> 

        <div class="content-boxed shadow-small">
                    <?php if(isset($_SESSION['flash'])): ?>
                        <?php foreach($_SESSION['flash'] as $type => $message): ?>
                            <div class="shadow-large alert alert-large alert-round-medium bg-<?= $type; ?>-dark">
                                <i class="fa fa-info-circle" style="line-height:auto;"></i>
                                <strong class="uppercase ultrabold">Information</strong>
                                <span><?= $message; ?></span>
                                <i class="fa fa-times"></i>
                            </div>
                        <?php endforeach; ?>
                        <?php unset($_SESSION['flash']); ?>
                    <?php endif; ?>     
            <div class="profile-insta top-15 bottom-15">
                <div class="profile-left">
                    <h1 style="text-transform: capitalize"><?= $_SESSION['auth']->prenom ?> <?= $_SESSION['auth']->nom ?><i class="fa fa-<?= $_SESSION['auth']->chuck ?>-circle color-blue2-dark" style="right:120px; padding-top:0;"></i></h1>
                    <p class="right-20">

                   <div class="input-style input-style-2 input-required">
                 <div class="input-style input-style-1 input-required">
                     <form action="" method="post" enctype="multipart/form-data">
                     <div class="form-field form-text">
                    <textarea name="biographie" class="contactTextarea round-small requiredField" placeholder=""><?= $afficher_profil['biographie'] ?></textarea>
                    </div>
                </div>
                </div>
                    </p>
                </div>
                <div class="profile-right">
                    <div class="menu-header">
                    <div id='profile-upload' style="width:100px; height:100px; background-image:url(membres/avatars/<?= $afficher_profil['avatar'] ?>?<?echo time()?>)">
                    <div class="hvr-profile-img"><input type="file" name="avatar" id='getval'  class="upload w180" title="Dimensions 180 X 180" id="imag" ></div>
                      <i class="fa fa-camera"></i>
                      </div>
                    </div>
                </div>
                <center><button class="confetti-button">Valider!</button></center>
                </form>
            </div>
             </div>

Hello,

Je vois que l'attribut "action" du formulaire est vide et le bouton de validation n'est pas de type "Submit"... c'est pas forcément une config adequat pour avoir un formulaire qui fonctionne bien...

Ou alors... ton formulaire est submit avec du JS, dans ce cas il nous faut le JS...

bykertix
Auteur

Voila le code js de mon bouton @Soundboy39

var animateButton = function(e) {

  e.preventDefault;
  //reset animation
  e.target.classList.remove('animate');

  e.target.classList.add('animate');
  setTimeout(function(){
    e.target.classList.remove('animate');
  },700);
};

var classname = document.getElementsByClassName("confetti-button");

for (var i = 0; i < classname.length; i++) {
  classname[i].addEventListener('click', animateButton, false);
}

Sa pourrai être du aux erreurs d'html ? @Carouge10, j'ai une autre page qui a un code similaire mais le formulaire s'envoie sans avoir besoin de refresh la page

Edit: c'est bon @Carouge10 c'était bien du au div ... je change l'ordre et le formulaire ce submit merci j'y aurrai jamais penser ....