Probleme pour enregister et afficher un texte

dimi26a Messages postés 4 Statut Membre -  
dimi40a Messages postés 12 Statut Membre -
Bonjour, voila plusieurs jours que je relis le script et que je cherche d autre solutions sur le net mais je ne trouve rien
En fait quand je valide mon texte je reviens sur le cadre du texte vide et rien ne s est enregistre dans ma page rule
page rule.php

<?php include 'components/authentication.php' ?>
<?php include 'components/session-check.php' ?>
<?php include 'controllers/base/head.php' ?>
<?php include 'controllers/navigation/first-navigation.php' ?>
<div class="container" style="padding-top:50px;">
<h1 class="text-center profile-name" style="margin-top:35;">Rules <br /><small> use them to be the best!</small></h1>
<div class="col-md-12 panel" style="border-radius: 20px; margin-top:20px; margin-bottom:20px; padding-bottom:20px; padding-top:20px;">

<?php
$rule = "SELECT * FROM rules ORDER BY rules_id DESC LIMIT 1";
$result = mysqli_query($database,$rule);
while($rule = mysqli_fetch_array($result,MYSQLI_BOTH)) {
?>
<P style="font-family:Verdana, Geneva, sans-serif">
<?php echo $rule['rule_txt'];?>
</p>
<br> <br> by <?php echo $rule['user_username'];?></address>
<?php
}
?>
</div>
</div>
</div>

edit-rule.php
 <?php include '_database/database.php' ?>
<?php include 'components/authentication.php' ?>
<?php include 'components/session-check.php' ?>
<?php include 'controllers/base/head.php' ?>
<?php include 'controllers/navigation/first-navigation.php' ?>
<div class="container" style="padding-top:50px;">
<h1 class="text-center profile-text profile-name">Edit Rule</h1>
<div class="no-gutter row">
<div class="col-md-12">
<div class="panel panel-default" id="sidebar">
<div class="panel-body">
<?php include 'controllers/form/edit-rules-form.php' ?>
</div>
</div>
</div>
</div>
</div>

et enfin
update-rules.php
 ?php
ini_set("display_errors",1);
session_start();
if(isset($_POST)){
require '../_database/database.php';
$user_username=$_REQUEST['user_username'];
$rule =htmlspecialchars($_REQUEST['rule_txt']);
$rule_txt = addslashes($rule);
$sql3="UPDATE rules SET user_username='$user_username',rule_txt='$rule_txt' WHERE rules_id=1";
mysqli_query($database,$sql3)or die(mysqli_error($database));
header("location:../edit-rules.php?status=success");
}
?>


j espere que vous allez m aider a corriger ou me diriger vers une autre methode .D avance merci





A voir également:

3 réponses

Pitet Messages postés 2845 Statut Membre 527
 
Salut,

N'ayant pas le code html de ton formulaire, difficile de voir si l'erreur vient de là.

Plusieurs points à vérifier :
- as tu des messages d'erreurs ?
- l'attribut action de ton formulaire pointe bien sur le fichier update-rules.php ?
- l'attribut method de ton formulaire est bien définie en post ?
- ton formulaire possède t-il bien un input dont l'attribut name est égal à user_username ?
- as tu essayer d'exécuter ta requête avec des données fictives directement dans un client sql (PhpMyAdmin par exemple) afin de voir si la requête est valide ?

Quelques remarques facultatives au passage :
- il n'est pas nécessaire de fermer et réouvrir les balises PHP si il n'y a pas de code html entre deux instructions php :
<?php 
include 'components/authentication.php';
include 'components/session-check.php';
include 'controllers/base/head.php';
include 'controllers/navigation/first-navigation.php';
?>

- le session_start() dans le fichier update-rules.txt n'est pas utile si tu n'utilise pas de variable de session dans ce script
- htmlspecialchars() ou addslaches() ne devraient pas être utilisées avant l'insertion en bdd. Pour éviter les injections sql avec l'API Mysqli il faut utiliser la fonction mysqli_real_escape_string(). Il faut néanmoins utiliser htmlspecialchars() lors de l'affichage des données dans le document html pour éviter les injections xss.

Bonne journée,
0
dimi40a Messages postés 12 Statut Membre 2
 
d abord merci de m aider voila le script edit-rules-form.php
<?php          
$sql = "SELECT * FROM rules";
$result = mysqli_query($database,$sql) or die(mysqli_error($database));
$rules = mysqli_fetch_array($result);
?>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane fade in active" id="general">
<div class="col-md-12">

<form action="components/update-rules.php" method="post" enctype="multipart/form-data" id="UploadForm">
<input type="hidden" name="rules_id" value="<?php echo $rules['rules_id'];?>"/>
<input type="hidden" name="user_username" value="<?php echo $current_user;?>"/>
<textarea id="post_body" class="form-control" name="rule_txt" value="" style="height:300px;"><?php echo $rules['rule_txt'];?></textarea>



je n ai aucune erreur je reviens sur ma page pour editer comme si rien ne s est passe et j ai rien dans la base de donnees ma table est bien la etc mais rien n est enregistre.
tu voudrais que je teste quel requetes sur phpdamin?

D avance merci
0
Pitet Messages postés 2845 Statut Membre 527
 
Il faudrait essayer d’exécuter la requête d'insertion.
Tu peux modifier ton script d'insertion comme ceci pour afficher la requête (on désactive aussi temporairement la redirection pour voir la requête) :
    // ...
    $sql3="UPDATE rules SET user_username='$user_username',rule_txt='$rule_txt' WHERE rules_id=1";
    echo $sql3;
    mysqli_query($database,$sql3)or die(mysqli_error($database));
    //header("location:../edit-rules.php?status=success");
0
dimi40a Messages postés 12 Statut Membre 2
 
voila ce que j obtiens

UPDATE rules SET user_username='dimi26a',rule_txt='<p>kkk</p>' WHERE rules_id=1
0
Pitet Messages postés 2845 Statut Membre 527
 
Parfait, cette requête semble correcte.
Arrives tu à l'exécuter dans PhpMyAdmin ?
0
dimi40a Messages postés 12 Statut Membre 2
 
salut alors quand je mets cette requête sur phpadmin ça s exécute sans renvoyer de message d erreur.
0