Garder mes get aprés validation d'un formulaire

Résolu/Fermé
Wmalain - Modifié le 25 sept. 2020 à 13:38
 Wmalain - 27 sept. 2020 à 12:22
Bonjour,

je vais essayer d’Être clair mais ce n'est pas gagné d'avance...
mon petit problème. je suis censé faire un formulaire pour pouvoir modifier des donnée dans ma bdd.

pour info les données sont répartis dans 4 tables.

lorsque j'arrive sur la page du formulaire j'ai récupéré (avec des GET) les id dont j'avais besoin!
mon problème étant que lorsque je cliques sur le bouton de mon formulaire les gets disparaissent de mon url. et je me retrouve d'un coup d'un seul avec des Undefined index.
la logique php est sur la même page que le formulaire.

mon code est dégueulasse car j'ai fais plusieurs test pour regler le probleme donc mes excuses a l'avance. je n'ai aussi que 2 semaine de php derriere moi du coup des chose qui peuvent vous sembler logique ne le sont pas forcement pour moi

mon url quand j'arrive sur la page du formulaire
http://localhost/mycave/modify_article.php?id=22&produitid=19&descriptionid=19&localid=19
mon url des que je cilques sur le bouton modifier
http://localhost/mycave/modify_article.php

je vous mets aussi le résultat du var_dump
avant de cliquer string(2) "19"
aprés avoir cliqué NULL

et les messages d'erreur
Notice: Undefined index: id in C:\xampp\htdocs\mycave\modify_article.php on line 8

Notice: Undefined index: produitid in C:\xampp\htdocs\mycave\modify_article.php on line 9

Notice: Undefined index: descriptionid in C:\xampp\htdocs\mycave\modify_article.php on line 10

Notice: Undefined index: localid in C:\xampp\htdocs\mycave\modify_article.php on line 11

la logique sql en elle même marche vue que si je vire le where de ma condition sql alors toute ma table est modifié, je n'arrive juste pas a cibler la ligne de l'article en particulier.


require('asset/inc/connect.php');
require('asset/inc/function.php');
require('asset/head.php');
require('asset/header.php');


$sql = $db->query("SELECT *, produit.id AS produit_id, description.id AS description_id, local.id AS local_id, ids.id AS ids_id FROM ids LEFT JOIN produit ON ids.idproduit = produit.id LEFT JOIN description ON ids.iddescription = description.id LEFT JOIN local ON ids.idlocal = local.id
");

$idids = $_GET['id'];
$idproduit = $_GET['produitid'];
$iddescription = $_GET['descriptionid'];
$idlocal = $_GET['localid'];
var_dump($idlocal);

$sql->setFetchMode(PDO::FETCH_ASSOC);
if(isset($_POST['btnmodify'])){
$id1 = $idids;
$id2 = $idproduit ;
$id3 = $iddescription ;
$id4 = $idlocal;


// $id = ($_POST['id']);
$modifytitre = htmlspecialchars($_POST['modifytitre']);
$modifycepage = htmlspecialchars($_POST['modifycepage']);
$modifyannee = htmlspecialchars($_POST['modifyannee']);
$modifypays = htmlspecialchars($_POST['modifypays']);
$modifyregion = htmlspecialchars($_POST['modifyregion']);
$modifydescription = htmlspecialchars($_POST['modifydescription']);
$modifyimg = ($_FILES['modifyimg']);

if($modifyimg['size'] <= 1000000){

$valid_ext = array('jpg','jpeg','gif','png');
$check_ext = strtolower(substr(strrchr($modifyimg['name'], '.'),1));

if(in_array($check_ext, $valid_ext)){

$imgname = uniqid() . '_' . $modifyimg['name'];
$upload_dir = "./asset/uploads/";
$upload_name = $upload_dir . $imgname;
$move_result = move_uploaded_file($modifyimg['tmp_name'], $upload_name);


if($move_result){

$sth1 = $db->prepare("UPDATE description SET annees=:modifyannee,description=:modifydescription, photo=:modifyimg WHERE id=$id2");
$sth1->bindValue(':modifyimg',$imgname);
$sth1->bindValue(':modifydescription',$modifydescription);
$sth1->bindValue(':modifyannee',$modifyannee);

$sth1->execute();



$sth2 = $db->prepare("UPDATE local SET pays=:pays,region=:region WHERE id=$id3");
$sth2->bindValue(':pays',$modifypays);
$sth2->bindValue(':region',$modifyregion);

$sth2->execute();

$sth3 = $db->prepare("UPDATE produit SET nom=:modifytitre,cepage=:modifycepage WHERE id=$id1");
$sth3->bindValue(':modifytitre',$modifytitre);
$sth3->bindValue(':modifycepage',$modifycepage);

$sth3->execute();

echo "coucou";


// header("Location:liste_user.php");

}
}
}
}

?>
<h1 class="titremodifyarticle">Modifier un article</h1>
<form action="modify_article.php" method="POST" id="formmodifyproduit" class="formmodifyproduit" enctype="multipart/form-data">

<div>
<input type="text" id="modifytitre" name="modifytitre" placeholder="Titre" class="modifytitre">
</div>
<div>
<input type="text" id="modifycepage" name="modifycepage" placeholder="cepage" class="modifycepage">
<input type="text" id="modifyannee" name="modifyannee" placeholder="année" class="modifyannee">
</div>
<div>
<input type="text" id="modifypays" name="modifypays" placeholder="Pays" class="modifypays">
<input type="text" id="modifyregion" name="modifyregion" placeholder="région" class="modifyregion">
</div>
<div>
<textarea name="modifydescription" id="modifydescription" rows="8" cols="50">
Ajoutez la description du produit
</textarea>
</div>
<div class="form-group">
<input type="file" name="modifyimg" id="modifyimg" accept=".png,.jpeg,.jpg,.gif">
</div>
<input type="hidden" name ="idids" value="<?php echo $idids; ?> "/>
<input type="hidden" name ="idproduit" value="<?php echo $idproduit; ?> "/>
<input type="hidden" name ="iddescription" value="<?php echo $idlocal; ?> "/>


<input type="hidden" name ="produit_id" value="<?php ?> ">
<input type="submit" name="btnmodify" class="btnmodify" value="modifier">

<input type="submit" name="retour" class="btnretour3" value="Retour">
</form>

<div class="imggrapes1"><img src="asset/img/grapes1.jpg" alt=""></div>


Merci par avance pour le coup de main ^^!

Configuration: Windows / Chrome 85.0.4183.121

1 réponse

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
25 sept. 2020 à 16:49
Bonjour,
Tu places le contenu de tes get dans des input hidden dans ton form.
Comme ça, tu les auras en POST lorsque tu cliqueras sur le bouton
0
j'ai testé mais sans grande réussite... il faut que je fasse plusieur input hidden? ou je mets tous les gets dans un seul (si c'est possible?)

merci pour la réponse ^^!
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649 > Wmalain
25 sept. 2020 à 17:39
Un input par variable...
0
Wmalain > jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024
25 sept. 2020 à 17:57
ok je testerais ca plus tard! merci ^^!
0
Wmalain > Wmalain
27 sept. 2020 à 11:07
ca marche mais je tombe sur un autre soucis...

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 in C:\xampp\htdocs\mycave\modify_article.php:47 Stack trace: #0 C:\xampp\htdocs\mycave\modify_article.php(47): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\mycave\modify_article.php on line 47

ce qui correspond a cette partie la

$sth1 = $db->prepare("UPDATE description SET annees=:modifyannee,description=:modifydescription,photo=:modifyimg WHERE id=$iddescription");
$sth1->bindValue(':modifyimg',$imgname);
$sth1->bindValue(':modifydescription',$modifydescription);
$sth1->bindValue(':modifyannee',$modifyannee);

$sth1->execute();

je ne vois pas ou est l'erreur...
0
Wmalain > Wmalain
27 sept. 2020 à 12:22
ok le probleme etait bien sur les get. du coup merci a toi tu m'a débloqué^^
0