Plusieurs fieldset - formulaire

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 00:12

Bonsoir,

J'ai un petit souci avec l'un de mes formulaires (j'ai mis le code source ci-dessous).
Ma requête SQL ne fonctionne pas avec le code tel quel. Pourtant, quand je retire les 3 <fieldset></fieldset>, la requête fonctionne et arrive bien dans ma BDD !

Je suis obligé de garder ces <fieldset>, sinon, ma page ne ressemble plus à rien.. (voir screen)

En vous remerciant pour votre aide,
à bientôt ! :)
<?php
date_default_timezone_set('Europe/Paris');
$date = ''.date('d/m/Y').' à '.date('H:i:s').'';
		if($_GET[action]=="enregistrer") {
			$a = addslashes($_POST["titre"]);
			$b = addslashes($_POST["contenu"]);
			$image = addslashes($_POST["image"]);
			$c = addslashes($_POST["auteur"]);
			$d = addslashes($_POST["description"]);
			$e = addslashes($_POST["theme"]);
			if(!empty($a) AND !empty($b)) {
			$req = $bdd->prepare('INSERT INTO `articles` (titre, theme, description, date, image, auteur, contenu) VALUES ("'.$a.'", "'.$e.'", "'.$d.'", "'.$date.'", "'.$image.'", "'.$c.'", "'.$b.'")');
			$req->closeCursor();
			$req->execute();
			header("Location: ?m=1");
		} else {
			header("Location: ?m=2");
		} } if($_GET[m]=="1") {
			echo('<center><div class="alert alert-success" style="width:750px;"><center>La news a été ajoutée !</center></div></center>');
		} if($_GET[m]=="2") {
			echo('<center><div class="alert alert-error" style="width:750px;"><center><b>ATTENTION !</b> Veuillez remplir tous les champs !</center></div></center>');
		}
		?>	
		<form id="wizard_with_validation" action="?action=enregistrer" method="POST">
                                                            
   <h3>Présentation de l'article</h3>
                                <fieldset>
                                    <div class="form-group form-float">
                                        <div class="form-line">
                                            <input type="text" class="form-control" name="titre" required>
                                            <label class="form-label">Titre de l'article *</label>
                                        </div>
                                    </div>
                                    <div class="form-group form-float">
                                        <div class="form-line">
                                            <input type="text" class="form-control" name="theme" id="password" required>
                                            <label class="form-label">Thème de l'article *</label>
                                        </div>
                                    </div>
                                    <div class="form-group form-float">
                                        <div class="form-line">
                                            <input type="text" class="form-control" name="description" required>
                                            <label class="form-label">Description de l'article * (1-2 phrase)</label>
                                        </div>
                                    </div>
                                </fieldset>

                                <h3>Illustration de l'article</h3>
                                <fieldset>
                                    <div class="form-group form-float">
                                        <div class="form-line">
                                            <input type="text" name="image" class="form-control" required>
                                            <label class="form-label">Image de l'article (mettez un lien du web ou de votre médiathèque) *</label>
                                        </div>
                                    </div>
                                    <div class="form-group form-float">
                                        <div class="form-line">
                                            <input type="text" name="auteur" class="form-control" value="<?php echo($row["nom"]); ?>" required>
                                            <label class="form-label">Qui est l'auteur de cet article ? *</label>
                                        </div>
                                    </div>
                                                                   </fieldset>

                                <h3>Texte de l'article</h3>
                                <fieldset>
								Contenu de votre article : 
<textarea name="contenu" class="ckeditor" id="editor"></textarea>
<br>
<label for="acceptTerms-2">AVANT DE VALIDER : Copiez votre article (sélectionnez-le, clic-droit, copier) et collez-le sur un document type bloc-note ou Word.<br>
Nous vous conseillons cela car selon votre temps d'activité sur le panel, vous pouvez être déconnecté et votre article sera perdu.</label>
                                <center><button class="btn btn-success" onClick="javascript:valide();" type="submit">POSTER VOTRE ARTICLE !</button></center>
								
								</fieldset>                                

                            </form>
ILLUSTRATION :

Image

Eléphant du PHP | 288 Messages

11 oct. 2018, 12:56

Salut,

Curieux, si tu enlève un fieldset seulement une partie des données est envoyé? Et si tu utilises des div? Que dit la console javascript?

Avatar du membre
Eléphanteau du PHP | 25 Messages

11 oct. 2018, 13:48

Fonctionne pas, ça veut dire que ça ne poste rien ou juste une partie des données ?
En l'état, j'ai testé ton code (sans la CSS, et donc sans les onglets), tout passe, chez moi...

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 14:18

Salut,

Curieux, si tu enlève un fieldset seulement une partie des données est envoyé? Et si tu utilises des div? Que dit la console javascript?
Rien ne s'envoie, je ne comprends pas...
A propos...
C'est étonnant... je ne sais pas quoi faire..

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 14:29

Fonctionne pas, ça veut dire que ça ne poste rien ou juste une partie des données ?
En l'état, j'ai testé ton code (sans la CSS, et donc sans les onglets), tout passe, chez moi...
C'est vraiment juste les <fieldset> qui bloquent l'envoi, c'est incompréhensible ! Rien ne se poste..
Je ne pense pas qu'il y ait un rapport avec le css quand même

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 14:29

Fonctionne pas, ça veut dire que ça ne poste rien ou juste une partie des données ?
En l'état, j'ai testé ton code (sans la CSS, et donc sans les onglets), tout passe, chez moi...
C'est vraiment juste les <fieldset> qui bloquent l'envoi, c'est incompréhensible ! Rien ne se poste..
Je ne pense pas qu'il y ait un rapport avec le css quand même

Avatar du membre
Eléphanteau du PHP | 25 Messages

11 oct. 2018, 15:02

Ca paraît techniquement improbable qu'un fieldset ait le pouvoir de tout bloquer. C'est peut-être un truc concomitant, mais c'est pas ça qui fait que ça passe ou ça casse, je pense qu'il faut chercher plus loin.

Concrètement, ce que j'observe,
- c'est que je ne vois pas de connexion à ta base de données. Il y a un insert mais ni connect ou new PDO au préalable (pas même un include() qui me laisserait penser que tu as effectué la connexion à ta DB ?)

    $req = $bdd->prepare('INSERT INTO `articles` (titre, theme, description, date, image, auteur, contenu) VALUES ("'.$a.'", "'.$e.'", "'.$d.'", "'.$date.'", "'.$image.'", "'.$c.'", "'.$b.'")');
pourquoi tant de guillemets ?

Pourquoi tu mets un closeCursor() et pourquoi AVANT l'execute() ?

Attention à la sécurité, pense aux placeholders !
https://phpdelusions.net/pdo_examples/insert

Parenthèse : la balise <center> est obsolète, il faut normalement mettre un div avec class et CSS qui centre (text-align)
https://developer.mozilla.org/fr/docs/W ... ent/center

Eléphant du PHP | 288 Messages

11 oct. 2018, 16:12

Entre parenthèse, ton form est en POST et tu test en GET ton action?

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 16:46

Ca paraît techniquement improbable qu'un fieldset ait le pouvoir de tout bloquer. C'est peut-être un truc concomitant, mais c'est pas ça qui fait que ça passe ou ça casse, je pense qu'il faut chercher plus loin.

Concrètement, ce que j'observe,
- c'est que je ne vois pas de connexion à ta base de données. Il y a un insert mais ni connect ou new PDO au préalable (pas même un include() qui me laisserait penser que tu as effectué la connexion à ta DB ?)

    $req = $bdd->prepare('INSERT INTO `articles` (titre, theme, description, date, image, auteur, contenu) VALUES ("'.$a.'", "'.$e.'", "'.$d.'", "'.$date.'", "'.$image.'", "'.$c.'", "'.$b.'")');
pourquoi tant de guillemets ?

Pourquoi tu mets un closeCursor() et pourquoi AVANT l'execute() ?

Attention à la sécurité, pense aux placeholders !
https://phpdelusions.net/pdo_examples/insert

Parenthèse : la balise <center> est obsolète, il faut normalement mettre un div avec class et CSS qui centre (text-align)
https://developer.mozilla.org/fr/docs/W ... ent/center
Je vais me référer un peu à vos liens, je n'ai pas beaucoup d'expérience dans le développement et ça faisait un moment que je n'avais pas mis les mains dans le cambouis !

Mon script est bien relié à ma BDD plus haut dans la page.
Comme je l'ai dis, c'est vraiment la mise en forme qui empêche l'envoie à ma BDD. Quand je retire ce système d'étapes, ça fonctionne...

Gload
Invité n'ayant pas de compte PHPfrance

11 oct. 2018, 16:50

Entre parenthèse, ton form est en POST et tu test en GET ton action?
C'est à dire ??

Avatar du membre
Eléphanteau du PHP | 25 Messages

11 oct. 2018, 17:12

Entre parenthèse, ton form est en POST et tu test en GET ton action?
C'est à dire ??
<form id="wizard_with_validation" action= "?action=enregistrer" method="POST">

GET
POST