{MySQL} Probléme partie admin

Fermé
Majora2089 - 26 juin 2009 à 16:47
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 30 juin 2009 à 22:52
Bonjour,
J'ai un soucis avec ma base de donnée ou ma partie administration, voici un code que j'ai créer et que j'ai déjà utilisé pour d'autres sites (et qui marche sur les autres mais la je ne sais pas pourquoi ça ne marche pas...)


<?php

if (isset($_POST['article']) AND isset($_POST['type']) AND isset($_POST['prix']) AND isset($_POST['photo']) AND isset($_POST['slogan']) AND isset($_POST['intro']) AND isset($_POST['presentation']) AND isset($_POST['caracteristique']) AND isset($_POST['option']) AND isset($_POST['titrevideo']) AND isset($_POST['video']) AND isset($_POST['genre']))
{
    if ($_POST['article'] != NULL AND $_POST['type'] != NULL AND $_POST['prix'] != NULL AND $_POST['photo'] != NULL AND $_POST['slogan'] != NULL AND $_POST['intro'] != NULL AND $_POST['presentation'] != NULL AND $_POST['caracteristique'] != NULL AND $_POST['option'] != NULL AND $_POST['titrevideo'] != NULL AND $_POST['video'] != NULL AND $_POST['genre'] != NULL)
    {
        
mysql_connect("xxxxxxxx", "xxxxxx", "xxxxxx");
mysql_select_db("xxxxxxxx");

        $article = htmlentities($_POST['article']);
        $type = htmlentities($_POST['type']);
        $prix = htmlentities($_POST['prix']);
		$photo = htmlentities($_POST['photo']);
		$slogan = htmlentities($_POST['slogan']);
		$intro = htmlentities($_POST['intro']);
		$presentation = htmlentities($_POST['presentation']);
		$caracteristique = htmlentities($_POST['caracteristique']);
        $option = htmlentities($_POST['option']);
        $titrevideo = htmlentities($_POST['titrevideo']);
		$video = htmlentities($_POST['video']);
		$genre = htmlentities($_POST['genre']);
 
        
        mysql_query("INSERT INTO osarticle VALUES('', '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre')");
 
        
        mysql_close();
    }
}
?>

<div id="menu-centre">

<center>
  <h1>Stuff</h1>
<h3>Administration</h3>
</center>
<div id="liens-menu">
    <?php
	include ('liens-menu.php') ;
?>
    </div>
    
    <div class="menu-centre-gauche">
<form action="index.php" method="post">
Nom de l'Article : <input type="text" name="article" /><br />
Type : <input type="text" name="type" /><br />

Prix : <input type="text" name="prix" />€<br /><br /><br />

Photo (160*120px) : <br /><input type="file" accept="image/jpeg" name="photo" value="Photo"/><br /><br /><br />

Slogan : <br /><textarea cols="60" name="slogan" rows="2"></textarea><br />

Texte d'intro : <br /><textarea cols="60" name="intro" rows="5"></textarea><br /><br />

<h2>Présentation :</h2>
<textarea cols="73" name="presentation" rows="10"></textarea><br /><br />

<h2>Caracteristique :</h2>
<textarea cols="73" name="caracteristique" rows="10"></textarea><br /><br /><br />

<h2>Options :</h2><br />
<textarea cols="73" name="option" rows="10"></textarea><br /><br />


<h2>Video :</h2>
Titre Video : <input type="text" name="titrevideo" /><br /><br />
ID Video : <input type="text" name="video" /><br /><br />
    <input type="radio" name="genre" value="en" />Anglais <br />
	<input type="radio" name="genre" value="fr" />Français <br />
	<input type="radio" name="genre" value="jap" />Japonnais <br />
    <input type="radio" name="genre" value="autres" />Autres... <br />

<br /><br />

<input type="submit" value="Envoyer" />
<input type="reset" value="Supprimer" />

</form>
</div>

Voici la partie du code qui ne marche pas, en faite j'ai beau rentrer des données, elle ne s'enregistre pas dans ma table ("osarticle").

Dans les includes il n'y pas de Php juste des liens en html.

Merci de votre attention.
Cordialement Majora2089

PS: jspr que met explications sont assez clair sinon je restes à votre disposition.
A voir également:

18 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
28 juin 2009 à 17:20
Hello, re
Je trouve que ya un souci dans le code SQL qui est passé à la base de données.
Il faut rajouter des '' autour des noms des champs dans le code php : `article`,`type`,...
$sql = "INSERT INTO osarticle (article, type, prix, photo, slogan, intro, presentation, caracteristique, option, titrevideo, video, genre)

Pareil pour les valeurs.
On est toujours sur un problème de requete SQL.

Ici
( '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre',)
Il y a une virgule à la fin qui ne sert à rien...

Re-regarde attentivement ton code SQL. L'astuce tu l'exécute directe en base et ensuite tu recopie de code formaté en PHP. Ainsi tu t'assure qu'il n'est pas source d'erreur.
2
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
29 juin 2009 à 10:37
Toujours pas compris.
Quand tu programme PHP tu ne peux pas lui dire de faire
$sql = "INSERT INTO osarticle (article, type, prix, slogan, intro, presentation, caracteristique, option, titrevideo, video, genre) VALUES ("", "$article", "$type", "$prix", "$slogan", "$intro", "$presentation", "$caracteristique", "$option", "$titrevideo", "$video", "$genre")" ;

--> "$article" est déjà encapusulé dans "".
Il faut mettre comme j'ai fait ci-dessous. Je ne l'ai pas testé parce que je n'ai pas l'environnement. Mais c'est une bonne syntaxe.
De plus, ton 1er champ est auto incrémenté, ce n'est pas la peine de lui proposer une valeur "" ...

$sql = "INSERT INTO osarticle (`article`, `type`, `prix`, `slogan`, `intro`, `presentation`, `caracteristique`, `option`, `titrevideo`, `video`, `genre`) VALUES ('$article', '$type', '$prix', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre')" ;
2
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 388
26 juin 2009 à 17:10
Bonjour,

Peux-tu rajouter
OR DIE('Erreur INSERT ' . mysql_error());
après ton mysql_query afin de me faire connaître l'erreur sql afin de pouvoir mieux t'aider.
Merci
A plus
0
Bonsoir, merci pour ta réponse Christounet, donc j'ai mis :
 mysql_query("INSERT INTO osarticle VALUES('', '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre')") ;
        
        OR DIE('Erreur INSERT ' . mysql_error());


Et ça me donne ceci (line73 est la ligne du OR DIE) :

Parse error: syntax error, unexpected T_LOGICAL_OR in /homez.145/ezakweb/www/stuff/admin/index.php on line 73

Sinon j'ai essayé comme ceci :

mysql_query("INSERT INTO osarticle VALUES('', '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre')") or die ("erreur insert
".mysql_error());


Et ça ne donne absolument rien, j'ai continué à chercher de mon coté mais je ne voit pas du tout d'où ça peux venir...

Cordialement Majora2089
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
27 juin 2009 à 10:47
Hello,
il y a pas mal d'infos dans le post oui. Je n'ai pa tout lu..
Ce que je note déjà c'est ce bout de code

mysql_query("INSERT INTO osarticle VALUES('', '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre')");
T'es-tu assuré(e) que les champs proposés en INSERTION existent et nommés pareil?
Cette méthode n'INSERT INTO n'est pas trop recommandée (je la trouve peu performante).
Parce que tu ne lui dit pas quels champs sont concernés donc il te rentre tout à la suite. Il suffit qu'il en manque un ou qu'un se soit rajouté, il faut sans arrêt recommencer ce script.
Un début de réponse peut etre...
0
Oui peut être même la solution, je regarde sur ma base de donnée et mon code si c'est bon, a part INSERT INTO tu me conseil d'utilisé quoi ?
0
Je reviens rapidement vers vous, tout est bon dans ma base de donnée, quand j'insère des donnée depuis la bdd ça se met nikel sur le site, mais en faite c'est vraiment la partie Admin qui déconne, le nom des champs est correct aucune erreur de frappe ou de faute d'orthographe.
0
Le probleme vient vraiment du code en lui même, j'ai fait un code rapide pour supprimer des ligne de la BDD et ça marche nikel :

<?php
mysql_connect("xxxxxxxx", "xxxxxx", "xxxxxx");
mysql_select_db("xxxxxxxx");

mysql_query("DELETE FROM osarticle WHERE id='$_POST[deleteid]' ");
mysql_close();

?> 

<div id="menu-centre">
<center>
  <h1>Original Stuff</h1>
<h3>Administration</h3>
</center>
<div id="liens-menu">
    <?php
	include ('liens-menu.php') ;
?>
    </div>
    
    <div class="menu-centre-gauche">
<h2>Supprimer un Article :</h2>
<form action="index-supprimer.php" method="post">
 
<p>
ID : <input type="text" name="deleteid" /><br /><br />

<input type="submit" value="Envoyer" />
<input type="reset" value="Reset" />
</p>
 
</form>
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
27 juin 2009 à 12:13
Je distingue 2 codes qui peuvent avoir des problèmes :
Celui de la requete et celui du programme php.
Etape par étape pour débeuguer, teste le code SQL avec une clé bidon. Si ok, teste la valeur de la variable $_POST[deleteid] qui est surement retounée par une autre requete SQL de type SELECT.
Vu que c'est un $_POST[], vérifie que la valeur est bien récupérée.
Et enfin teste ton programme PHP point par point en commentant les parties actives d'exécution.

Le tout est d'identifier où ça coince. En général donc, je vérifie la partie côté BDD et ensuite celle coté programme.
0
Bonjour, je viens vous voir car la recherche de mon erreur avance petit à petit :

J'ai retouché mon code, voici l'erreur qu'il m'affiche :

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 'option, titrevideo, video, genre) VALUES ( '1', '2', '3', '', '4', '' at line 1


et voici mon code sur deux pages :

insertion.php :
<form name="insertion" action="insertion2.php" method="post">
Nom de l'Article : <input type="text" name="article" /><br />
Type : <input type="text" name="type" /><br />

Prix : <input type="text" name="prix" />€<br /><br /><br />

Photo (160*120px) : <br /><input type="file" accept="image/jpeg" name="photo" value="Photo"/><br /><br /><br />

Slogan : <br /><textarea cols="60" name="slogan" rows="2"></textarea><br />

Texte d'intro : <br /><textarea cols="60" name="intro" rows="5"></textarea><br /><br />

<h2>Présentation :</h2>
<textarea cols="73" name="presentation" rows="10"></textarea><br /><br />

<h2>Caracteristique :</h2>
<textarea cols="73" name="caracteristique" rows="10"></textarea><br /><br /><br />

<h2>Options :</h2><br />
<textarea cols="73" name="option" rows="10"></textarea><br /><br />


<h2>Video :</h2>
Titre Video : <input type="text" name="titrevideo" /><br /><br />
ID Video : <input type="text" name="video" /><br /><br />
    <input type="radio" name="genre" value="en" />Anglais <br />
	<input type="radio" name="genre" value="fr" />Français <br />
	<input type="radio" name="genre" value="jap" />Japonnais <br />
    <input type="radio" name="genre" value="autres" />Autres... <br />

<br /><br />

<input type="submit" value="Envoyer" />
<input type="reset" value="Supprimer" />

</form>


insertion2.php :
<?php
  //connection au serveur
  $cnx = mysql_connect( "XXXXX", "XXXXXX", "XXXXX" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "XXXXXXXXX" ) ;
 
  		$article = htmlentities($_POST['article']);
        $type = htmlentities($_POST['type']);
        $prix = htmlentities($_POST['prix']);
		$photo = htmlentities($_POST['photo']);
		$slogan = htmlentities($_POST['slogan']);
		$intro = htmlentities($_POST['intro']);
		$presentation = htmlentities($_POST['presentation']);
		$caracteristique = htmlentities($_POST['caracteristique']);
        $option = htmlentities($_POST['option']);
        $titrevideo = htmlentities($_POST['titrevideo']);
		$video = htmlentities($_POST['video']);
		$genre = htmlentities($_POST['genre']);
  
  //création de la requête SQL:
  $sql = "INSERT  INTO osarticle (article, type, prix, photo, slogan, intro, presentation, caracteristique, option, titrevideo, video, genre)
            VALUES ( '$article', '$type', '$prix', '$photo', '$slogan', '$intro', '$presentation', '$caracteristique', '$option', '$titrevideo', '$video', '$genre',) " ;
  
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>


Voila merci encore de votre aide !

Cordialement Majora
0
Petite précision dans le code d'erreur :

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 'option, titrevideo, video, genre) VALUES ( '1', '2', '3', '', '4', '' at line 1


'1', '2', '3', '', '4', '' correspond à Article, type, prix, slogan
0
On avance, on avance Moderno voici le résultat :

J'ai rajouter les guillemets comme tu m'as dit de faire :

Parse error: syntax error, unexpected T_VARIABLE in /homez.145/ezakweb/www/stuff/admin/insertion2.php on line 23


Et ça me donne cette réponse, ensuite j'ai executé la requete depuis ma base de donnée et sa me donne cette réponse :

Erreur
requête SQL:

INSERT INTO osarticle( article, 
TYPE , prix, photo, slogan, intro, presentation, caracteristique, 
OPTION , titrevideo, video, genre ) 
VALUES (
"$article",  "$type",  "$prix",  "$photo",  "$slogan",  "$intro",  "$presentation",  "$caracteristique",  "$option",  "$titrevideo",  "$video", "$genre"
)

MySQL a répondu:

#1064 - 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 'option, titrevideo, video, genre)
            VALUES ( "$article", "$type", "$p' at line 1 


Je te remerci vraiment pour le temps que tu me conssacre c'est vraiment super ! Je te remerci
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
28 juin 2009 à 22:21
Il ne me semble pas que ce soit corrigé.
Tous les requetes sont pas bonnes :
INSERT INTO osarticle( article,
TYPE , prix, photo, slogan, intro, presentation, caracteristique,
OPTION , titrevideo, video, genre )
VALUES (
"$article", "$type", "$prix", "$photo", "$slogan", "$intro", "$presentation", "$caracteristique", "$option", "$titrevideo", "$video", "$genre"
)
Tu arrives à insérer en base de données tel que c'est rédigé ?

Ensuite T_Variable indique je crois que tu fait référence à une variable qui n'existe pas.
Je penses que tu peux me copier intégralement le code de insertion2.php le souci vient de là.
Je repose la condition de validation, tester les requetes en bases. Tant que c'est pas validé, c'est que la syntaxe pose problème.

Pas de problème pour aider. J'ai de l'expérience je partage. Je ne suis pas expert non plus.

a toute
0
Alors je pense avoir à moitié trouvé le probleme, alors pour le nom des champs dans
VALUES
tout est correct, mais je n'arrive toujours pas a insérer de donnée et ça me donne toujours cette réponse :

Parse error: syntax error, unexpected T_VARIABLE in /homez.145/ezakweb/www/stuff/admin/insertion2.php on line 20


J'ai rajouté ceci dans
VALUES
:
$sql = "INSERT  INTO osarticle (article, type, prix, slogan, intro, presentation, caracteristique, option, titrevideo, video, genre) VALUES ("", "$article", "$type", "$prix", "$slogan", "$intro", "$presentation", "$caracteristique", "$option", "$titrevideo", "$video", "$genre")" ;


Et ça me donne cette réponse, je pense que c'est un probléme avec l'ID :

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /homez.145/ezakweb/www/stuff/admin/insertion2.php on line 20

Je t'ai fait une image de ma table (fait pas attention au site, il est pas du tout fini) :
http://www.ezakvideo.com/bddosarticle.jpg

Merci !!!
Cordialement Majora
0
J'ai rajouté les guillemets dans VALUES.

Majora2089
0
Après des jours et des jours de galère totale, tu as trouvé la réponse Moderno, et de plus je sais pourquoi mon 1er code ne marché pas.

Je suis dégouté (pour cette bétise de ma part) et super content (de la solution).

Merci Moderno et bien sur si tu as besoin de quoi que se soit hésite pas à me demande !
0
dexter2089 Messages postés 24 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 31 juillet 2012
29 juin 2009 à 17:08
J'ai une derniére question, alors le script marche nikel, mais en faite le truc c'est que les données que je vais envoyer sur ma base de donnée contient du html :

<h2>Portabilité</h2><br /><br />Le lecteur Blu-ray portable de Panasonic, le DMP-B15 intégrant un écran LCD est le compagnon idéal à emmener en voyage ou en vacances pour profiter pleinement des derniers films sortis ou de vos photos récoltées pendant vos dernières vacances. Avec un design aussi compact, il est facile de le prendre avec soi.<br /><br />


Sur mon site ça s'affiche comme ça (alors que je ne veux pas que les visiteurs voient les balises html) :

<h2>Portabilité</h2><br /><br />Le lecteur Blu-ray portable de Panasonic, le DMP-B15 intégrant un écran LCD est le compagnon idéal à emmener en voyage ou en vacances pour profiter pleinement des derniers films sortis ou de vos photos récoltées pendant vos dernières vacances. Avec un design aussi compact, il est facile de le prendre avec soi.<br /><br />


Dans ma base de donnée comme ça :

<h2>Portabilit&Atilde;&copy;</h2><br /><br />Le lecteur Blu-ray portable de Panasonic, le DMP-B15 int&Atilde;&copy;grant un &Atilde;&copy;cran LCD est le compagnon id&Atilde;&copy;al &Atilde;&nbsp; emmener en voyage ou en vacances pour profiter pleinement des derniers films sortis ou de vos photos r&Atilde;&copy;colt&Atilde;&copy;es pendant vos derni&Atilde;&uml;res vacances. Avec un design aussi compact, il est facile de le prendre avec soi.<br /><br />


Comment puis-je faire ?
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
30 juin 2009 à 22:52
Hello, j'ai du faire le test. Dans une table j'ai rentré le meme texte que toi avec les balises.
Il me sort bien le texte sans les balises : ça veut dire que ceci a été lu et interprété.*
Ci-dessous l'exemple
(
Portabilité


Le lecteur Blu-ray portable de Panasonic, le DMP-B15 intégrant un écran LCD est le compagnon idéal à emmener en voyage ou en vacances pour profiter pleinement des derniers films sortis ou de vos photos récoltées pendant vos dernières vacances. Avec un design aussi compact, il est facile de le prendre avec soi.

)

J'ai fait ça..
$sql = mysql_query("SELECT `part_test` AS Test FROM `test` WHERE `num` = 1");
$nbNuplets = mysql_num_rows($sql);
$nuplet = mysql_fetch_array($sql);
echo "(".$nuplet['Test'].")";

Au plaisir :)
0