Données non insérées dans la BDD

Fermé
Gg - 24 juin 2021 à 10:37
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 - 24 juin 2021 à 18:33
Bonjour à tous,

J'ai un problème concernant l'update des données dans ma BDD. J'arrive à afficher les données mais pas à les updater dans ma BDD.

Je vous mets mon code ci-dessous :
<?php
$host = 'localhost';
$dbname = 'test1';
$username = 'root';
$password = '';

if (isset($_POST['insert'])) {
try {
    // se connecter à mysql
    $pdo = new PDO("mysql:host=$host;dbname=$dbname","$username","$password");
    } catch (PDOException $exc) {
        echo $exc->getMessage();
        exit();
    }
    $idTypeProjet = $_POST['idTypeProjet'];
    $quantite = $_POST['quantite'];
    for ($i=0, $count = count($idTypeProjet);$i<$count;$i++) {
            $item = $idTypeProjet[$i];
            $item1 = $quantite[$i];
            settype($item, "integer");
            settype($item1, "integer");
            echo $item . "<br>";
            echo $item1 . "<br>";
            
            $res = $pdo->prepare("UPDATE quantite SET idTypeProjet= :idTypeProjet ,quantité = :quantité WHERE idTypeProjet = 1 AND quantité = 1");
            $exec = $res->execute(array("idTypeProjet"=>$item,"quantité"=>$item1));
            if ($exec){
                echo "Inserted succesfully";
            } else {
                echo "Data not Inserted";
            }
        
        }

    }
?>


Je remercie d'avance toutes les personnes qui pourront m'aider à résoudre mon problème !

4 réponses

yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 Ambassadeur 1 557
24 juin 2021 à 13:40
bonjour,
je me demande si tu connais la différence entre UPDATE et INSERT.
que contient initialement ta table?
quel résultat tentes-tu d'obtenir?
0
Ma table contient 4 champs avec id, idTypeProjet, idClient, quantité.
J'ai pu précédemment remplir le champ idClient avec un INSERT ainsi que idTypeProjet et idClient mais ces 2 champs sont remplis de 1.
Ducoup je veux que après que le client ait pu choisir ses projets ainsi que leur quantité, que je puisse faire une requête UPDATE qui me permettra de remplacer les 1 par les vrais valeurs choisis par le client.

Je ne sais pas si ce que j'ai dit est explicite ou pas
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557
24 juin 2021 à 14:18
ce serait encore plus clair si tu montrais un exemple de ce que contient initialement ta table, et de ce que tu souhaites qu'elle contienne après exécution du code..
peut-être manque-t-il simplement idClient dans le WHERE?
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 > yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
24 juin 2021 à 14:25


Voilà , et comme tu le vois il y a des 1 dans les champs idTypeProjet et quantité.
C'est pour cela que je veux updater ces 1 afin que les projets ainsi que les quantités choisis par le client puissent remplcer ces 1.

Si c'est pas clair, dis-le moi
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557 > Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 14:50
tu ne montres pas la situation finale désirée.
je pense qu'il manque simplement idClient dans le WHERE.
difficile d'être précis, tu ne montres qu'un partie de ton code.
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 15:09
Bon en fait , je fais un générateur automatique de devis
Et j'ai trois pages : Vos coordonnées, Votre projet et confirmation
Et j'ai trois tables dans ma base de données : Coordonnées, Projet, Quantité

Pour les coordonnées, il m'a été facile de faire un INSERT pour rentrer les données dans la BDD.
Or je m'étais rendu compte que j'avais besoin de l'ID du client dans la table quantité que je t'ai montré précédemment.
Je vais te montrer ce code :
<?php
$host = 'localhost';
$dbname = 'test';
$username = 'root';
$password = '';
if(isset($_POST['insert'])){
  try {
  // se connecter à mysql
  $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8","$username","$password");
  } catch (PDOException $exc) {
    echo $exc->getMessage();
    exit();
  }
  // récupérer les valeurs 
  $name = $_POST['name'];
  $adresse = $_POST['adresse'];
  $email = $_POST['email'];
  $telephone = $_POST['telephone'];
  $societe = $_POST['societe'];
  $siret = $_POST['siret'];
  // Requête mysql pour insérer des données
  $sql = "INSERT INTO `coordonnees`(`nom`, `mail`, `telephone`, `adresse`, `nomSociete`, `numSiret`) VALUES (:nom,:mail,:telephone,:adresse,:nomSociete,:numSiret);SELECT LAST_INSERT_ID();INSERT INTO `quantite` (`idTypeProjet`,`idClient`,`quantité`) VALUES (1,LAST_INSERT_ID(),1);";
  $res = $pdo->prepare($sql);
  $exec = $res->execute(array(":nom"=>$name,":mail"=>$email,":telephone"=>$telephone,":adresse"=>$adresse,":nomSociete"=>$societe,":numSiret"=>$siret));
  // vérifier si la requête d'insertion a réussi
  if($exec){
    echo '';
  }else{
    echo "Échec de l'opération d'insertion";
  }
}
?>


Ce code me permet de pouvoir rentrer les coordonnées et aussitôt que l'id du client est crée, je l'insert dans la table quantité avec des 1 à la place de idTypeProjet et quantité.
Tout ça , c'est juste pour la première page : Vos coordonnées.

Et donc ducoup , je passe à la page Votre projet
Là , le client choisit ses projets ainsi que leur quantité et donc c'est pour cela que je veux updater la table quantité pour mettre l'id du projet ainsi que ses quantités à la place des 1.

Voilà, c'est à peu près ça .
Est-ce que c'est clair ou tu aurais besoin de plus de précision ?
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557
24 juin 2021 à 15:30
tu ne montres pas la situation finale désirée (les données dans la table). c'est la troisième fois que je te le demande.

quand tu montres du code, n'oublie pas de préciser le nom du fichier.

dans quel contexte fais-tu cela? il me semble que tu construis en ayant oublié les fondations.
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 > yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
24 juin 2021 à 15:38
Je ne comprends pas trop ce que tu veux dire par "montrer la solution finale désirée", parce que c'est ce que je recherche à faire.

Merci pour le conseil pour le nom du fichier !

Le contexte est que j'ai décidé de programmer un générateur automatique de devis.
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 > yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
24 juin 2021 à 15:42


Par exemple , le client avec l'idClient 20 a choisi le projet 1 avec comme quantité 6
C'est ça que je voudrais comme solution finale désirée
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557 > Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 15:47
prend maintenant un peu de temps pour comparer le contenu de la table avant et après, et y réfléchir.
qu'est-ce qui a changé dans la table?

montre-nous un autre exemple de ce que contient la table, avant/après, dans le cas où le client choisit plusieurs projets.
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 > yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
24 juin 2021 à 15:55
En comparant le contenu de la table avant et après, ce qui a changé sont les champs idTypeProjet et quantité.



Dans cette image, on voit que le client avec l'idClient 20 a choisi le projet 1 avec comme quantité 6 et il a aussi choisi le projet 4 avec comme quantité 7
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 Ambassadeur 1 557
24 juin 2021 à 17:25
penses-tu que c'est une bonne idée de faire "pour chaque dernier client"?
comment cela pourrait-il fonctionner si un client choisit plusieurs projets?
pourquoi "pour le coup je pense pas d'idClient"?

je pense que tu as d'autres problèmes fondamentaux dans ton code.

tu as "décidé de programmer un générateur automatique de devis". pour t'amuser, ou bien cela devrait-il un peu tenir la route?

tu aurais un client par jour?
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 17:28
Ouais je comprends, il faut que je revoie tout mon code
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 18:01
Mais donc de quelle manière, va-t-il que je refasse mon code ?
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557 > Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 18:08
Il y manque une technique importante: l'utilisation des sessions en PHP.
0
Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021 > yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
24 juin 2021 à 18:14
Oui bien sur !
J'y est pensé mais je me suis dit que ça ne devrait pas marcher
Et excuse-moi yg_be, mais de quelle manière devrais-je y procéder ?
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557 > Gg78140 Messages postés 12 Date d'inscription jeudi 24 juin 2021 Statut Membre Dernière intervention 24 juin 2021
24 juin 2021 à 18:27
fais peut-être des exercice simples avec des sessions, pour maitriser le concept et comprendre à quoi cela sert.
0