Page 1 sur 1

Problème nombre de caractères

Posté : 29 avr. 2011, 11:10
par heroes13
Bonjour,

Je suis débutante en PHP. J'ai réalisé un formulaire et une base de données sous PgAdmin III dans le cadre d'un stage en entreprise.
Les informations entrées dans le formulaire sont insérées dans ma base de données. Il fonctionne à partir du moment où je n'entre pas beaucoup de caractères (une vingtaine) dans le champ destiné au commentaire. Mais dès que j'en mets plus, le code me dit qu'il a bien été ajouté à la base de données, alors que celle-ci n'affiche pas la dernière entrée que j'ai faite.

Voici le formulaire :
<form method="post" name="commentaires" id="comms" action="commentaire_agri.php">
            <fieldset><legend>Commentaire sur l'Agriculture : </legend>
                <span class="formw">Entrez un titre :<br /><input type="text" name="titre" id="titre" size="30" maxlength="20" /></span><br /><br />
                <span class="formw">Tapez votre commentaire :<textarea rows="6" cols="42" name="commentaire" id="commentaire" ></textarea></span>
                <span class="formw">Entrez votre code INSEE :<input type="text" name="code" id="code" size="30" maxlength="5" /></span><br /><br />
            </fieldset>
                <p><span class="formw"><input type="submit" name="envoyer" value="Envoyer" class="submit" /></span>
                <span class="formw"><input type="reset" name="annuler" value="Annuler" class="submit" /></span></p>
</form>
Et le code PHP :
<?php
/* On commence par récupérer les champs :*/
if(isset ($_POST['titre'])){$titre = $_POST['titre'];}
else {$titre = "";}
if(isset ($_POST['commentaire'])){$commentaire = $_POST['commentaire'];}
else {$commentaire = "";}
if(isset ($_POST['code'])){$code = $_POST['code'];}
else {$code = "";}

/* On vérifie si les champs sont vides : */
if(empty($titre) OR empty($commentaire) OR empty($code))
{
    echo "Attention, certains champs ne sont pas remplis.\n<a href='/projet_territoires/commentaire/commentaire_agri.html'>Cliquez ici pour recommencer.</a>\n";
}

/* Si aucun champ n'est vide, on peu enregistrer dans la table :*/
else
{
    /* Connexion à la base de données :*/
    $conn = @pg_pconnect("host=localhost dbname=base_communes user=****** password=******");

    /* On écrit la requête SQL :*/
    $requete = @pg_query($conn, "INSERT into com_agriculture(commentaire_agri,code_insee,titre_agri) values('$commentaire','$code','$titre')");

    /* On insère les informations du formulaire dans la table :*/
    $result= @pg_query($requete);
   
    /* On affiche le résultat pour le visiteur :*/
    echo "Votre commentaire a bien été ajouté à la base de données sous le nom ".$titre.".\n
        <a href='/projet_territoires/commentaire.html'>Cliquez ici pour revenir à la page précédente.</a>\n";

    /* On ferme la connexion :*/
    pg_close($conn);
}
?>
Pour information, le champ "commentaire_agri" dans ma base de données est un "character varying" de taille 300. Si quelqu'un a une idée du pourquoi ça ne fonctionne pas je lui en serais très reconnaissante. :) Merci d'avance.

Re: Problème nombre de caractères

Posté : 29 avr. 2011, 11:44
par dev3
Bonjour,

A combien de caractères est définie ton champs commentaire_agri dans ta bdd ?

Re: Problème nombre de caractères

Posté : 29 avr. 2011, 11:47
par heroes13
A 300. C'est pour ça que je ne comprend pas pourquoi il ne veut pas me l'insérer à delà de 20 caractères.

Re: Problème nombre de caractères

Posté : 29 avr. 2011, 12:04
par dev3
Pardon je n'avais pas vu la dernière phrase ou tu précisais la taille.
Que t'affiche $commentaire avant l'insert ?

Re: Problème nombre de caractères

Posté : 29 avr. 2011, 12:04
par macgawel
Bonjour.

1. Affiche le contenu de $_POST (print_r[$_POST]).
2. Affiche la requête.
// Afficher le contenu de POST
print_r[$_POST];
/* On commence par récupérer les champs :*/
/* On vérifie si les champs sont vides : */
/* Si aucun champ n'est vide, on peu enregistrer dans la table :*/
else
{
    /* Connexion à la base de données :*/
    $conn = @pg_pconnect("host=localhost dbname=base_communes user=****** password=******");

    /* On écrit la requête SQL :*/
// On commence par construire et afficher la requete.
$marequete = "INSERT into com_agriculture(commentaire_agri,code_insee,titre_agri) values('$commentaire','$code','$titre')";
echo $marequete;
    $requete = @pg_query($conn, $marequete);
}

Re: Problème nombre de caractères

Posté : 29 avr. 2011, 12:12
par heroes13
Avec les modifications il m'affiche les données que j'ai entré dans le formulaire, même si le nombre de caractères est plus grand que 20. :?
Mais toujours pas dans ma base de données.

Re: Problème nombre de caractères

Posté : 04 mai 2011, 16:21
par heroes13
Je crois que c'est dû aux accents ou au style de caractère ... Parce que quand je fais un copier/coller de générateur de texte latin (qui doit bien faire dans les 100 à 200 caractères), ça me l'insère dans la base de données =/

Je vois pas du tout. =(

Re: Problème nombre de caractères

Posté : 04 mai 2011, 16:32
par Mazarini
Bonjour,

Essayes d'utiliser pg_escape_string() cf : http://fr2.php.net/manual/en/function.p ... string.php

De plus enlève le @ devant @pg_query() pour voir s'il y a un message et affiche pg_last_notice() pg_last_error() après la requete.