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 :

Réception d'un array dans la base [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 27
    Par défaut Réception d'un array dans la base
    Bonjour,
    alors voilà j'ai un problème quand j'essaye d'envoyer mon formulaire dans la base, celui-ci n'envoi pas tout ce qu'il devrait !

    Voici le formulaire :
    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
    <form method="post" action="index.php?action=sendticket">
      <div class="form-group">
          <div id="contactformbox" class="container"> <h1 class="text-left" style="color:white;">Envoyer<strong> un ticket</strong></h1>
            <p class="text-left" style="color:white;">Pour <strong style="color:beige;">envoyer une demande au support technique Easy Conseil</strong>, veuillez choisir
          </br> l'objet de votre demande dans le menu déroulant et écrire votre message dans la zone de texte </br>
            notre équipe traitera votre demande dans les plus brefs délais ! Merci.</p>
              <div class="jumbotron jumbotron-fluid">
                <div class="row">
                  <div class="col-md-5" style="text-align:right">
                    <label>Selectionnez votre demande :</label>
                  </div>
                    <div class="col-md-4">
                      <select class="form-control" name="tdData[0][id_TicketType]">
                    </div>    
                      <?php
    	                    foreach ($tbTickets as $tickettype) {
    		                                                    echo '<option value="'.$tickettype['id'].'">'.$tickettype['type'].'</option>';
                                                          }
                      ?>
                      </select>
                    </div>
                </div>
     
                      <div class="row d-flex justify-content-center" style="margin-top:50px">
                        <div class="col-md-6">
                          <textarea class="form-control" placeholder="Entrez votre message..." style="padding-bottom:300px" name="tbData[0][note]" id="note" required="" oninvalid="this.setCustomValidity('Veuillez saisir du texte pour valider')" oninput="setCustomValidity('')"></textarea>
                        </div>                              
                      </div>
     
                    <div class="row justify-content-center align-items-center">
                      <div class="row" style="margin-top:15px">
                          <div class="col-md-12 align-self-left">                                  
                                  <button type="submit" class="btn btn-primary btn-block" id="envoi"> Envoyer </button>
                          </div>    
                        </div>
                    </div>
     
              </div>
          </div>
      </div>
    </form>
    Ensuite, voici mes fonctions de reception, d'envoi et d'écriture :

    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
    function sendTicket($tbData) {
    	$tbData[0]['id'] = ecrire('tickets',$tbData[0]);
    	var_dump($tbData);
    }
     
    function getTicketType(){
    	return select("SELECT * FROM tickettype");
     
    }
     
    function ecrire($nomTable, $tbData, $id=0){
    	if($id==0) { // INSERT
    	    $sql="INSERT INTO ";
    	}
    	else { //UPDATE
    		$sql="UPDATE ";
    	}
     
    	$sql.=$nomTable." SET "; // INSERT & UPDATE
     
    	foreach($tbData AS $champ=>$val){ // INSERT & UPDATE
     
    		if($champ!='pass'){
    			$sql.=$champ."='".$val."', ";
    		}
    		else{
    			$hashed = password_hash($tbData["pass"],PASSWORD_DEFAULT);
    			$sql.=$champ."='".$hashed."', ";
    		}
    	}
    	$sql=substr($sql,0,-2);
     
    	if($id!=0) { // UPDATE
    		$nomId=getPK($nomTable);
    		$sql.=" WHERE ".$nomId."=".$id;
    	}
    	return requete($sql);
    }
     
    function requete($sql){
    	$cnx=mysqli_connect("localhost","root","","test");
    	if (mysqli_connect_errno())
      {
      echo "Echec de la connexion: " . mysqli_connect_error();
      }
    	$res=mysqli_query($cnx,$sql);
    	$tab=explode(" ", $sql);
    	$action=$tab[0];
    	if($action=="INSERT" AND $res==TRUE) {
    		return mysqli_insert_id($cnx);
    	}
    	else {
    		return $res;
    	}
    	if (!$res) {
    		printf("Error: %s\n", mysqli_error($cnx));
    		exit();
    	}
    }
     
    function select($sql,$dim=2) {
    	$res=requete($sql);
    	$ligne=mysqli_fetch_array($res);
    	if($dim==0){
    		return $ligne[0];
    	}
    	elseif($dim==1) {
    		return $ligne;
    	}
    	elseif($dim==2) {
    		$tab[]=$ligne;
    		while($ligne=mysqli_fetch_array($res)) {
    			$tab[]=$ligne;
    		}
    		return $tab;
    	}
    }
    Et voici ce que ça donne en affichage, et dans la BDD :
    Nom : formticket.png
Affichages : 95
Taille : 29,8 Ko

    Nom : Table ticketType.png
Affichages : 88
Taille : 8,2 Ko

    Nom : Table Tickets.png
Affichages : 83
Taille : 11,1 Ko

    Nom : vardumpsendticket.png
Affichages : 86
Taille : 3,9 Ko

    Donc oui j'ai rendu les champs qui ne passent pas nullables pour le moment,
    car sinon je ne reçois rien, et donc ce que j'essaye d'avoir en plus pour le moment c'est le type du ticket uniquement mais
    je ne le reçois qu'en affichage avec un select *. Pas moyen de l'envoyer...
    Siouplé, aidez-moi !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pense à regarder le code HTML généré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      <select .....>
                    </div>

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 27
    Par défaut
    Il manque mon envoi de 'id_TicketType' ? Si c'est ça, je ne sais pas où le placer


    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="js/jquery.js"></script>
        <script src="https://kit.fontawesome.com/d468954fc4.js" crossorigin="anonymous"></script>
        <link rel="stylesheet" media="screen" href="style.css">
        <title>Easy-Conseil</title>
    </head>
    <body id="bodyindex">
      <div class="banner fixed-top">
          <div id="log">
                    <form class="form-inline my-2 my-lg-0">
                <a class="nav-link a" href="index.php?action=affaccueil" id="home2"><i class="fas fa-home fa-2x"></i></a>
                <a class="nav-link a" href="index.php?action=contactco" id="contact2"><i class="far fa-envelope fa-2x"></i></a>
                <a class="nav-link a" href="#" id="account"><i class="far fa-user-circle fa-2x"></i></a>
                <a class="nav-link a" href="index.php?action=logoff"><i class="fas fa-sign-out-alt fa-2x"></i></a>
                </form>
     
                </div>
                    <img id="banniere" src="Bpics/banniere.jpg" width="454" height="70" class="d-inline-block align-top" alt="Banniere">
            <nav class="navbar navbar-expand-lg navbar-dark bg-primary" style="padding-top:10px">
              <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
              </button>
              <div class="collapse navbar-collapse" id="navbarNavDropdown">
            <ul class="navbar-nav">
            <!--<a class="nav-link" href="index.php?action=presentation"> Qui sommes-nous ?</a>-->
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Solutions Commerces </a>
                    <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                    <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Logiciel</a>
                            <ul class="dropdown-menu">
                            <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Encaissement</a>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="#">Lineosoft</a></li>
                                        <li><a class="dropdown-item" href="#">Tcpos</a></li>
                                        <li><a class="dropdown-item" href="#">Autres</a></li>
                                    </ul>
                                </li>
                                <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">ERP PGI</a>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="#">?????</a></li>
                                        <li><a class="dropdown-item" href="#">?????</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                        <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Matériel</a>
                            <ul class="dropdown-menu">    
                                <li><a class="dropdown-item" href="#">Caisses enregistreuses</a></li>
                                <li><a class="dropdown-item" href="#">Imprimantes thermiques</a></li>
                                <li><a class="dropdown-item" href="#">Pointeuses</a></li>
                                <li><a class="dropdown-item" href="#">Lecteurs Dallas</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Menu 2 </a>
                    <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                        <li><a class="dropdown-item" href="#">Action 1</a></li>
                        <li><a class="dropdown-item" href="#">Action 2</a></li>
                        <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Sous menu 2</a>
                            <ul class="dropdown-menu">
                                <li><a class="dropdown-item" href="#">Submenu</a></li>
                                <li><a class="dropdown-item" href="#">Submenu0</a></li>
                                <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Sous sous menu 2</a>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                        <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                    </ul>
                                </li>
                                <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Sous sous menu 2 bis</a>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                        <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
            </nav>
        </div>
      </div>
    </div>
    <div class="starter-template" style="margin-top: 150px;">
    <form method="post" action="index.php?action=sendticket">
      <div class="form-group">
          <div id="contactformbox" class="container"> <h1 class="text-left" style="color:white;">Envoyer<strong> un ticket</strong></h1>
            <p class="text-left" style="color:white;">Pour <strong style="color:beige;">envoyer une demande au support technique Easy Conseil</strong>, veuillez choisir
          </br> l'objet de votre demande dans le menu déroulant et écrire votre message dans la zone de texte </br>
            notre équipe traitera votre demande dans les plus brefs délais ! Merci.</p>
              <div class="jumbotron jumbotron-fluid">
                <div class="row">
                  <div class="col-md-5" style="text-align:right">
                    <label>Selectionnez votre demande :</label>
                  </div>
                    <div class="col-md-4">
                      <select class="form-control" name="tdData[0][id_TicketType]">
                    </div>    
                      <option value="1">Demande de devis</option><option value="2">S.A.V</option><option value="3">Autre demande</option>                  </select>
                    </div>
                </div>
     
                      <div class="row d-flex justify-content-center" style="margin-top:50px">
                        <div class="col-md-6">
                          <textarea class="form-control" placeholder="Entrez votre message..." style="padding-bottom:300px" name="tbData[0][note]" id="note" required="" oninvalid="this.setCustomValidity('Veuillez saisir du texte pour valider')" oninput="setCustomValidity('')"></textarea>
                        </div>                              
                      </div>
     
                    <div class="row justify-content-center align-items-center">
                      <div class="row" style="margin-top:15px">
                          <div class="col-md-12 align-self-left">                                  
                                  <button type="submit" class="btn btn-primary btn-block" id="envoi"> Envoyer </button>
                          </div>    
                        </div>
                    </div>
     
              </div>
          </div>
      </div>
    </form>
    </div>
    </body>
    <footer class="footer"><!--Easyweb.com est édité par Quentin Hache, production entièrement personelle. Copyright © 2020. Tous droits réservés.-->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    </footer>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut supprimer la balise </div> entre <select ...> et <option...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 27
    Par défaut
    Merci @jreaux62 des tes réponses ! La balise n'a rien à faire là effectivement.. Mais même en l'enlevant ça ne fonctionne toujours pas ...
    Voici le var_dump de mon tableau, après modification et après avoir rendu le champ "id_TicketType" (clef étrangère venant de la table tickettype) non nullable :

    C:\wamp64\www\test\fonctions.php:133:
    array (size=1)
    0 =>
    array (size=2)
    'note' => string 'Test
    ' (length=6)
    'id' => boolean false
    L'id de ma table ticket ne s'incrémente plus et plus rien ne s'écrit ... Peut être un problème avec ma clef étrangère ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Que donne var_dump( $_POST ); ?
    Dernière modification par rawsrc ; 17/02/2020 à 13h05.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 27
    Par défaut
    ça donne :

    C:\wamp64\www\test\index.php:51:
    array (size=2)
    'tdData' =>
    array (size=1)
    0 =>
    array (size=1)
    'id_TicketType' => string '1' (length=1)
    'tbData' =>
    array (size=1)
    0 =>
    array (size=1)
    'note' => string 'Test
    ' (length=6)

  8. #8
    Invité
    Invité(e)
    Par défaut
    C'est clair, non ?

    • 'tdData'
    • 'tbData'

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 27
    Par défaut
    Génial . Je vais changer de lentilles, merci

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

Discussions similaires

  1. Probléme d'insertion de la date dans la base access
    Par chahinaz21 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/11/2009, 21h33
  2. Problème PL/SQL Si tuple déjà dans la base
    Par MaRTy59 dans le forum PL/SQL
    Réponses: 13
    Dernier message: 17/11/2009, 16h27
  3. [MySQL] problème d'insertion des caractères arabe dans une base mysql
    Par sasaas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/03/2008, 11h56
  4. Problème format de champs pour insertion dans une base FileMaker
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2007, 22h27
  5. [MySQL] Insérer complètement un array dans une base
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2005, 19h52

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