si la réponse est "query was empty", je dois faire quoi???

heu mettre quelque chose dans le mysql_query
quand au reste
CREATE TABLE IF NOT EXISTS `CONTENU` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_categorie` int(11) NOT NULL, <=== NON tu l'a par la sous catégorie ou alors une seule table avec une auto jointure ;)
`id_sous_categorie` int(11) NOT NULL,
`titre` text collate latin1_general_ci NOT NULL,
`description` text collate latin1_general_ci NOT NULL,
`texte` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
-- exemple
CREATE TABLE IF NOT EXISTS `CATEGORIES` (
`id` int(11) NOT NULL AUTO_INCREMENT,
idparent int(11) not null default 0,
`nom_categorie` text collate latin1_general_ci NOT NULL,
`description_categorie` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
et cherche le parent lorsqu'il est différent de zéro à l'aide d'une sous requete, bon la c'est juste parent enfant pour un arbre complet avec plusieurs branche (genre parent, enfant, petit enfant, arrière petit enfant arrière arrière petit enfant etc etc etc

) la c'est plus compliqué et nécessite une véritable étude (que je sais pas trop faire la

).
dans ton code la y a deux doctype html etc enfait ça
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<link href="../style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<title>Ajouter une sous-catégorie</title>
</head>
<body>
<div class="site">
<div class="header">
</div>
<?php include('menu.php');?>
<div class="corp">
<div class="paragraphe">
<h1>Ajouter une sous-catégorie</h1>
je suppose que c'est un soucis de recopie ? sinon a virer

quand au reste cela ne sert a rien de mettre une variable entre " pour l'utiliser (mis a part ralentir l’exécution du script)
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base")
devient donc
mysql_connect($nom_du_serveur,$nom_utilisateur,$passe);
mysql_select_db($nom_de_la_base);
pour éviter le query was empty,
- mettre la requete dans une variable pour pouvoir l'afficher correctement dans un beau message d'erreur et en plus y mettre le N° de ligne

exemple
<?php
$sql = 'bla bla sql';
$r = mysql_query($sql);
if ($r === false) {
echo '<p class="erreur">Erreur SQL à la ligne : ' .(__LINE__-4).'<br />Avec la requête : '.$sql.'</p>';
}
else {
// traitement de la requête
}
?>
ne met pas if (! $result) car cela peux te jouer des tours, $result n'est pas un booléen c'est donc comme si tu comparé des patates et des carottes (ça vient du jardin mais c'est pas du tout pareil ^^).
pourquoi ça pose soucis ? parce que le cast automatique de la variable (changement de type, de char à int par exemple ou dans le cas présent de tous ce que l'on veux à bool) peux conduire à des choses que tu souhaite pas.
le plus intérréssant dans notre cas c'est qu'un 0 en tant qu'entier ou en tant que chaine sera évalué à
FALSE plus clairement l'égalité suivante est
vrai 1 == '1' == true tout comme 0 == '0' == false.
donc si $result == '0' c'est la loose ton test sera valider alors que ce n'est pas ce que tu souhaite.
donc test ce type chose avec l'opérateur de comparaison avec type (===). et de manière générale une comparaison il y a deux partie c'est beaucoup plus claire même si ce que tu fait implique la comparaison avec true/ false
donc if ( $result === false).
de même évite le die c'est une façon crade de terminer les script, tu peux très afficher un beau message d'erreur au milieux d'une belle de ton site sans tout "casser"

.
cela se gère avec le else.
indique nous le message d'erreur pour que l'on y vois plus claire
ps : utilise la balise
[/b] plutot que [code] (la colorisation de la syntaxe c'est royal :) )
@+
[quote="Morgane"] si la réponse est "query was empty", je dois faire quoi??? :oops:[/quote]
heu mettre quelque chose dans le mysql_query :mrgreen:
quand au reste
[sql]
CREATE TABLE IF NOT EXISTS `CONTENU` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_categorie` int(11) NOT NULL, <=== NON tu l'a par la sous catégorie ou alors une seule table avec une auto jointure ;)
`id_sous_categorie` int(11) NOT NULL,
`titre` text collate latin1_general_ci NOT NULL,
`description` text collate latin1_general_ci NOT NULL,
`texte` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
-- exemple
CREATE TABLE IF NOT EXISTS `CATEGORIES` (
`id` int(11) NOT NULL AUTO_INCREMENT,
idparent int(11) not null default 0,
`nom_categorie` text collate latin1_general_ci NOT NULL,
`description_categorie` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
[/sql]
et cherche le parent lorsqu'il est différent de zéro à l'aide d'une sous requete, bon la c'est juste parent enfant pour un arbre complet avec plusieurs branche (genre parent, enfant, petit enfant, arrière petit enfant arrière arrière petit enfant etc etc etc :) ) la c'est plus compliqué et nécessite une véritable étude (que je sais pas trop faire la :mrgreen: ).
dans ton code la y a deux doctype html etc enfait ça
[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<link href="../style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<title>Ajouter une sous-catégorie</title>
</head>
<body>
<div class="site">
<div class="header">
</div>
<?php include('menu.php');?>
<div class="corp">
<div class="paragraphe">
<h1>Ajouter une sous-catégorie</h1>[/html]
je suppose que c'est un soucis de recopie ? sinon a virer ;)
quand au reste cela ne sert a rien de mettre une variable entre " pour l'utiliser (mis a part ralentir l’exécution du script)
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base")
devient donc
mysql_connect($nom_du_serveur,$nom_utilisateur,$passe);
mysql_select_db($nom_de_la_base);
pour éviter le query was empty,
- mettre la requete dans une variable pour pouvoir l'afficher correctement dans un beau message d'erreur et en plus y mettre le N° de ligne :)
exemple
[php]
<?php
$sql = 'bla bla sql';
$r = mysql_query($sql);
if ($r === false) {
echo '<p class="erreur">Erreur SQL à la ligne : ' .(__LINE__-4).'<br />Avec la requête : '.$sql.'</p>';
}
else {
// traitement de la requête
}
?>[/php]
ne met pas if (! $result) car cela peux te jouer des tours, $result n'est pas un booléen c'est donc comme si tu comparé des patates et des carottes (ça vient du jardin mais c'est pas du tout pareil ^^).
pourquoi ça pose soucis ? parce que le cast automatique de la variable (changement de type, de char à int par exemple ou dans le cas présent de tous ce que l'on veux à bool) peux conduire à des choses que tu souhaite pas.
le plus intérréssant dans notre cas c'est qu'un 0 en tant qu'entier ou en tant que chaine sera évalué à [b]FALSE[/b] plus clairement l'égalité suivante est [b]vrai[/b] 1 == '1' == true tout comme 0 == '0' == false.
donc si $result == '0' c'est la loose ton test sera valider alors que ce n'est pas ce que tu souhaite.
donc test ce type chose avec l'opérateur de comparaison avec type (===). et de manière générale une comparaison il y a deux partie c'est beaucoup plus claire même si ce que tu fait implique la comparaison avec true/ false
donc if ( $result === false).
de même évite le die c'est une façon crade de terminer les script, tu peux très afficher un beau message d'erreur au milieux d'une belle de ton site sans tout "casser" ;).
cela se gère avec le else.
indique nous le message d'erreur pour que l'on y vois plus claire :)
ps : utilise la balise [b][php][/b] plutot que [code] (la colorisation de la syntaxe c'est royal :) )
@+