[php] <?php include ('admin/connect_db.php'); $t1 = $_POST['$t1']; $t2 = $_POST['$t2']; $t3 = $_POST['$t3']; $j = date('d'); $date = date("d/m" $heure = date("H:i" $mysqli->query("INSERT INTO `news2` (`id`, `titre`, `pet_news`, `gr_news`, `jour`, `date`, `heure`) VALUES ('', '$t1', '$t2', '$t3', '$j', '$date', '$heure')" $mysqli->close(); ?> [/php]Cette page reçois les textes de 3 <textaera> , si je met 1 caractère dans chaque , l' insert fonctionne, en revanche avec un texte long l'insert ne se fait pas.
$t1 = $mysqli->escape($_POST['$t1']);Nota : pour vous, ce n'est peut-être pas escape tout court, il faut voir comment est définie la sous-fonction de votre classe $mysqli. Par exemple, pour moi, c'est :
function escape($str) { return is_array($str) ? '' : mysqli_real_escape_string($this->link_id, $str);Mais, vous pouvez aussi l'incorporer dans la requête au niveau de chacune des variables $t1, $t2 et $t3
/*-----------------------------------*/ /* Insertion dans la table "clients" */ /*-----------------------------------*/ try { $ins = $link->prepare("INSERT INTO `tab_clients` (`ID`, `NOM`, `PRENOM`, `NAISSANCE`, `VILLE`, `DATENREG`) VALUES (:param1, :param2, :param3, :param4, :param5, :param6)" $ins->bindParam('param1', $id); $ins->bindParam('param2', $nom); $ins->bindParam('param3', $prenom); $ins->bindParam('param4', $naissance); $ins->bindParam('param5', $ville); $ins->bindParam('param6', $datenreg); $ins->execute(); } catch ( Exception $e ) { echo "Une erreur est survenue dans la requète insert : ", $e->getMessage(); die(); }Sinon, ton problème est ce que tu mets dans une variable comme $t1.
VALUES ('', '$t1', '$t2', '$t3', '$j', '$date', '$heure');Imagine que dans la variable $t1, tu as saisie : "aujourd'hui".
VALUES ('', 'aujourd'hui', '$t2', '$t3', '$j', '$date', '$heure');J'ai mis en rouge, le problème que tu rencontres.
-- phpMyAdmin SQL Dump -- version 4.1.14 -- [www.phpmyadmin.net] -- -- Client : 127.0.0.1 -- Généré le : Lun 02 Juin 2014 à 15:40 -- Version du serveur : 5.6.17 -- Version de PHP : 5.5.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de données : `test` -- -- -------------------------------------------------------- -- -- Structure de la table `news` -- CREATE TABLE IF NOT EXISTS `news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titre` varchar(255) NOT NULL, `pet_news` text NOT NULL, `gr_news` text NOT NULL, `jour` varchar(255) NOT NULL, `date` date NOT NULL, `heure` time NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;Malgré vos précieux conseils, j'ai toujours le meme soucis.
<?php include ('admin/connect_db.php'); $t1 = $_POST['$t1']; $t2 = $_POST['$t2']; $t3 = $_POST['$t3']; $j = date('d'); $date = date("d/m" $heure = date("H:i" $mysqli->query("INSERT INTO `news2` (`id`, `titre`, `pet_news`, `gr_news`, `jour`, `date`, `heure`) VALUES ('', '$t1', '$t2', '$t3', '$j', '$date', '$heure')" or die("Message d'erreur : %s\n", $mysqli->error); $mysqli->close(); ?>
VALUES ('', '$t1', '$t2', '$t3', '$j', '$date', '$heure')je comprends que tout est en 'char'.
VALUES (, $t1, $t2, $t3, $j, $date, $heure)et de s'assurer que $date contient bien une information de type 'date', ainsi que $heure qui contient une information de type 'time'.
J'ai en effet besoin de l'une ou de l'autre, exemple:Citation
3) qu'est-ce que tu entends par 'date' et 'heure' ? C'est une notion un peu floue.
Est-ce que les deux informations sont liées ou pas ?
Si elles sont liés, il vaut mieux mettre 'timestamp' ou éventuellement 'datetime'.
Si elles ne sont pas liés, tu as bien fait.
Justement si je laisse les champs du formulaire vide, la news est insérée sans retour d'erreur.Citation
4) le 'not null' signifie que la saisie est obligatoire.
Est-ce le cas tout le temps.
or die("Message d'erreur : %s\n", $mysqli->error);c'est passé à la trappe !
Citation
Otomatic
Bonjour,
Alors, vous n'avez pas suivi les conseils et vous ne gérez toujours pas les éventuelles erreurs de vos scripts.or die("Message d'erreur : %s\n", $mysqli->error);c'est passé à la trappe !
La gestion des erreurs fait partie du B.A.BA de la programmation.
<?php $PARAM_hote='localhost'; $PARAM_port='3306'; $PARAM_nom_bd='test'; $PARAM_utilisateur='root'; $PARAM_mot_passe=''; try { $dbh = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe); } catch(Exception $e) { echo 'Erreur : '.$e->getMessage().'<br />'; echo 'N° : '.$e->getCode(); } try { $stmt = $dbh->prepare("INSERT INTO news (id, titre, pet_news, gr_news, jour, date, heure) VALUES (:id, :titre, :pet_news, :gr_news, :jour, :date, :heure)" $stmt->bindParam(":id", $id); $stmt->bindParam(":titre", $t1); $stmt->bindParam(":pet_news", $t2); $stmt->bindParam(":gr_news", $t3); $stmt->bindParam(":jour", $j); $stmt->bindParam(":date", $date); $stmt->bindParam(":heure", $heure); $t1 = $_POST['$t1']; $t2 = $_POST['$t2']; $t3 = $_POST['$t3']; $id = ''; $j = date('d'); $date = date("d/m" $heure = date("H:i" $stmt->execute(); } catch ( Exception $e ) { echo "Une erreur est survenue dans la requète insert : ", $e->getMessage(); die(); } ?>Merci à vous pour vos conseils et votre patience.