Bonjour,

C'est encore moi ^^

Depuis quelques quelques heures j'ai un soucis d'input avec un script que je développe à l'aide de vos tutoriels. Le script fonctionnait très bien et en voulant faire un énième test, mon formulaire ne s'exécute plus. A savoir donc qu'une fois le formulaire rempli le fait de cliquer sur l'input ne fait rien.

Je ne vois vraiment pas d'où vient le problème d'autant que le script fonctionnait parfaitement avant (sans modification dans la partie traitement...)

Je vous laisse le code en entier, si jamais quelqu'un voit quelque chose que je n'ai pas vu ça serait un gros coup de main. Je continue à chercher de mon côté. Merci par avance :)

<?php
$racine = '../';
include($racine . 'libs/includes.php');

/*
**  Sauvegarde d'un produit
*/
if( isset($_POST'i_name']) && isset($_POST'i_slug']) )
{
    check_csrf();
    $slug = $_POST'i_slug'];
    if( preg_match('/^[a-z\-0-9]+$/', $slug) )
    {
        $i_id = $db->quote($_GEt'id']);
        foreach($_POST as $k => $v)
        {
            $k = $db->quote($_POST$k]);
        }
        //  On sauvegarde l'article dans la base de donnée
        if( isset($_GET'id']) )
        {
            $id = $db->quote($_GET'id']);
            $db->query("UPDATE " . PREFIX . "items 
                        SET i_name=$i_name, i_price=$i_price, i_slug=$i_slug, i_content=$i_content, i_cat_id=$i_cat_id
                        WHERE i_id=$i_id");
            setFlash('Le produit a bien été modifiée');
        }
        else
        {
            $db->query("INSERT INTO " . PREFIX . "items 
                        SET i_name=$i_name, i_price=$i_price, i_slug=$i_slug, i_content=$i_content, i_cat_id=$i_cat_id");
            setFlash('Le produit a bien été ajoutée');
            $_GET'id'] = $db->lastInsertId();
        }
        //  Envoi des images
        $work_id = $db->quote($_GET'id']);
        $files = $_FILES'images'];
        $images = array();
        foreach($files'tmp_name'] as $k => $v)
        {
            $image = array(
                'name' =>   $files'name']$k],
                'tmp_name'  =>  $files'tmp_name']$k],
            );
            $extension = pathinfo($image'name'], PATHINFO_EXTENSION);
            if( in_array($extension, array('jpg', 'png')) )
            {
                //  On transfère l'id associée dans la base de donnée
                $db->query("INSERT INTO " . PREFIX . "images SET img_work_id=$work_id");
                //  On récupère l'id transférée pour avoir l'id de l'image
                $image_id = $db->lastInsertId();
                $image_name = $image_id . '.' . $extension;
                //  On transfère l'image dans le bon dossier
                move_uploaded_file($image'tmp_name'], IMAGES . 'works' . DS . $image_name);
                //  On met enfin à jour la base de donnée
                $image_name = $db->quote($image_name);
                $db->query("UPDATE " . PREFIX . "images SET img_name=$image_name WHERE img_id=$image_id");
            }   
        }
        header('Location:work.php');
        die();
    }
    else
    {
        setFlash('Le slug n\'est pas valide !', 'danger');
    }
}
/*
**  Ici on récupère les informations d'un produit
**  pour l'édition
*/
if(isset($_GET'id']))
{   
    //  Titre de la page
    $title = 'Editer un produit ';
    //  On récupère la catégorie associée à l'id
    $id = $db->quote($_GET'id']);
    $select = $db->query("SELECT * FROM " . PREFIX . "items WHERE i_id=$id");
    //  Sans résultat on redirige vers la page précédente
    if($select->rowCount() == 0)
    {
        setFlash('Il n\'y a pas de produit associé à cette id', 'danger');
        header('Location:work.php');
        die();
    }
    //  Autrement on récupère toutes les données
    $_POST = $select->fetch();
}
else
{
    $title = 'Ajouter un produit';
}
/*
**  On récupère la liste des catégories
*/
$select = $db->query('SELECT c_id, c_name FROM ' . PREFIX . 'cats ORDER BY c_name ASC');
$cats = $select->fetchAll();
$cats_list = array();
//  On retourne le nom de la catégorie en fonction de l'id
foreach($cats as $cat)
{
    $cats_list$cat'c_id']] = $cat'c_name'];
}
/*
**  On récupère la liste des images
*/
if( isset($_GET'id']) )
{
    $select = $db->query('SELECT * FROM ' . PREFIX . 'images WHERE img_work_id="' . $db->quote($_GET'id']) . '"');
    $images = $select->fetchAll();
}
else
{
    $images = array();
}

//  On inclut le header
include($racine . 'partials/admin_header.php');
?>

<div class="container">
    <div class="jumbotron">
        <h2><?= $title ?></h2>
        <p align="justify"><?php echo $title; ?> en remplissant tous les champs. Le champ "slug" correspond à l'url choisi pour afficher le produit. Il est important de choisir une url en respectant la case, à savoir pas de majuscules, pas d'espaces et pas de caractères spéciaux. Par exemple "mon-url".</p>
    </div>
    <div class="row">
        <div class="col-sm-8">
            <div class="well">
                <form action ="#" class="form-signin" method="post" enctype="multipart/form-data">
                    <div class="form-group">
                        <label for="name">Nom du produit</label>
                        <?php echo input('i_name'); ?>
                    </div>
                    <div class="form-group">
                        <label for="slug">Url du produit (Slug)</label>
                        <?php echo input('i_slug'); ?>
                    </div>
                    <div class="form-group">
                        <label for="price">Prix du produit (en €)</label>
                        <?php echo input('i_price'); ?>
                    </div>  
                    <div class="form-group">
                        <label for="content">Description du produit</label>
                        <?= textarea('i_content'); ?>
                    </div>
                    <div class="form-group">
                        <label for="category">Catégorie</label>
                        <?= select('i_cat_id', $cats_list); ?>
                    </div>  
                    <div class="form-group">
                        <label for="image">Image</label>
                        <input type="file" name="images]">
                        <input type="file" name="images]" class="hidden" id="duplicate">
                    </div>  
                    <p><a href="#" class="btn btn-success" id="duplicatebtn">Ajouter une image</a></p>
                    <?php echo csrf_input(); ?>
                </form> 
            </div> 
        </div>
        <?php
        if( isset($_GET'id']) )
        {
            ?>
            <div class="col-sm-4">
            <div class="well">
                <h3>Images</h3>
                <ul align="justify">
                    <li>Voici les images liées à votre produit.</li>
                    <li>S'il n'y a pas d'image, cliquez sur "Ajouter une image".</li>
                    <li>Vous pouvez cliquer sur une image pour la supprimer.</li>
                </ul>
                <?php 
                foreach($images as $k => $image)
                {
                    echo '<a href="?delete_img=' . $image'img_id'] . '&' . csrf() . '" alt="Supprimer l\'image" onclick="return confirm("Etes vous sûr de vouloir supprimer l\'image ?"><img alt="Supprimer l\'image" class="img-thumbnail" src="' . $racine . 'img' . DS . 'works' . DS . $image'img_name'] . '" width="100" height="100" /></a> ';
                }
                ?>
            </div>
            </div>
        <?php
        }
        ?>
        <button type="submit" class="btn btn-lg btn-primary btn-block"><?php echo $title; ?></button>
    </div>
</div>
<?php
//  On inclut le footer
ob_start();
?>
<script src="<?= $racine; ?>js/tinymce/tinymce.min.js"></script>
<script>
(function($){
    $('#duplicatebtn').click(function(e){
        e.preventDefault();
        var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
        $('#duplicate').before($clone);
    })
})(jQuery);
tinyMCE.init({
        // General options
        mode : "textareas",
        language : "fr_FR",
});
</script>
<?php
$script = ob_get_clean();
include($racine . 'partials/footer.php');
?>

3 réponses


Xen0risDEV
Réponse acceptée

Bonjour,

<p><a href="#" class="btn btn-success" id="duplicatebtn">Ajouter une image</a></p>

par

<p><button type="submit" class="btn btn-success" id="duplicatebtn">Ajouter une image</button></p>

Cordialement.

En fait ce n'était même pas ça, comme un idiot j'ai sorti le lien des balises form... Donc forcément ça ne marchait pas...

Il faut que j'arrête d'insister la nuit.

Bonjour, effectivement la nuit faut du café pour insisté x)

Cordialement.