[RESOLU] aide post

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 : [RESOLU] aide post

Re: aide post

par two3d » 16 mai 2022, 23:34

En haut de la page à gauche normalement, en tout cas, sur la page. Toi seul peux voir le bouton désolé de pas pouvoir plus t'indiquer son emplacement mais il se voit bien quand même ;)

Re: aide post

par mije69 » 16 mai 2022, 23:18

je suis nouveau d=sur le forum comment mettre en résolu?
" je m'en suis finalement sorti avec un peu de recherche aussi "
Haha toi tu doit être un rageux, ou un dieu vue toute tes réponses critique en vers une personne qui début en autodidacte.
Ou peut être je me suis tromper de forum pour avoir de l aide #-o

Re: aide post

par or 1 » 16 mai 2022, 21:52

je suis nouveau d=sur le forum comment mettre en résolu?
" je m'en suis finalement sorti avec un peu de recherche aussi "

Re: aide post

par mije69 » 16 mai 2022, 21:40

après ce sera en localhost donc "injections SQL" ...
aprés je vais tester en enlevant le foreach..
je suis nouveau d=sur le forum comment mettre en résolu?

Re: aide post

par two3d » 16 mai 2022, 21:04

C'est à toi de mettre en Résolu ;)

Petite remarque, la requête est sujette à l'injection SQL (faille SQL). N'importe qui pourrait modifier l'attribut id de l'élément HTML qui a la classe .print

Voir "injections SQL"

Je me répète, ton foreach sert à rien, "$output = $result" devrait faire l'affaire.

Re: aide post

par mije69 » 16 mai 2022, 20:10

merci a vous deux.
je m'en suis finalement sorti avec un peu de recherche aussi :)
j'ai transformer mon Button comme ceci:

Code : Tout sélectionner

$(document).on('click', '.print', function() { var post_id = $(this).attr("id"); window.open ("../pdf/examples/BL-Firmin.php?post_id="+ post_id, "_blank"); });
et la page PDF comme ceci:

Code : Tout sélectionner

function get_Post_By_Id($idPost) { $statement = $bdd->prepare("SELECT * FROM post WHERE idPost = '" . $idPost . "' LIMIT 1"); $statement->execute(); $result = $statement->fetchAll(); return $result; } if (isset($_GET["post_id"])) { $idPost = $_GET["post_id"]; $result = get_Post_By_Id($idPost); $output = array(); if (count($result) > 0) { foreach ($result as $row) { $output = $row; } } } $newdate=date('d-m-Y', strtotime($output['enlevement']))
je n'arrivais pas a récupérer mes variables, j avais mis $_POST au lieu de $_GET, mais sur hmtl2pdf le debug est plus difficile #-o .
merci de m avoir guidé dans le droit chemin.
vous pouvez mettre le post en résolu

Re: aide post

par two3d » 15 mai 2022, 23:36

Je rejoins or1, l'utilisation du JS est inutile pour aller vers un lien, la balise HTML "a" fera très bien l'affaire.

Si tu souhaite continuer en JS, rajoute l'id du "post_id" en le concaténant à l'URL qui se trouve dans window.open.

https://developer.mozilla.org/fr/docs/W ... /Element/a
https://stackoverflow.com/questions/258 ... javascript

Petite info supplémentaire pour ton code PHP :
if (count($result) > 0) {
foreach ($result as $row) {
$output["ndossier"] = $row["ndossier"];
$output["titre"] = $row["titre"];
$output["transporteur"] = $row["transporteur"];
$output["tirage"] = $row["tirage"];
$output["enlevement"] = $row["enlevement"];
$output["fabricant"] = $row["fabricant"];
$output["grammage"] = $row["grammage"];
}
}
echo json_encode($output);
};
> le foreach est inutile vue que tu fais un LIMIT 1
> $output = $row; suffira pour assigner toutes les variables en une seule fois
> }; = } (en PHP, la virgule ne s'utilise pas après une accolade)

Re: aide post

par mije69 » 15 mai 2022, 15:18

oui en js, merci pour tes remarques.

Re: aide post

par two3d » 15 mai 2022, 11:07

java de broadway ? c'est js ou javascript, java n'est pas le même langage ;)

Au passage, la nomenclature PHP veut qu'on nomme les méthodes (les fonctions des classes) en camel case, sans undescore ;) autant si prendre dès le début pour bien faire :)

ma_Fonction = maFonction

Re: aide post

par mije69 » 15 mai 2022, 10:25

merci pour ta patience :D
alors j ai donc changer mon bouton comme ceci:

Code : Tout sélectionner

$(document).on('click', '.print', function() { var post_id = $(this).attr("id"); window.open('../pdf/examples/example07.php'); });
il m'ouvre bien une nouvelle page avec mon bl.
mais comment je peut maintenant envoyer mon $id_post en java? (je débute)

Re: aide post

par or 1 » 15 mai 2022, 09:22

un appel ajax n'est pas la bonne solution. il faut ouvrir une nouvelle url comme c'est fait lorsque l'on met un lien. il est possible de conserver votre bouton et se compliquer la vie avec du javascript, mais en appelant une url au lieu de cet appel ajax.

dans le code qui génère le pdf, passer par du json est inutile, les données sont dans le tableau. comme il y a un limit 1 (qui est superflu si l'id est bien unique), un simple fetch est une meilleure idée qu'un fetchall. ainsi, l'on peut faire :

$post = get_Post_By_Id($idPost);
echo $post['titre'];

le code de connexion à la bdd ne devrait pas être dans la fonction get_Post_By_Id.
si l'on fait :
echo get_Post_By_Id(1)['titre'];
echo get_Post_By_Id(2)['titre'];
cela va exécuter 2 fois la connexion à la base de données, dont une fois inutilement. s'il y a ce code dans toutes les fonctions analogues, le jour où il y a quelque chose à modifier, il n'y a pas à faire le changement à un seul endroit.

Re: aide post

par mije69 » 15 mai 2022, 08:49

alors j 'ai essayé ceci dans mon tableau:

Code : Tout sélectionner

// test pour impression $(document).on('click', '.print', function() { var post_id = $(this).attr("id"); $.ajax({ url: "../pdf/examples/example07.php", method: "POST", data: { post_id: post_id }, dataType: "json", }) });
et ce code a la base de ma page PDF:

Code : Tout sélectionner

<?php function get_Post_By_Id($idPost) { $bdd=new PDO ('mysql:host=localhost;dbname=firmin;charset=utf8','root',''); $statement = $bdd->prepare("SELECT * FROM post WHERE idPost = '" . $idPost . "' LIMIT 1"); $statement->execute(); $result = $statement->fetchAll(); return $result; } if (isset($_POST["post_id"])) { $idPost = $_POST["post_id"]; $result = get_Post_By_Id($idPost); $output = array(); if (count($result) > 0) { foreach ($result as $row) { $output["ndossier"] = $row["ndossier"]; $output["titre"] = $row["titre"]; $output["transporteur"] = $row["transporteur"]; $output["tirage"] = $row["tirage"]; $output["enlevement"] = $row["enlevement"]; $output["fabricant"] = $row["fabricant"]; $output["grammage"] = $row["grammage"]; } } echo json_encode($output); }; ?>
alors au click j'ai bien un post_id, mais il m'ouvre pas la page du pdf.
j'ai juste un post avec une réponse incompréhensible.

Re: aide post

par mije69 » 14 mai 2022, 19:25

oui j'ai un button comme ceci

Code : Tout sélectionner

$btn_print = '<button id="' . $p['idPost'] . '" name="print" class="btn btn-link btn-success btn-just-icon print"><i class="material-icons" class="print" >print</i></button>';
je n 'avais pas mis le href.
et avec le

Code : Tout sélectionner

$result = get_Post_By_Id($idPost);
je vais récupéré tout mes variables de la ligne de l'id directement dans mon bl.php?

Re: aide post

par or 1 » 14 mai 2022, 15:10

le lien du 3ème bouton est quelque chose comme
<a href="bl.php?id=$id">bl</a>

dans le fichier bl.php, les données sont récupérées avec :
$result = get_Post_By_Id($id);
puis le pdf est généré.

Re: aide post

par mije69 » 14 mai 2022, 08:45

alors quand je dis renvoyer a une autre page, je me suis peut être pas bien expliqué.
pour l'instant j'ai mon tableau comme ceci:
ibb .co/phXc2Rb ( je ne peut pas poster l UR complet le forum ne me le permet pas )
les deux premier buttons sont pour l'Edition et la suppression, et le 3eme je cherche a créé un bl avec avec les variables en prenant l'id de la ligne.
mon idée était au click récupérer les variables vers un fichier php (celui ci écrit plus haut) pour les envoyer vers mon fichier bl.php.
après ce n'est peut être pas la bonne façon, mais je ne vois pas comment faire pour que au clic le PDF sélection dans la bdd avec l id de la ligne clické.