IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire erreur Array to string conversion [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut Formulaire erreur Array to string conversion
    Bonjour,

    j'ai fais un formulaire qui fonctionne, mais m'affiche le message d'erreur suivant
    Notice: Array to string conversion in C:\Program Files\EasyPHP 2.0b1\www\pti2\formulaire\traitementduformulaire.php on line 69
    Après de nombreuse heures de recherche infructueuse pour régler se problème je me permet de vous le soumettre.

    Voici donc mon code ( récupéré à partir d'exemple sur internet )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
    // Parametres mysql à remplacer par les vôtres
    define('DB_SERVER', 'localhost'); // serveur mysql
    define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', ''); // mot de passe
    define('DB_DATABASE', 'pti2_tourisme'); // nom de la base
     
    // Connexion au serveur mysql
    $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
    DB_SERVER_PASSWORD)
    or die('Impossible de se connecter : ' . mysql_error());
    // sélection de la base de données
    mysql_select_db(DB_DATABASE, $connect);
     
    $msg_erreur = "<a Erreur. Les champs suivants doivent être obligatoirement remplis  href=site.php?page=includes/ajout/ajouter>retour</a>:<br/><br/>";
    $msg_ok =  " <a href=site.php?page=body>retour</a>)";
     
    $message = $msg_erreur;
     
    // vérification des champs
    if (empty($_POST['civilite']))
      $message .= "Votre civilité<br/>";
     
    if (empty($_POST['nom']))
      $message .= "Votre nom<br/>";
     
    if (empty($_POST['adresse']))
      $message .= "Votre adresse<br/>";
     
    if (empty($_POST['codepostal']))
      $message .= "Votre code postal<br/>";
     
    if (empty($_POST['ville']))
      $message .= "Votre ville<br/>";
     
     
     
      if (empty($_POST['prenom']))
      $message .= "Votre Prénom<br/>";
     
      if (empty($_POST['nbpersonne']))
      $message .= "nombre de participant<br/>";
     
      if (empty($_POST['telephone']))
      $message .= "Votre numéro de téléphone<br/>";
     
       if (empty($_POST['email']))
      $message .= "Votre email<br/>";
     
     
       if (empty($_POST['date1']))
      $message .= "date séjour manquante<br/>";
     
     
       if (empty($_POST['date2']))
      $message .= "date séjour manquante<br/>";
     
     
     
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) {
     
      echo $message;
     
    // sinon c'est ok
    } else {
     
      foreach($_POST as $index => $valeur) {
        $$index = mysql_real_escape_string(trim($valeur));
      }
     
      $interets = $_POST['interets'];
      $sqlinterets = '';
      for ($i=0; $i<count($interets); $i++)
      {
        $sqlinterets .= $interets[$i];
        $sqlinterets .= ', ';
      }
     
      $sql = "INSERT INTO formulaire VALUES (
      '',
      '".$civilite."',
      '".$nom."',
      '".$adresse."',
      '".$codepostal."',
      '".$ville."',
      '".$pays."',
      '".$sqlinterets."',
      '".$comments."',
      '".$prenom."',
      '".$telephone."',
      '".$nbpersonne."',
      '".$email."',
      '".$date1."',
       '".$date2."',
      
     
     
      
      now())";
      $res = mysql_query($sql);
     
      if ($res) {
        echo $msg_ok;
      } else {
        echo mysql_error();
      }
     
    }
    ?>
    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    $$index = mysql_real_escape_string(trim($valeur));

    Enleve un des 2 $ !

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    Hélas non je l'avais déjà remarqué,
    si j'enlève l'un des $
    cela me donne un
    Undefined variable
    pour toutes mes variables.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Si $_POST['interets'] est un tableau, cet élément se retrouve bien traité par ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      foreach($_POST as $index => $valeur) {
        $$index = mysql_real_escape_string(trim($valeur));
      }
    Or $valeur, pour cet élément précis du moins, sera un tableau alors qu'il est ensuite utilisé comme une chaîne (trim) sans aucun contrôle (is_string & co).

    PS : ce serait bien d'indiquer directement quelle est la ligne en cause

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    Merci pour ta réponse, j'ai pas tout compris mais voici donc la ligne 69
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $$index = mysql_real_escape_string(trim($valeur));
    Voici le code de" interets" dans mon formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <p id="interets"><label> Type du sejour : </label><br>
        <input type="checkbox" name="interets[]" value="classique" /> Classique
        <input type="checkbox" name="interets[]" value="aventure" />Aventure<br />
        <input type="checkbox" name="interets[]" value="luxe" />Luxe
      </p>
    Le formulaire marche très bien, j'ai bien les données dans ma base , mais il m'affiche toujours cette erreur.

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Arf, je viens de voir que c'est un Notice, et non pas une erreur...
    En général, un notice, c'est sans gravité. Tu peux les désactiver dans le php.ini. Ca indique juste que t'es pas parfaitement rigoureux.

    Julp, j'en profite pour poser la question, comment peux-ton envoyer un tableau via $_POST ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Array to string conversion et calcule d'après un code promotion
    Par Valadone dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 27/06/2015, 18h30
  2. Array to string conversion
    Par deathart dans le forum CodeIgniter
    Réponses: 17
    Dernier message: 04/09/2012, 13h08
  3. [MySQL] PB : "Notice: Array to string conversion"
    Par moma586 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/07/2012, 09h11
  4. Réponses: 2
    Dernier message: 28/12/2007, 12h09
  5. Réponses: 2
    Dernier message: 21/06/2004, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo