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 :

Enregistrement de données $_POST


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Septembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : auto-entrepreneur

    Informations forums :
    Inscription : Septembre 2024
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Enregistrement de données $_POST
    bonjour;

    j'ai mon formulaire php qui doit enregistrer les données
    $_POST dans la base de données qui ne marche pas.
    Ca me coupe la page a la moitié de celle ci.

    j'ai beau chercher je trouve pas et c'est pas mon premier
    formulaire pourtant, le voici:

    Code html : 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
    <fieldset><legend>Informations</legend>
    Nom:<br><input type="text" name="nom" placeholder="nom du script" required><br>
     
     
    Choisir la sous-categorie avec l'ID:<br>
    <select name="cat" id="cat" required>
      <option value="">---- CHOISIR ----</option>
     
     
    <?php
      $host_name = 'xxxxxxxxxxxxxxxxxxxxx';
      $database = 'xxxxxxxxxxxxxxxxxxxxxx';
      $user_name = 'xxxxxxxxxxxxxxxxxxxxxxx';
      $password = 'xxxxxxxxxxxxxxxxxxxxx';
      $image = '$file_name';
     
              $link = new mysqli($host_name, $user_name, $password, $database);
     
     
     
     
         $resultatz = $link->query("SELECT * FROM `sous-sous-categorie` ORDER by id ASC");
    while( $resultat_tableauz = $resultatz->fetch_assoc() )
    {
     echo '<option value="'.$resultat_tableauz["id"].'">[ID Num.'.$resultat_tableauz["id"].'] '.$resultat_tableauz["nom"].'</option>';
     
    } 
     
     ?> 
     
    </select><br>
     
     
     
    	description courte:<br><textarea cols="30" rows="5" name="descript_courte" id="descript1"></textarea><br>
     
     
     
     
     
     
     
    </fieldset>
     
     
     
    <fieldset><legend>INFORMATIONS</legend>
      Version:<br><input type="text" name="version" placeholder="exemple: 1.2.0"><br>
       Date:<br><input type="date" name="date" required><br>
      Source:<br><input type="text" name="source" placeholder="exemple: Github"><br>
    	 Auteur:<br><input type="text" name="auteur" placeholder=""><br>
    </fieldset>
     
    <fieldset><legend>CARACTERISTIQUES</legend>	  
    	Nombre de Fichiers:<br><input type="text" name="nb_fichiers" placeholder=""><br>
    	URL Demo:<br><input type="text" name="url_demo" placeholder="../demos/"><br>
    	Taille du fichier:<br><input type="text" size="6" name="taille_fichier" placeholder="exemple: 10Mo"><br>
    Langue principale:<br><input type="text" name="langues" placeholder="Francais"><br>
     
     
    </fieldset>	
    <fieldset><legend>DESCRIPTION</legend>
    <br><textarea cols="30" rows="10" name="descript" id="descript"></textarea><br>
     
     </fieldset>	
    <fieldset><legend>CODE SOURCE</legend> 
      <br>language:<br>
      <select name="lang" id="lang">
      <option value="">selectionner</option>
      <option value="php">PHP</option>
      <option value="css">CSS</option>
      <option value="js">Javascript</option>
      <option value="markup">HTML</option>
      </select><br>
      <br>
      <textarea cols="30" rows="20" name="descriptcode" id="descriptcode" placeholder="ici placez votre script">
     
     
      </textarea>  </fieldset><br> <br>
    <fieldset><legend>VISIBILITE</legend>   
    Afficher au public ?<br> Oui<input type="radio" name="pub" value="oui"><input type="radio" value="non" name="pub" checked>Non<br>
    </fieldset><br> <br>
     
        <input type="submit" value="ENREGISTRER LE CONTENU">
    </form>


    et la partie PHP SQL

    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
    if(isset($_POST['nom'])) {
     
        echo '<pre>';
        print_r($_POST);
        echo '</pre>';
     
    	$nom = htmlspecialchars($_POST['nom']); 
    	$cat = $_POST['cat'];
    	$version = $_POST['version'];
    	$date_contenu = $_POST['date'];
    	$source = $_POST['source'];
    	$auteur = $_POST['auteur'];
    	$taille = $_POST['taille_fichier'];
    	$video = "";
    	$image = "";
    	$fichier = "";
    	$description = htmlspecialchars($_POST['descript']);
    	$code_source = $_POST['descriptcode'];
    	$language = $_POST['lang'];
    	$url_demo = $_POST['url_demo'];
    	$nb_fichiers = $_POST['nb_fichiers'];
    	$descript_courte = htmlspecialchars($_POST['descript_courte']);
    	$langues = $_POST['langues'];
     
     
     
     
     
     
     
      $host_name = 'XXXXXXXXXXXXX';
      $database = 'XXXXXXXXXXXXXXX';
      $user_name = 'XXXXXXXXXXXX';
      $password = 'XXXXXXXXXXXXXX';
     
     
    	  $link = new mysqli($host_name, $user_name, $password, $database);
     
      if ($link->connect_error) {
        die('<p>La connexion au serveur MySQL a échoué: '. $link->connect_error .'</p>');
      } else {
        echo '';
      }
     
     
     
    $sql = "INSERT INTO `contenu` (nom, sous-sous-categorie, version, date_contenu, source, auteur, taille, vidéo, image, fichier, description, code_source, language, url_demo, nb_fichiers, descript_courte, langues, pseudo_createur) VALUES ('".$nom."', '".$cat."', '".$version."', '".$date_contenu."', '".$source."', '".$auteur."', '".$taille."', '".$video."', '".$image."', '".$fichier."', '".$description."', '".$code_source."', '".$language."', '".$url_demo."', '".$nb_fichiers."', '".$descript_courte."', '".$langues."', '".$pseudo."')";
    if(mysqli_query($link, $sql)){  
     
     echo "<center><br><div class=\"ok\">Le contenu a bien <br>&eacute;t&eacute; envoy&eacute; <br><a href='add_contenu.php'>RETOUR</a>!!!</div><br></center>";
     
    }  
    else
    {
     echo "<center><br><div class=\"nok\">Message non envoy&eacute; !!!</div><br></center>";
     
     
    }	
    }
     
    ?>
    merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 910
    Points : 6 703
    Points
    6 703
    Par défaut
    La description de ton problème étant assez laconique, quelques remarques (par ordre décroissant):
    • On n'écrit surtout pas ça:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $sql = "INSERT INTO `contenu` (nom, sous-sous-categorie, version, date_contenu, source, auteur, taille, vidéo, image, fichier, description, code_source, language, url_demo, nb_fichiers, descript_courte, langues, pseudo_createur) VALUES ('".$nom."', '".$cat."', '".$version."', '".$date_contenu."', '".$source."', '".$auteur."', '".$taille."', '".$video."', '".$image."', '".$fichier."', '".$description."', '".$code_source."', '".$language."', '".$url_demo."', '".$nb_fichiers."', '".$descript_courte."', '".$langues."', '".$pseudo."')";
      if(mysqli_query($link, $sql)){
      On utilise une requête préparée avec des placeholders (des points d'interrogation) et on binde les variables.
    • Je remarque que tu ne fais aucun contrôle sur les valeurs reçues en POST.
    • Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $nom = htmlspecialchars($_POST['nom']);
      On n'applique pas htmlspecialchars avant d'insérer des données en base. Les données doivent être rentrées à l'état brut, ce qui réduit leur taille et permet des manipulations textuelles (comme une recherche) plus aisées. La raison d'être de htmlspecialchars est de préparer des données pour une page html au moment de l'affichage, pas pour le stockage.
    • Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
      SELECT * FROM `sous-sous-categorie` ORDER by id ASC
      Une table nommée sous-sous-categorie laisse supposer que tu aurais une table categorie, une autre sous-categorie, voire peut-être une sous-sous-sous-categorie. Bref tu as un problème de design de ta base. Pour stocker des catégories et leurs sous-catégories dans une seule table, il suffit de trois colonnes (id, nom, parent_id). parent_id est une clef étrangère (FOREIGN KEY) correspondant à l'id de la catégorie parente de la sous-catégorie en question.
      À propos de ORDER BY id ASC, Je te déconseille de te baser sur ta clef primaire (si tel est le cas) pour obtenir un ordre précis, mieux vaut ajouter une colonne à ta table pour assurer ce rôle au besoin (ça évite de trifouiller tes clefs primaires le jour où tu voudras changer l'ordre ou ajouter/retirer une catégorie).
      Aussi, à SELECT * il faut préférer la liste explicite des valeurs qu'on souhaite obtenir, donc SELECT id, nom.
    • Encore à propos du design de ta base de données, je remarque que ta requête d'insertion contient pas mal de colonnes dont auteur, pseudo, langue: Le but du jeu étant de ne pas dupliquer l'information, peut-être serait-il préférable de sortir certaines de ces colonnes de cette table pour les mettre dans une table à part puis de faire la liaison avec les clefs.
    • Le nommage de tes variables, colonnes, attributs name, clefs de tableau est totalement anarchique, on passe du mot complet au mot abrégé, du français à l'anglais, séparés ou non par un underscore. Choisis une convention de nommage et tiens toi s'y. (que de temps gagné et de charge mentale évitée une fois qu'on l'a fait, c'est comme de ranger son garage, même sensation).
    • modernise un peu ton html. (Le html c'est pour structurer le contenu, tout ce qui est aspect et mise en page, c'est du css). Vire les balises <center> et <br>, utilise les balises <label> pour tes éléments de formulaire et <p> pour des paragraphes. Pour centrer ou aller à la ligne => css. Aussi, si tu as correctement défini l'encodage de ta page (et de ton éditeur de code), tu n'as pas besoin d'utiliser d'entités html pour les lettres accentuées.
    • active l'affichage des erreurs PHP.
    • Choisis entre le style POO et le style procédurale pour ce qui concerne l'extension MySQLi. Évite de faire un mix des deux.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Septembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : auto-entrepreneur

    Informations forums :
    Inscription : Septembre 2024
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour toutes c informations on dirait que je suis resté a coder comme il y a 10 ans ...il faut que je me mette a la page encore merci à toi.

Discussions similaires

  1. [MySQL] Problème formulaire PHP/SQL
    Par Maxou73 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/01/2011, 19h19
  2. Probleme traitement formulaire php
    Par benji54 dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2006, 21h50
  3. Problème avec formulaire PHP
    Par silvain dans le forum Langage
    Réponses: 8
    Dernier message: 28/08/2006, 23h58
  4. Problème de formulaire PHP
    Par guillaumeIOB dans le forum Langage
    Réponses: 13
    Dernier message: 27/08/2006, 22h41
  5. Problème de sessions PHP/SQL
    Par Mousk dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2006, 15h02

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