Je suis actuellement sur un projet d'étude, une plateforme d'hébergement ou les utilisateurs pourront louer ou mettre à louer leur bien et je suis coincée je pense sur un point simple.
je voudrais lorsqu'un utilisateur poste une annonce que juste ses annonces soient visible sur son espace personnel et pas celle des autres.
Je ne sais pas s'il faut utiliser plutôt javascript ou php.
Bonjour, Merci de lire les règles du forum AVANT de créer un sujet.
Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci de colorer votre code à l'aide du bouton Code </>
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton </> de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
J'ai réussi a filtrer certains éléments de mon annonce en revanche je n'arrive toujours pas à filtrer en fonction du nom de l'utilisateur qui est connecté
//inclure la page de connexion
include_once "conne.php";
//afficher la liste des photos qui sont dans la base de donnée
$req = mysqli_query($con , "SELECT * FROM images WHERE nom ='admin_name'");
//verifier que la liste n'est pas vide
if(mysqli_num_rows($req) < 1){
?>
<p class="vide_message">La liste des photos est vide.</p>
Ca fonctionne mais j'ai un autre problème maintenant, lorsque l'utilisateur rempli le formulaire pour poster son annonce il doit rentrer son nom comme celui de l'admin, s'il ne l'orthographie pas correctement l'annonce ne s'affiche plus.
Du coup j'aimerai lors de la création de l'annonce que le nom de l'utilisateur qui est connecté s'affiche automatiquement sur la page "mes logements" mais je ne sais pas comment faire.
La page avec la liste des logements:
<?php
session_start();
@include 'conne.php';
if(!isset($_SESSION['admin_name'])){
header('location:connexion.php');
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="developpé par MD Web">
<title>Ajouter une annonce</title>
<!--
- favicon
-->
<link rel="favicon">
<!--
- google font link
-->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Handlee&display=swap" rel="stylesheet">
<!--
- google icon link
-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0..1,0" />
<!--
- custom css link
-->
<link rel="stylesheet" href="./assets/css/style3.css">
<!--
- custom js link
-->
<script src="./assets/js/script.js" defer></script>
<!--
- preload images
-->
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Counter-Up/1.0.0/jquery.counterup.min.js"></script>
</head>
<body>
<section>
<a href="ajout_annonce.php" class="link">Ajouter une photo</a>
<?php
//inclure la page de connexion
include_once "conne.php";
//afficher la liste des photos qui sont dans la base de donnée
$req = mysqli_query($con , "SELECT * FROM images WHERE nom ='".$_SESSION['admin_name']."' ");
//verifier que la liste n'est pas vide
if(mysqli_num_rows($req) < 1){
?>
<p class="vide_message">La liste des photos est vide.</p>
<?php
}
//afficher la liste des photos
while($row = mysqli_fetch_assoc($req)){
?>
<div class="box">
<img class="img_principal" src="upload/<?=$row['img']?>">
<div>Description: <?=$row['txt']?></div>
<div>Titre de l'annonce: <?=$row['titre']?></div>
<div>Votre nom: <?=$row['nom']?></div>
<div>Localisation: <?=$row['localisation']?></div>
<div>Prix: <?=$row['prix']?>€</div>
<a class="delete_btn" href="delete.php?id=<?=$row['id']?>">
<img src="remove.png">
</a>
</div>
<?php
}
?>
</section>
</body>
</html>
Et la page de création des annonces:
<?php
//inclure la page de connexion
include_once "conne.php";
//verifier que les données sont envoyés
if(isset($_POST['send'])){
//verifiez que l'image et le texte ont été choisies
if(!empty($_FILES['image']) && isset($_POST['text']) && $_POST['text']!= ""){
//On récupère d'abord le nom de l'image
$img_nom = $_FILES['image']['name'];
//Nous définissons un nom temporaire
$tmp_nom = $_FILES['image']['tmp_name'];
//On récupère l'heure actuelle
$time = time();
//On rennomme l'image en utilisant cette formule : heure + nom de l'image (Pour avoir des images uniques)
$nouveau_nom_img = $time.$img_nom ;
//on déplace l'image dans un dossier appellé "image_bdd"
$deplacer_img = move_uploaded_file($tmp_nom,"upload/".$nouveau_nom_img);
if($deplacer_img){
//si l'image a été mis dans le dossier
//insérons le texte et le nom de l'image dans la base de données
$titre = $_POST['titre'] ;
$nom = $_POST['nom'];
$localisation = $_POST['localisation'];
$prix = $_POST['prix'];
$text = $_POST['text'] ;
$req = mysqli_query($con , "INSERT INTO images VALUES (NULL ,'$nouveau_nom_img','$text','$titre','$nom','$localisation','$prix')");
//verifier que la requête fonctionne
if($req){
//si oui , faire une redirection vers la page liste.php
header("location:logement_pro.php") ;
}else {
//si non
$message = "Echec de l'ajout de l'image !";
}
}else {
//si non
$message = "Veuillez choisir une image avec une taille inférieur à 1Mo !";
}
}else {
//si les champs sont vides on affiche un message
$message = "Veuillez remplir tous les champs !";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="developpé par MD Web">
<title>Ajouter une annonce</title>
<!--
- favicon
-->
<link rel="favicon">
<!--
- google font link
-->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Handlee&display=swap" rel="stylesheet">
<!--
- google icon link
-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0..1,0" />
<!--
- custom css link
-->
<link rel="stylesheet" href="./assets/css/style2.css">
<!--
- custom js link
-->
<script src="./assets/js/script.js" defer></script>
<!--
- preload images
-->
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Counter-Up/1.0.0/jquery.counterup.min.js"></script>
</head>
<body>
<div class="form-container">
<p class="error">
<?php
//afficher une erreur si la variable message existe
if(isset($message)) echo $message ;
?>
</p>
<form action="" method="POST" enctype="multipart/form-data">
<a href="espace_professionnel.php" class="modal_close">×</a>
<h3>Ajouter une annonce</h3>
<input type="file" name="image" required placeholder>
<input type="text" name="titre" cols="30" rows="10" required placeholder="Entrer le titre de votre annonce">
<input type="text" name="localisation" cols="30" rows="10" required placeholder="Entrer votre localisation">
<input type="text" name="prix" cols="30" rows="10" required placeholder="Entrer votre prix">
<textarea name="text" cols="30" rows="10" required placeholder="Entrer votre description"></textarea>
<input type="submit" name="send" value="Ajouter" class="form-btn">
<a href="logement_pro.php" class="link">Liste des photos</a>
</form>
</div>
</body>
</html>
Surtout qu'il est demandé dans le php ; (et à vrai dire vu qu'il est en session, ce n'est pas obligatoire, il suffit de ne pas le demander du tout et d'attribuer la session aux valeurs envoyées)
NB : Et au passage, petit bonus sur les requêtes qui manipulent des données utilisateur :
La session 'admin_name', c'est pas celle de l'utilisateur ? Si oui et qu'il est connecté ça devrait afficher sa valeur. Sinon, il a des infos en session déjà l'utilisateur ?
("disabled" c'est pour interdire l'édition du champ mais c'est accessoire)
Normalement oui puisque pour afficher sur la page d’accueil de l’espace membre le nom de l’utilisateur j’ai utilisé admin_name et ça fonctionne c’est ça que je comprend pas.
gb-net.fr
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
gb-net.fr
gb-net.fr
sur la page de création des annonces ?
gb-net.fr