Page 1 sur 2

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

Posté : 06 mai 2010, 18:03
par <Osef>
Bien le bonsoir messieurs dames

Je viens vers vous car je me retrouve confronté à un simple script d'envoi de données via un formulaire, et qui ne marche pas... Frustrant. D'autant plus qu'un formulaire d'envoi de fichier marche très bien à côté.. Enfin bref.

Voila le code :

Code : Tout sélectionner

<?php $titre = $_POST['titre']; $date = $_POST['date']; $contenu = $_POST['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", "xx", "xx"); $selection_bd = mysql_select_db("xxx", $connexion); $requete="INSERT INTO ajout_article('ajout_article','titre','date','contenu') VALUES('', '$titre','$date','$contenu')"; $affiche= mysql_query($requete,$connexion); mysql_close($connexion); ?>
Je sais que mon formulaire marche très bien car j'ai fais des print_r($_POST['...']) qui m'ont retournés ce que j'avais tapé dans le form. Et pourtant, je n'ai aucun retour dans la bdd. Le problème doit donc venir de la requete sql.

Des suggestions ?

Re: Une simple requete SQL ...

Posté : 06 mai 2010, 18:11
par visualight
Essaye un peu de forcer une valeur pour "ajout_article".
Il se peut que le champ ajout_article soit mis en : "not null" dans phpmyadmin.
$requete="INSERT INTO ajout_article('ajout_article','titre','date','contenu') VALUES('TEST', '$titre','$date','$contenu')";
$affiche= mysql_query($requete,$connexion);
A+ ;)

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 09:28
par <Osef>
      $requete="INSERT INTO ajout_article('ajout_article','titre','date','contenu') VALUES('TEST','$titre','$date','$contenu')";
      $affiche= mysql_query($requete,$connexion);
J'ai mis 'TEST', 'NULL', '', avec les ". ." , rien n'y fait, je n'ai toujours rien dans phpmyadmin.

Dans la page qui doit afficher le contenu de cette table :
$connexion = mysql_connect("localhost", "xx", "xx");
         $selection_bd = mysql_select_db("xxx", $connexion);              

         $sql_titre = "SELECT titre FROM ajout_article";
         $titre = mysql_query("$sql_titre");
         $sql_date = "SELECT date FROM ajout_article";
         $date = mysql_query("$sql_date");
         $sql_contenu = "SELECT contenu FROM ajout_article";
         $contenu = mysql_query("$sql_contenu");
         
         
         echo "<h3>$titre</h3>";
         echo "<h4>$date</h4>";
         echo "$contenu";
Voila ce que j'obtiens :
Resource id #4
Resource id #5
Resource id #6

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 11:52
par visualight
Pour moi, il y a erreur ici :
$sql_titre = "SELECT titre FROM ajout_article";
$titre = mysql_query("$sql_titre");
$sql_date = "SELECT date FROM ajout_article";
$date = mysql_query("$sql_date");
$sql_contenu = "SELECT contenu FROM ajout_article";
$contenu = mysql_query("$sql_contenu");

Personnellement, je ferais :
// Pour sélectionner un enregistrement en particulier, il faut rajouter la clause WHERE : Exemple => ... WHERE id='$id'
// Sinon, il faut faire une boucle while pour afficher tous les enregistrements.
$sql_requete = "SELECT titre, date, contenu FROM ajout_article";
$sql_resultat = mysql_query($sql_requete) or die(mysql_error());

$row = mysql_fetch_array ($sql_resultat);

// Dans le cas où tu devrais utiliser une boucle WHILE 
// WHILE ($row = mysql_fetch_array ($sql_resultat)) { .... }

$titre = $row['titre'];
$date = $row['date'];
$contenu = $row['contenu'];

echo '<h3>'.$titre.'</h3>';
echo '<h4>'.$date.'</h4>';
echo $contenu;
A+ ;)

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 14:35
par <Osef>
Merci pour vos réponses.
      
          $id = mysql_insert_id();              
          
          $sql_requete = "SELECT titre, date, contenu FROM ajout_article WHERE ajout_article='$id'";
          $sql_resultat = mysql_query($sql_requete) or die(mysql_error($connexion));
          
          $row = mysql_fetch_array($sql_resultat);
          
          
          $titre = $row['titre'];
          $date = $row['date'];
          $contenu = $row['contenu'];
Rien ne s'affiche ..

@visualight : dans votre exemple avec WHERE id ="..." , id correspond à la colonne incrémentée de la table non ?

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 14:48
par dogmongo
bonjour,

moi j'aurai plutôt mis ".$id." ou \"$id\" sinon ta variable va etre concidérer comme chaine, à moin que je me trompe

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 14:56
par YaunBeug
pourquoi tu ne testerai pas tes requete dans l onglet sql de php my admin? Tu verrais mieux ce qui se passe.

t aura juste a mettre
INSERT INTO ajout_article('titre','date','contenu') VALUES("montitre","17/01/46","youpiiiiii")

apres tu regarde si tes tables se remplissent

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 15:27
par <Osef>
Excusez moi, j'ai oublié de vous signaler que l'ajout dans la base fonctionne maintenant ^^ Il ne reste plus que l'affichage sur une autre page là..

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 ..

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 15:55
par visualight
@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 ;)

Re: Une simple requete SQL ...

Posté : 07 mai 2010, 17:30
par AB
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 ...

Posté : 10 mai 2010, 10:54
par <Osef>
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 ...

Posté : 12 mai 2010, 16:20
par <Osef>
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 ...

Posté : 12 mai 2010, 17:19
par AB
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 ...

Posté : 14 mai 2010, 08:56
par <Osef>
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 ...

Posté : 14 mai 2010, 09:51
par Ryle
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 :)