[Résolu] Une simple requete SQL ...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu] Une simple requete SQL ...

Re: [Résolu] Une simple requete SQL ...

par AB » 21 mai 2010, 16:22

T'as pas vu les tags pour indiquer résolu ?

Re: Une simple requete SQL ...

par <Osef> » 21 mai 2010, 08:52

C'est bon nl2br marche, merci à vous !

Re: Une simple requete SQL ...

par AB » 20 mai 2010, 21:59

Juste en passant ...
Le problème est probablement du à ton champ "date". En effet, "date" est un mot clé réservé du langage sql, et il ne devrait donc pas être utilisé comme nom de colonne...
Mysql, dans sa grande tolérance, accepte les colonnes avec le mot date. Je me souviens avoir lu ça lu ça quelque part... Mais effectivement il est très déconseillé de le faire, autrement impossible de transférer ces tables dans un autre sgbd, sauf à renommer cette colonne et modifier toutes les requêtes.

Re: Une simple requete SQL ...

par stealth35 » 20 mai 2010, 18:08

c'est au moment de l'affichage que tu dois faire nl2br et pas a l'insertion dans la base

Re: Une simple requete SQL ...

par <Osef> » 20 mai 2010, 18:05

Je viens de trouver la fonction nl2br()

J'ai essayé
$contenu = nl2br(mysql_real_escape_string($_POST['contenu']));
C'est peut être un peu bourrin ^^v mais pourtant le coloration syntaxique de mon PSPad ne semble pas avoir de problème..

Quelle est la meilleure syntaxe ?

Re: Une simple requete SQL ...

par <Osef> » 20 mai 2010, 17:24

C'est exactement ce qu'il me fallait, merci beaucoup !

Un dernière chose et ça serait parfait, existe t'il une fonction du même genre qui pourrait reconnaître les retours à la ligne et qui les remettrait donc dans l'affichage du contenu ?

Re: Une simple requete SQL ...

par Ryle » 14 mai 2010, 18:49

Au moins une de tes variables contient une chaine avec une apostrophe. Du coup si tu l'insères dans ta requête SQL sans la protéger, ta base de données ne sauras pas où commence et où s'arrête ta chaine (qui est justement délimitée par des apostrophes) :)

Pour protéger tes chaines, tu peux utiliser mysql_real_escape_string() :)

Re: Une simple requete SQL ...

par <Osef> » 14 mai 2010, 10:30

     <?php

      $connexion = mysql_connect("localhost", "dauvergnej", "dauvergnej");
      $selection_bd = mysql_select_db("web_laboisseraie", $connexion);
      
      
         $titre = $_POST['titre'];
         $jour = $_POST['jour']; 
         $contenu = $_POST['contenu'];
         
         print_r($titre);
         print_r($jour);
         print_r($contenu);
         
          if (empty($_POST['titre']) ){
          echo "Erreur : le champ titre est vide.";
             }else if (empty($_POST['jour']) ){
                echo "Erreur : le champ journée est vide.";
                  }else if (empty($_POST['contenu']) ){
                      echo "Erreur : le champ contenu est vide.";}
                    
                      
                      
      $requete="INSERT INTO `web_laboisseraie`.`ajout_article` (`ajout_article`, `titre`, `jour`, `contenu`) VALUES ('','$titre','$jour','$contenu')";
      $affiche= mysql_query($requete,$connexion) or die(mysql_error($connexion));
      
mysql_close($connexion);    
      ?>
J'ai changé tout ce dont vous aviez parlé. J'ai mis ' ' au lieu de NULL, j'ai changé "date" par "jour" dans PHPmyAdmin ainsi que dans mon code.
Voila ce que me retourne mysql_error : "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ISVV (Institut des Sciences de la Vigne et du Vin de l’Université de Bordeaux), ' at line 1"

Quand j'ai vu line 1, j'ai d'abord pensé à la doctype qui était <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> peut être incompatible avec mes requêtes SQL, je l'ai supprimé, mais j'ai toujours le même message d'erreur.
Le passage qu'il cite dans la parenthèse est en fait un passage du contenu du texte envoyé depuis le formulaire dans le champ contenu. Es que cela peut interférer avec mes requêtes ?

Re: Une simple requete SQL ...

par Ryle » 14 mai 2010, 09:51

Ajoute un mysql_error() après l'exécution de ta requête, tu sauras immédiatement s'il y a un problème :)

Le problème est probablement du à ton champ "date". En effet, "date" est un mot clé réservé du langage sql, et il ne devrait donc pas être utilisé comme nom de colonne...

Tu peux aussi essayer de remplacer le NULL que tu essayes d'insérer comme valeur de ajout_article par une chaine vide (''). Ta colonne ne pouvant pas être null, il se peut que ta version de mysql ne l'autorise pas malgré l'auto-increment qui va remplacer sa valeur :)

Re: Une simple requete SQL ...

par <Osef> » 14 mai 2010, 08:56

J'ai corrigé le &nbsp; mais cela ne corrige pas mon problème, car le formulaire en lui même fonctionne (je recois les valeurs envoyées avec les print_r().
J'ai édité mon dernier post avec tout le code que j'ai actuellement pour ne pas alourdir le forum
Etrange que le lien ne fonctionne pas chez vous... J'ai changé d'hebergeur, au cas où :
http://ups.imagup.com/10/1273867434.PNG

Re: Une simple requete SQL ...

par AB » 12 mai 2010, 17:19

La coloration syntaxique aurait dû t'alerter, la fin de ton formulaire n'est pas correct. Ce n'est pas &nbsp mais &nbsp;

Pour le reste ton lien fait planter firefox...

Re: Une simple requete SQL ...

par <Osef> » 12 mai 2010, 16:20

Personne pour répondre ?

L'upload des données vers envoi_bdd_articles.php fonctionne car les print_r() retournent les valeurs, et l'affichage des données de la bdd vers le site fonctionne car une insertion depuis PHPmyAdmin et le tout s'affiche. Le problème doit donc venir de mes requêtes SQL ...

Voila la table en question, je pense que c'est suffisant pour expliquer le fonctionnement de la table :
http://www.casimages.com/img.php?i=1005 ... 016729.png

Re: Une simple requete SQL ...

par <Osef> » 10 mai 2010, 10:54

Bon rectification, après des tests, je constate que l'affichage du contenu sur la page web fonctionne, j'ai inséré du contenu directement sur PHPmyAdmin, mais l'envoi depuis mon formulaire ne fonctionne toujours pas.
Je vous donne l'intégralité de celui ci :
ajout_formulaire.php :
   <form method="post" action="envoi_bdd_articles.php">
 
     Titre de l'article : </br><input type="text" name="titre">  </br>
     Date : </br><input type="text" name="date"> </br></br>
     <textarea name="contenu" rows="15" cols="80"></textarea>
      </br></br></br>
     <input type="submit" value="Envoyer"> &nbsp;          
     <input type="reset" value="Recommencer"> 
  
  </form>
envoi_bdd_articles.php :
 <body>
  
  <h3>TRANSFERT DU CONTENU</h3>
      <?php
      
         $titre = $_POST['titre'];
         $date = $_POST['date']; 
         $contenu = $_POST['contenu'];
         
         print_r($titre);
         print_r($date);
         print_r($contenu);
         
          if (empty($_POST['titre']) ){
          echo "Erreur : le champ titre est vide.";
             }else if (empty($_POST['date']) ){
                echo "Erreur : le champ date est vide.";
                  }else if (empty($_POST['contenu']) ){
                      echo "Erreur : le champ contenu est vide.";}
                      
      $connexion = mysql_connect("localhost", "dauvergnej", "dauvergnej");
      $selection_bd = mysql_select_db("web_laboisseraie", $connexion);
                      
                      
      $requete="INSERT INTO `web_laboisseraie`.`ajout_article` (`ajout_article`, `titre`, `date`, `contenu`) VALUES (NULL,'$titre','$date','$contenu')";
      $affiche= mysql_query($requete,$connexion);
      
mysql_close($connexion);    
      ?>
      <a href ="accueil.php">Visionnez la page d'accueil du site</a> &nbsp;&nbsp;<a href="ajout_article.php">Retour au formulaire</a>
  </body>
:?

Re: Une simple requete SQL ...

par AB » 07 mai 2010, 17:30

J'ai essayé de créer carrement la requête SQL via les options d'affichage de PHPmyAdmin (Oui je suis feignant et j'assume :D Mais je suis une bille en SQL..) Je ne sais même pas si c'est correct de balancer ça dans le code. Enfin ça donne ça :
SELECT * FROM `ajout_article` ORDER BY `ajout_article` DESC LIMIT 0 , 1
Mais c'etait tros beau pour que ça marche ..
ça marche pas même en l'exécutant dans PHPmyAdmin ?

Re: Une simple requete SQL ...

par visualight » 07 mai 2010, 15:55

@visualight : dans votre exemple avec WHERE id ="..." , id correspond à la colonne incrémentée de la table non ?
Tout à fait ;)
Rien ne s'affiche ..
C'est normal si tu fais une requête avec une clause WHERE avec un ID qui n'existe pas.
Il faut d'abord que tu chope ton ID des éléments à sélectionner pour la requête.

(Créer un champ ID en int(5) autoincrement = 99999 id possibles (on prend les devants)

Une question concernant les ID : Peux tu me décrire le principe détaillé de fonctionnement de ton code.
Il faut que je saches comment tu travailles avec les ID pour t'orienter au mieux dans ma réponse.
Sois le plus clair et précis possible.

Merci ;)