[RESOLU] probleme avec update

Eléphanteau du PHP | 33 Messages

01 avr. 2019, 21:40

bonjour je cherche a modifier la valeur d'une onde radio qui figure dans la base de donnée en fonction d'une certaine catégorie
ma base de donnée qui se nomme radio possede 3 catégories ( id, type et onde) , la catégorie type est fixé sur la table. je cherche par le biais d'un formulaire a modifier la valeur onde en fonction de la catégorie definie type.
ma page formulaire est :
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/plainte_redaction.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
</head>

<body>
<?php

// On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)
session_start ();


// On récupère nos variables de session
if ($_SESSION['group'] == 1 XOR $_SESSION['group'] == 2 XOR $_SESSION['group'] == 3 XOR $_SESSION['group'] == 4) {

 require 'menu.php'; ?>

<form method="post" action="modif_formulaire.php">
    <h1>modification radio</h1>
			
	<select name="type" id="type" required>
       <option value="central">central</option>
       <option value="Patrouille ville">Patrouille ville</option>
	   <option value="Patrouille nord">Patrouille nord</option>
       
   </select>
	<input type="text" name="onde" id="onde" placeholder="onde" required></br>
	<input type="submit" name="valider" id="valider">
</form>

<?php 
}
else {
	echo'<p>la radio 1 a ete modifie avec succes</p>';
}
?>

</body>

</html>
ma page de modification est :
<?php

// On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)
session_start ();

     
	 ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/plainte_redaction.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
</head>

<body>

<?php
  include 'database.php';
global $db; 
// presence des donnees du formulaire
echo 'La nouvelle onde de '.$_POST['type'].' est : '.$_POST['onde'];
$type = $_POST['type'];
$onde = $_POST['onde'];

    if (isset($_POST['type'])  && isset($_POST['onde']))
		{
   $db='UPDATE radio SET onde = $onde WHERE type= :type';
   
	}
else {
	header('Location: formulaire.php');   

}
?>
</body>
</html>
je débute un peu et la je ne vois plus de solution.
ca m'indique bien que les variable du formulaire sont déclarés mais ensuite je peche un peu la.

Mammouth du PHP | 1967 Messages

02 avr. 2019, 07:56

$db='UPDATE radio SET onde = $onde WHERE type= :type';

si tu inclu des variable php dans une chaine, il faut soit les sortir de la chaine soit utiliser des double quotes "

$db='UPDATE radio SET onde = ' . $onde . ' WHERE type= :type';
OU
$db="UPDATE radio SET onde = $onde WHERE type= :type";

ensuite il faut faire quelque chose avec ta requète, remplacer :type et l'éxécuter.

PS utilise la même méthode pour insérer onde et type dans ta requète.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 33 Messages

02 avr. 2019, 09:30

?? pourquoi je doit remplacer :type et l'executer
ma requete initial est de trouver dans ma table radio le type correspondant a mon formulaire et de changer dans sa ligne de donnée la valeur de la categorie onde issu du formulaire

le requete $db="UPDATE radio SET onde = $onde WHERE type= :type";
ne permet elle pas justement de modifier dans la table radio la valeur onde entrer dans le formulaire where le type du formulaire est identifié dans la table radio?

Eléphanteau du PHP | 33 Messages

02 avr. 2019, 10:10

j'ai essayé ca mais ca ne fonctionne toujours pas
<?php

// On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)
session_start ();

     
   ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/plainte_redaction.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
</head>

<body>

<?php
  include 'database.php';
global $db; 
// presence des donnees du formulaire
echo 'La nouvelle onde de '.$_POST['type'].' est : '.$_POST['onde'];
$type = $_POST['type'];
$onde = $_POST['onde'];

    if (isset($_POST['type'])  && isset($_POST['onde']))
    {
   $req="UPDATE radio SET onde = $onde WHERE type= :type";
	$exe = $db->prepare($req);
 
    $exe->(':type', $_POST['type']);
	$exe->(':onde', $_POST['onde']);
    // execute  query
    $stmt->execute();
							
                        }
                 
                        $req->closeCursor();
                    }
  }
else {
  header('Location: formulaire.php');   

}
?>
</body>
</html>

Mammouth du PHP | 1967 Messages

02 avr. 2019, 10:39

c'est dèjà mieux, dans ton code précédent tu te contentais d'écrire ta requète.

si tu remploce :onde par $_POST['onde'], il te faut un :onde dans ta requète pas un $onde.
lors de ces remplacements, il te manque un nom de fonction

tu fais un execute sur $stmt alors que ta connexion et préparation de requète est sur $exe il te faut un peu d'harmonie.

et tu close ton curseur sur la chaine de ta requète ???

un affichage des erreur php et mysql te permettrais d'améliorer ton débuggage
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 33 Messages

02 avr. 2019, 11:20

mise a jour des corrections
<?php

// On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)
session_start ();
span style="color: #808080; font-style: italic;">// Afficher les erreurs à l'écran
'display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
'log_errors', 1);
// Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
'error_log''/log_error_php.txt');
// Afficher les erreurs et les avertissements
     
   ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/plainte_redaction.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
</head>

<body>

<?php
  include 'database.php';
global $db; 
// presence des donnees du formulaire
echo 'La nouvelle onde de '.$_POST['type'].' est : '.$_POST['onde'];
$type = $_POST['type'];
$onde = $_POST['onde'];

    if (isset($_POST['type'])  && isset($_POST['onde']))
    {
   $req="UPDATE radio SET onde = :onde WHERE type= :type";
	$exe = $db->prepare($req);
 
    $exe->(':type', $_POST['type']);
	$exe->(':onde', $_POST['onde']);
    // execute  query
    $exe->execute();
							
                        }
                 
                        
                    }
					$req->closeCursor();
  }
else {
  header('Location: formulaire.php');   

}

?>
</body>
</html>
tu me dis lors de ces remplacements il me manque un nom de fonction. Je ne saisi pas. en tout cas merci pour le temps que tu me consacre c''est trés appréciable.

Mammouth du PHP | 1967 Messages

02 avr. 2019, 11:39

vas voir sur ce lien et suis les exemples
https://www.php.net/manual/fr/pdo.prepare.php

ta fermeture de curseur est encore sur ta requète plutot que sur ta connexion.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 33 Messages

02 avr. 2019, 12:48

<?php

// On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)
require 'menu.php'
   
   ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/plainte_redaction.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
</head>

<body>

<?php
  include 'database.php';
global $db; 
// presence des donnees du formulaire
echo 'La nouvelle onde de '.$_POST['type'].' est : '.$_POST['onde'];
$type = $_POST['type'];
$onde = $_POST['onde'];

    if (isset($_POST['type'])  && isset($_POST['onde']))
    {
   $req="UPDATE radio SET onde = :onde WHERE type= :type";
  $exe = $db->prepare($req);
 
    $exe->bindparam(':type', $_POST['type']);
  $exe->bindparam(':onde', $_POST['onde']);
    // execute  query
    $exe->execute();
              
                        }
       
else {
  header('Location: formulaire.php');   

}
$exe->closeCursor();

?>
</body>
</html>

merci pour tout ca fonctionne