Comment mettre à jour des tables à partir d'une valeurs ?

Eléphanteau du PHP | 11 Messages

29 juin 2022, 17:24

Bonjour, J'aimerais savoir comment je peux faire pour que les personnes qui utilisent mon formulaire puissent mettre à jour les tables, les valeurs qui ne bougent pas seront l'id boutique qui sera toujours la même id. J'ai tenté de faire une commande UPDATE mais ça fonctionne pas ;-) j'obtiens une erreur. si quelqu'un serait d'où ça vient.
Je commence dans le PHP. tout mon formulaire fonctionne pour ajouter les tables par incrémentation. Par contre ma partie UPDATE je pense que j'ai foiré quelques choses.

Je vous mets mon code ci-dessous, si une gentille âme serait capable de m'aider, svp

if(!empty($_POST["send"])) {
	$Boutique = $_POST["Boutique"];
	$id_boutique = $_POST["id_boutique"];
	$ip = $_POST["ip"];
	$Actif = $_POST["Actif"];

	$connexion = mysqli_connect("localhost", "login", "Motdepasse", "ip_boutique") or die("Erreur de connexion: " . mysqli_error($connexion));
	$result = mysqli_query($connexion, "INSERT INTO `boutiques_IP` (Boutique, id_boutique, ip, Actif) VALUES ('" . $Boutique. "', '" . $id_boutique. "','" . $ip. "','" . $Actif. "')");
	if($result){
		$db_msg = "Les informations de cette nouvelle boutique sont enregistrées avec succès.";
		$type_db_msg = "success";
	}else{
		$db_msg = "Erreur lors de la tentative d'enregistrement des informations de cette nouvelle boutique.";
		$type_db_msg = "error";
	}
	
}
if(!empty($_POST["update"])) {
	$Boutique = $_POST["Boutique"];
	$id_boutique = $_POST["id_boutique"];
	$ip = $_POST["ip"];
	$Actif = $_POST["Actif"];

	$connexion = mysqli_connect("localhost", "login", "motdepasse", "ip_boutique") or die("Erreur de connexion: " . mysqli_error($connexion));
	$result = mysqli_query($connexion, "UPDATE `boutiques_IP` (Boutique, id_boutique, ip, Actif) WHERE ('" . $Boutique. "', '" . $id_boutique. "','" . $ip. "','" . $Actif. "')");
	if($result){
		$db_msg = "Les informations de cette boutique sont mis a jour avec succès.";
		$type_db_msg = "success";
	}else{
		$db_msg = "Erreur lors de la tentative de mise à jour des informations de cette nouvelle boutique.";
		$type_db_msg = "error";
	}
	
}
Cordialement

Mammouth du PHP | 2703 Messages

29 juin 2022, 21:11

que dit la doc sur la syntaxe d'une requete sql update ?

Eléphanteau du PHP | 11 Messages

29 juin 2022, 22:48

J'ai pas tout compris sur la DOC, je suis autodidacte et la je n'arrive pas à voir d'où j'ai fais une bêtise !

Mammouth du PHP | 1967 Messages

30 juin 2022, 09:00

https://sql.sh/cours/update

Les mots clé d'un requète UPDATE sont
UPDATE
SET
WHERE
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 11 Messages

30 juin 2022, 09:36

Oui C'est bien les mots clé que j'ai utilisé

Mammouth du PHP | 1967 Messages

30 juin 2022, 09:59

$result = mysqli_query($connexion, "UPDATE `boutiques_IP` (Boutique, id_boutique, ip, Actif) WHERE ('" . $Boutique. "', '" . $id_boutique. "','" . $ip. "','" . $Actif. "')");

C'est pas ce que je vois

et le where est mal utilisé
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 11 Messages

01 juil. 2022, 14:55

Ok, donc comment je dois l'utilisé ?

Avatar du membre
Eléphanteau du PHP | 41 Messages

01 juil. 2022, 16:21

je te conseil de t'exercer au SQL de trouvé une application comme "DB Browser for SQLite" même si c'est du SQlite tu sauras faire des fonctions basique comme Update il les montres dans le log visuel

je me suis permis aussi de remettre ton code de manière plus lisible et avec les conventions de codage
         if (!empty($_POST['send'])) {

            $Boutique = $_POST['Boutique'];
            $id_boutique = $_POST['id_boutique'];
            $ip = $_POST['ip'];
            $Actif = $_POST['Actif'];

            $connexion = mysqli_connect(
                'localhost', 'login', 'Motdepasse', 'ip_boutique')
            or die('Erreur de connexion: ' . mysqli_error($connexion));

            $result = mysqli_query($connexion,
               "INSERT INTO `boutiques_IP` (Boutique, id_boutique, ip, Actif) VALUES ('$Boutique','$id_boutique','$ip','$Actif')");

            if ($result) {
                $db_msg = 'Les informations de cette nouvelle boutique sont enregistrées avec succès.';
                $type_db_msg = 'success';
            } else {
                $db_msg = 'Erreur lors de la tentative d\'enregistrement des informations de cette nouvelle boutique.';
                $type_db_msg = 'error';
            }

        }
        if (!empty($_POST['update'])) {

            $Boutique = $_POST['Boutique'];
            $id_boutique = $_POST['id_boutique'];
            $ip = $_POST['ip'];
            $Actif = $_POST['Actif'];

            $connexion = mysqli_connect(
                hostname: 'localhost',
                username: 'login',
                password: 'motdepasse',
                database: 'ip_boutique') or die('Erreur de connexion: ' . mysqli_error($connexion));

            $result = mysqli_query($connexion,
                "UPDATE `boutiques_IP` (Boutique, id_boutique, ip, Actif) WHERE ('$Boutique', '$id_boutique','$ip','$Actif')");

            if ($result) {
                $db_msg = 'Les informations de cette boutique sont mis a jour avec succès.';
                $type_db_msg = 'success';
            } else {
                $db_msg = 'Erreur lors de la tentative de mise à jour des informations de cette nouvelle boutique.';
                $type_db_msg = 'error';
            }

        }
Et oui ton update est pas bon : voir https://sql.sh/cours/update

en fait sql c'est comme parler le language verbale. tu lui dit met à jour avec cette valeur contenu dans cette variable que tu met dans cette colone avec ce nom , (where) quand ! par exemple l'id de la colone est = égale à 17 (donc l'id 17) ou la colone 17.
et il va déroulé et a un moment il va dire à tien colone 17 ok je met ajour.
on peut pas te donné la réponse tu dois le découvrir pour comprendre.

et au passage n'oublie pas; PHP c'est pas comme du C/C++ ou java
les double cotessont utilisé en PHP que si tu as des variables contenu dans ton texte sinon ça fonctionne mais on le fait pas.
on utilise quand il y a que et strictement du texte les simple cote pourquoi et bien pour une bonne lisibilité et ça donne une idée visuel à il y a un double cote donc y a une variable pas loin (dans le doute si on ne l'a pas remarqué)
celui qui te dit non ou osef ! tu as le droit de le bruler :tir2:

je ne sais pas si tu travail en PHP 8 mais si c'est le cas tu dois par convention de lecture le plus possible utilisé les
label , mais attention ça ne fonctionne pas en php 7 tout du moins en dessous de 8 on ne l'utilise pas.
exemple :
            $connexion = mysqli_connect(
                hostname: 'localhost',
                username: 'login',
                password: 'motdepasse',
                database: 'ip_boutique') or die('Erreur de connexion: ' . mysqli_error($connexion));
ça donne une bonne lisibilité de ton code et tu auras moins besoin de faire de commentaire.

voili voila ;) bon courage pour ta requête UPDATE

Eléphanteau du PHP | 11 Messages

01 juil. 2022, 18:45

Merci, Dsynx !

Je vais regardé ce que tu m'a donné comme information. Et merci encore pour avoir mis le code Plus lisible !

Eléphanteau du PHP | 11 Messages

01 juil. 2022, 20:06

Si j'ai bien compris ça donne ceci pour ma partie UPDATE ? :priere: Mais j'obtiens une erreur donc c'est pas bon ! Je vois pas d'où je fais l'erreur !
 $result = mysqli_query($connexion,
                "UPDATE `boutiques_IP` SET (Boutique, ip, Actif) = ('$Boutique','$ip','$Actif') WHERE (id_boutique) = ('$id_boutique')");

Mammouth du PHP | 2703 Messages

01 juil. 2022, 22:14

vous avez lu et relu et rerelu le lien donné 2 fois dans cette discussion ?

Eléphanteau du PHP | 11 Messages

02 juil. 2022, 01:09

Oui j'ai lu et relu et rerelu, pour vous ça vous paraît évident. Mais pour moi j'ai fais ce qui est marqué dans la doc. Si je viens ici c'est pour de l'aide ! Et comprendre mon erreur.

Mammouth du PHP | 2703 Messages

02 juil. 2022, 01:24

donc pour vous :
UPDATE client
SET rue = '49 Rue Ameline',
ville = 'Saint-Eustache-la-Forêt',
code_postal = '76210'
WHERE id = 2

UPDATE `boutiques_IP` SET (Boutique, ip, Actif) = ('$Boutique','$ip','$Actif') WHERE (id_boutique) = ('$id_boutique')

c'est la même syntaxe ?

Eléphanteau du PHP | 11 Messages

02 juil. 2022, 09:25

Update "le nom de la table"
Set (les titres des colonnes concerné) = (leurs valeurs du formulaires) WHERE (Le nom de la colonne référence) = (la valeurs mis dans le formulaire).
Donc oui c'est le même format que votre exemple ! Non ?

Eléphanteau du PHP | 11 Messages

02 juil. 2022, 18:27

Code : Tout sélectionner

UPDATE `boutiques_IP` SET (Boutique, ip, Actif)=('TEST33','252.252.252.252','Actif') WHERE id_boutique = ('2712')
Quand j'utilise ceci sur DB BROWSER SQLite ça fonctionne.

Mais quand je mets dans mon code PHP Le code ci-dessous ça me mets une erreur lors de l’exécution du formulaire.

Code : Tout sélectionner

"UPDATE `boutiques_IP` SET (Boutique, ip, Actif)=('$Boutique','$ip','$Actif') WHERE id_boutique = ('$id_boutique')");


Voici le code complet

Code : Tout sélectionner

<?php if (!empty($_POST['send'])) { $Boutique = $_POST['Boutique']; $id_boutique = $_POST['id_boutique']; $ip = $_POST['ip']; $Actif = $_POST['Actif']; $connexion = mysqli_connect( 'localhost', 'login', 'Motdepasse', 'ip_boutique') or die('Erreur de connexion: ' . mysqli_error($connexion)); $result = mysqli_query($connexion, "INSERT INTO `boutiques_IP` (Boutique, id_boutique, ip, Actif) VALUES ('$Boutique','$id_boutique','$ip','$Actif')"); if ($result) { $db_msg = 'Les informations de cette nouvelle boutique sont enregistrées avec succès.'; $type_db_msg = 'success'; } else { $db_msg = 'Erreur lors de la tentative d\'enregistrement des informations de cette nouvelle boutique.'; $type_db_msg = 'error'; } } if (!empty($_POST['update'])) { $Boutique = $_POST['Boutique']; $id_boutique = $_POST['id_boutique']; $ip = $_POST['ip']; $Actif = $_POST['Actif']; $connexion = mysqli_connect( hostname: 'localhost', username: 'login', password: 'motdepasse', database: 'ip_boutique') or die('Erreur de connexion: ' . mysqli_error($connexion)); $result = mysqli_query($connexion, "UPDATE `boutiques_IP` SET (Boutique, ip, Actif)=('$Boutique','$ip','$Actif') WHERE id_boutique = ('$id_boutique')"); if ($result) { $db_msg = 'Les informations de cette boutique sont mis a jour avec succès.'; $type_db_msg = 'success'; } else { $db_msg = 'Erreur lors de la tentative de mise à jour des informations de cette nouvelle boutique.'; $type_db_msg = 'error'; } } ?> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <link rel="stylesheet" href="ip_boutique.css" /> <script type="text/javascript" src="ip_boutique.js"></script> </head> <body> <div id="box"> <form id="form" enctype="multipart/form-data" onsubmit="return validate()" method="post"> <h3>Formulaire</h3> <label>Boutique: <span>*</span></label> <input type="text" id="Boutique" name="Boutique" placeholder="Ville de la Boutique"/> <label>id_boutique: <span>*</span></label> <input type="text" id="id_boutique" name="id_boutique" placeholder="ID de la boutique"/> <label>ip: <span>*</span></label> <input type="text" id="ip" name="ip" placeholder="IP de la box"/> <label>Actif:</label> <input type="text" id="Actif" name="Actif" placeholder="Actif..."/> <input type="submit" name="send" value="Envoyer les informations dans la BDD"/> <input type="submit" name="update" value="Mettre à jour les informations dans la BDD"/> <div id="statusMessage"> <?php if (! empty($db_msg)) { ?> <p class='<?php echo $type_db_msg; ?>Message'><?php echo $db_msg; ?></p> <?php } ?> <div id="exportcsv"><a href="csv_export.php"> Exporter la table boutiques-IP au format CSV </a></div> </div> </form> </div> </body> </html>