"Query est vide" lors de l'incrémentation de ma ba

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 : "Query est vide" lors de l'incrémentation de ma ba

par Cyrano » 05 oct. 2005, 18:22

Les erreurs qui nous bloquent le plus longtemps sont aussi très souvent les plus insignifiantes: l'oubli d'une virgule ici ou un seul "=" quand il en faudrait deux, des choses comme ça :?

par Invité » 05 oct. 2005, 18:02

Ca fait depuis 12h que je joue a ce jeu !!!! La portion de code n'est pourtant pas grande... :cry:

par Cyrano » 05 oct. 2005, 17:59

Le jeu des 7 erreurs ? ;)

par anignerua » 05 oct. 2005, 17:58

Je suis en train d'halluciner...
J'ai refais une page avec un champ et donc un formulaire... Avec une table avec un ID et un champ pour le fameux enregistrement...

bah "QUERY est vide" et dès que je remets mes anciens fichiers ca roule :shock:

par Cyrano » 05 oct. 2005, 17:53

Bon, de toute façon, avec envoi de fichier, cet attribut est obligatoire.

Il faut également initialiser les variables comme je te l'ai expliqué précédemment. Si après ça, ça ne fonctionne toujours pas, alors on envisagera effectivement le désenvoutement, on trouvera bien un marabout talentueux, sinon, il restera le pelerinage à Lourdes ou Saint Jacques de Compostelle (avec le PC bien sur :langue: )

par Invité » 05 oct. 2005, 17:49

Je crois que j'ai trouvé: il manque un attribut à ta balise <form> : ajoute

Code : Tout sélectionner

enctype="multipart/form-data"
Après essai, malheureusement non (*,)
Le formulaire est exactement le meme, sauf que j'y ai rajouté des champs... mais je n'ai pas touché à la page en elle même :(

Actuellement je suis en train d'essayer en changeant le nom des champs, d'en mettre moins...etc... et c'est toujours la même erreur... Mon PC aurait il été marabouté ?!? :lol: ]

par Cyrano » 05 oct. 2005, 17:21

Je crois que j'ai trouvé: il manque un attribut à ta balise <form> : ajoute

Code : Tout sélectionner

enctype="multipart/form-data"

par anignerua » 05 oct. 2005, 16:31

Si le register_globals est à OFF (Comme il devrait l'être et l'est par défaut depuis la version 4.2 de PHP), la transmission des valeurs du formulaire passe par des super-globales : $_POST, $_GET selon la méthode du formulaire. On pourrait parler de $_REQUEST, mais je te déconseille vivement de l'utiliser sauf en débuggage et uniquement en débuggage pour des questions de sécurité de script.
Même si il y a des failles de sécurité dans le script, ca n'a aucune importance, c'est simplement un script utilisé pour facilité la saisie d'information pour une secraitaire dans ma boite, et il tourne sur le serveur de la boite qui n'accede pas au web.

Etant un vrai débutant, je t'avoue ne pas comprendre grand chose à ce que tu m'a raconté précedement :oops:

par Cyrano » 05 oct. 2005, 16:25

Si le register_globals est à OFF (Comme il devrait l'être et l'est par défaut depuis la version 4.2 de PHP), la transmission des valeurs du formulaire passe par des super-globales : $_POST, $_GET selon la méthode du formulaire. On pourrait parler de $_REQUEST, mais je te déconseille vivement de l'utiliser sauf en débuggage et uniquement en débuggage pour des questions de sécurité de script.

par anignerua » 05 oct. 2005, 16:20

Mmm je vois de quoi tu parles, j'ai utilisé ceci pour une page de mise à jour ou je réccupere mes varibales

$sql = "UPDATE maintenance SET contact= '$contact',adresse= '$adresse',cp= '$cp',ville= '$ville',telephone= '$telephone' (.....) WHERE id=".$_GET['id'];

Mais, la page où j'ai un soucis fonctionnait très bien avant que je ne fasse mes modifications de rajout de champs et modifs de table. J'ai passé ma table et mes champs à la loupe, aucune différence, tout est dans le même ordre... je ne comprends vraiment pas.

Et bien entendu, dès que je remets l'ancien code, avec l'ancienne base... no soucy :roll:

par Cyrano » 05 oct. 2005, 16:13

Non,je parle de tes variables PHP : ta liste de variables que tu utilises pour remplir ta requête, elles doivent être initialisées avec des valeurs : donc :
// On initlalise les variables
$nom             = isset($_POST['nom'])         ? $_POST['nom'] : "";
$adresse         = isset($_POST['adresse'])     ? $_POST['adresse'] : "";
//...... etc... jusqu'à
$observations    = isset($_POST['observation']) ? $_POST['observation'] : "";


// On crée la requête
$sql = "INSERT INTO maintenance 
        VALUES (
        ' ',                        '". $nom ."',
        '". $adresse ."',           '". $cp ."',
        '". $ville ."',             '". $contact1 ."',
        '". $fonction1 ."',         '". $telephone1 ."',
        '". $portable1 ."',         '". $fax1 ."',
        '". $email1 ."',            '". $contact2 ."',
        '". $fonction2 ."',         '". $telephone2 ."',
        '". $portable2 ."',         '". $fax2 ."',
        '". $email2 ."',            '". $contact3 ."', 
        '". $fonction3 ."',         '". $telephone3 ."',
        '". $portable3 ."',         '". $fax3 ."',
        '". $email3 ."',            '". $c_mois ."',
        '". $c_annee ."',           '". $visites ."',
        '". $visite1 ."',           '". $visite2 ."',
        '". $reconditionnement ."', '". $astreinte ."',
        '". $ventitest ."',         '". $interv ."',
        '". $dpct ."',              '". $contrat ."',
        '". $garantie ."',          '". $r_mois ."',
        '". $r_annee ."',           '". $sdi1 ."',
        '". $sdi_nom1 ."',          '". $epromsdi1 ."',
        '". $logicielsdi1 ."',      '". $prog_j_sdi1 ."',
        '". $prog_m_sdi1 ."',       '". $prog_a_sdi1 ."',
        '". $technicien_sdi1 ."',   '". $materiel_sdi1 ."',
        '". $sdi2 ."',              '". $sdi_nom2 ."',
        '". $epromsdi2 ."',         '". $logicielsdi2 ."',
        '". $prog_j_sdi2 ."',       '". $prog_m_sdi2 ."',
        '". $prog_a_sdi2 ."',       '". $technicien_sdi2 ."',
        '". $materiel_sdi2 ."',     '". $sdi3 ."',
        '". $sdi_nom3 ."',          '". $epromsdi3 ."',
        '". $logicielsdi3 ."',      '". $prog_j_sdi3 ."',
        '". $prog_m_sdi3 ."',       '". $prog_a_sdi3 ."',
        '". $technicien_sdi3 ."',   '". $cmsi1 ."',
        '". $cmsi_nom1 ."',         '". $epromcmsi1 ."',
        '". $logicielcmsi1 ."',     '". $prog_j_cmsi1 ."',
        '". $prog_m_cmsi1 ."',      '". $prog_a_cmsi1 ."',
        '". $technicien_cmsi1 ."',  '". $cmsi2 ."',
        '". $cmsi_nom2 ."',         '". $epromcmsi2 ."',
        '". $logicielcmsi2 ."',     '". $prog_j_cmsi2 ."',
        '". $prog_m_cmsi2 ."',      '". $prog_a_cmsi2 ."',
        '". $technicien_cmsi2 ."',  '". $cmsi3 ."',
        '". $cmsi_nom3 ."',         '". $epromcmsi3 ."',
        '". $logicielcmsi3 ."',     '". $prog_j_cmsi3 ."',
        '". $prog_m_cmsi3 ."',      '". $prog_a_cmsi3 ."',
        '". $technicien_cmsi3 ."',  '". $materiel ."',
        '". $depannages ."',        '". $observations ."') ";
//on insère le contenu du formulaire
mysql_query($sql);
Et APRÈS seulement tu construis et utilises ta requête.

par Invité » 05 oct. 2005, 16:05

Tes variables, elles sont initialisées où ?
Dans un formulaire en html tout ce qu'il y a de plus bete.

<FORM action="form.php" method="post">
<input name="nom" type="text" id="nom" size="50">
.....
</form>

par Cyrano » 05 oct. 2005, 15:58

Tes variables, elles sont initialisées où ?

"Query est vide" lors de l'incrémentation de ma ba

par anignerua » 05 oct. 2005, 15:45

Bonjour,

Je rencontre un soucis depuis aujourd'hui sur un script qui fonctionnait tres bien jusqu'a lors.

Avant le script fonctionnait, j'ai ajouté des doublons de champs (dès qu'il y a un 2 à la fin) et je ne comprends pas pourquoi désormais il m'affiche "Erreur MySQL ! Query est vide" :(

Je suis vraiment désolé pour la longueur de code, mais je suis sur qu'il y a un truc la dedans qui fait que c'est pas bon...

Donc c'est un formulaire tout bête où les données doivent s'enregistrer dans la base.

voici la table avec certains trucs manquant...

Code : Tout sélectionner

CREATE TABLE maintenance ( id int(11) NOT NULL auto_increment, nom text NOT NULL, adresse varchar(50) NOT NULL default '', cp varchar(50) NOT NULL default '', ville varchar(50) NOT NULL default '', contact1 varchar(50) NOT NULL default '', fonction1 varchar(50) NOT NULL default '', telephone1 varchar(20) NOT NULL default '', portable1 varchar(20) NOT NULL default '', fax1 varchar(20) NOT NULL default '', email1 varchar(30) NOT NULL default '', contact3 varchar(50) NOT NULL default '', fonction3 varchar(50) NOT NULL default '', telephone3 varchar(20) NOT NULL default '', portable3 varchar(20) NOT NULL default '', fax3 varchar(20) NOT NULL default '', email3 varchar(30) NOT NULL default '', c_mois varchar(20) NOT NULL default '', c_annee varchar(20) NOT NULL default '', visites varchar(20) NOT NULL default '', visite1 varchar(20) NOT NULL default '', visite2 varchar(20) NOT NULL default '', reconditionnement varchar(20) NOT NULL default '', astreinte varchar(20) NOT NULL default '', ventitest varchar(20) NOT NULL default '', interv varchar(20) NOT NULL default '', dpct varchar(20) NOT NULL default '', contrat varchar(20) NOT NULL default '', garantie varchar(20) NOT NULL default '', r_mois varchar(20) NOT NULL default '', r_annee varchar(20) NOT NULL default '', sdi1 varchar(30) NOT NULL default '', sdi_nom1 varchar(30) NOT NULL default '', epromsdi1 varchar(30) NOT NULL default '', logicielsdi1 varchar(30) NOT NULL default '', prog_j_sdi1 varchar(30) NOT NULL default '', prog_m_sdi1 varchar(30) NOT NULL default '', prog_a_sdi1 varchar(30) NOT NULL default '', technicien_sdi1 varchar(30) NOT NULL default '', materiel_sdi1 text NOT NULL, sdi2 varchar(30) NOT NULL default '', sdi_nom2 varchar(30) NOT NULL default '', epromsdi2 varchar(30) NOT NULL default '', logicielsdi2 varchar(30) NOT NULL default '', prog_j_sdi2 varchar(30) NOT NULL default '', prog_m_sdi2 varchar(30) NOT NULL default '', prog_a_sdi2 varchar(30) NOT NULL default '', technicien_sdi2 varchar(30) NOT NULL default '', materiel_sdi2 text NOT NULL, cmsi1 varchar(30) NOT NULL default '', cmsi_nom1 varchar(30) NOT NULL default '', epromcmsi1 varchar(30) NOT NULL default '', logicielcmsi1 varchar(30) NOT NULL default '', prog_j_cmsi1 varchar(30) NOT NULL default '', prog_m_cmsi1 varchar(30) NOT NULL default '', prog_a_cmsi1 varchar(30) NOT NULL default '', technicien_cmsi1 varchar(30) NOT NULL default '', materiel_cmsi1 text NOT NULL, cmsi2 varchar(30) NOT NULL default '', cmsi_nom2 varchar(30) NOT NULL default '', epromcmsi2 varchar(30) NOT NULL default '', logicielcmsi2 varchar(30) NOT NULL default '', prog_j_cmsi2 varchar(30) NOT NULL default '', prog_m_cmsi2 varchar(30) NOT NULL default '', prog_a_cmsi2 varchar(30) NOT NULL default '', technicien_cmsi2 varchar(30) NOT NULL default '', materiel_cmsi2 text NOT NULL, materiel_cmsi3 text NOT NULL, materiel text NOT NULL, depannages text NOT NULL, observations text NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM;
Et voici le script dans mon ficher form.php (envoyer par le formulaire) pour m'enregistrer ca dans la base.

Code : Tout sélectionner

<? // ENREGISTREMENT //on se connecte à la base de donnée $db = mysql_connect('localhost','root','') or die ("erreur de connexion"); //on selectionne vôtre base mysql_select_db('DPS',$db) or die ("erreur de connexion base"); //on insère le contenu du formulaire mysql_query("INSERT INTO maintenance VALUES ('','$nom','$adresse','$cp','$ville','$contact1','$fonction1','$telephone1','$portable1','$fax1','$email1', '$contact2','$fonction2','$telephone2','$portable2','$fax2','$email2', '$contact3','$fonction3','$telephone3','$portable3','$fax3','$email3', '$c_mois','$c_annee','$visites','$visite1','$visite2','$reconditionnement', '$astreinte','$ventitest','$interv','$dpct','$contrat','$garantie','$r_mois', '$r_annee','$sdi1','$sdi_nom1','$epromsdi1','$logicielsdi1','$prog_j_sdi1', '$prog_m_sdi1','$prog_a_sdi1','$technicien_sdi1','$materiel_sdi1','$sdi2', '$sdi_nom2','$epromsdi2','$logicielsdi2','$prog_j_sdi2','$prog_m_sdi2', '$prog_a_sdi2','$technicien_sdi2','$materiel_sdi2','$sdi3','$sdi_nom3', '$epromsdi3','$logicielsdi3','$prog_j_sdi3','$prog_m_sdi3','$prog_a_sdi3', '$technicien_sdi3','$cmsi1','$cmsi_nom1','$epromcmsi1','$logicielcmsi1', '$prog_j_cmsi1','$prog_m_cmsi1','$prog_a_cmsi1','$technicien_cmsi1', '$cmsi2','$cmsi_nom2','$epromcmsi2','$logicielcmsi2','$prog_j_cmsi2', '$prog_m_cmsi2','$prog_a_cmsi2','$technicien_cmsi2','$cmsi3', '$cmsi_nom3','$epromcmsi3','$logicielcmsi3','$prog_j_cmsi3', '$prog_m_cmsi3','$prog_a_cmsi3','$technicien_cmsi3','$materiel', '$depannages','$observations') "); mysql_query($sql) or die('ERREUR MySQL !'.$sql.'<br>'.mysql_error()); ?>

Merci a ceux qui pourront me sauver :)[/php]