Modifier le champs d'une bdd [Résolu/Fermé]

Messages postés
153
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
9 mars 2015
- - Dernière réponse : AlexandreParis13
Messages postés
153
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
9 mars 2015
- 18 sept. 2012 à 19:33
Bonjour,

J'ai créer une page qui se nome modifier.php qui contient ceci:

<?php
 $host = "localhost";
 $user = "root";
 $pass = "";
 $bdd = "playlist";
  
// connection base de donnees
	mysql_connect($host, $user, $pass);
//selection de la base
	mysql_select_db($bdd);
if(!empty($_POST)){
	//insertion des donnees dans ma base
	$artistes = $_POST['artistes'];
	$titres = $_POST['titres'];
	$player = $_POST['player'];
	$mp3 = $_POST['mp3'];
	$alpha = $_POST['alpha'];
 
	mysql_query("UPDATE musics SET artistes='$artistes', titres='$titres', player='$player', mp3='$mp3', alpha='$alpha'; WHERE id='?' ");
	}
	
	mysql_close(); 

?>
<!DOCTYPE html>
<html>
	<head>
        <meta charset="utf-8">		
        <title>Modifier un titre</title>		
		<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
		<link rel="stylesheet" href="css/font.css" type="text/css" media="all" />
		<link rel="stylesheet" href="../css/960.css" type="text/css" media="all" />	
	</head>
	<body>
	<header><div class="container_12 header">
		<div class="grid_8 prefix_1">
			<h2>Modifier un titre</h2>
		</div><div class="grid_3">
			<p><a href="/www.ahplaylist.net/" target="_blank" >Voir le site</a> | <a href="logout.php" >Déconexion</a></p>
		</div>
	</div></header>
	<div class="logout" ><p><a href="logout.php" >Déconexion</a></p></div>
			<div  class="container_12 content" >
				<div class="grid_8 prefix_2 suffix_2" >
				<p>Revenir à la <a href="home.php">page home</a></p>
				<?php
					try{ // On se connecte à MySQL
					$bdd = new PDO('mysql:host=localhost;dbname=playlist', 'root', '');
					}
					catch(Exception $e){ // En cas d'erreur, on affiche un message et on arrête tout
					die('Erreur : '.$e->getMessage());
					}
					
					// Si tout va bien, on peut continuer
					// On récupère tout le contenu de la table musics
					
					
					if(isset($_GET['t'])){
						$reponse = $bdd->query("SELECT * FROM musics WHERE titres='".$_GET['t']."' ");
						while ($donnees = $reponse->fetch()){
				?>
				<h1>Modifier <?php echo $donnees['titres']; ?> de <?php echo $donnees['artistes']; ?></h1>
				<form method="post" action="modifier.php?num=<?php echo $_GET['t']; ?>" >
					
						artiste <input type="text" value="<?php echo $donnees['artistes']; ?>" name="artistes" /><br />
						titre <input type="text" value="<?php echo $donnees['titres']; ?>" name="titres" /><br />
						url mp3 <input type="text" value="<?php echo $donnees['mp3']; ?>" name="mp3" /><br />
						url video <textarea name="player" ><?php echo $donnees['player']; ?></textarea><br />
						alpha <input type="text" value="<?php echo $donnees['alpha']; ?>" name="alpha" /><br />
						<input type="submit" value="Modifier" />
				<?php
						}
					}
				?>						
				</form>
			</div>
	</body>
</html>


J'arrive bien à afficher se contienne les champs mais je ne parvient à les modifier, je précise que je débute en PHP mais si je comprend bien il faut récupérer l'ID du champs mais là je ne sais pas comment faire si vous avez une idée.

j'ai bien effectué des recherches se qui m'a permis de trouver la ligne suivante:

UPDATE musics SET artistes='$artistes', titres='$titres', player='$player', mp3='$mp3', alpha='$alpha'; WHERE id='?'


Mais d'après se que j'ai pu apprendre il manque l'ID
Afficher la suite 

2 réponses

Messages postés
3485
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 octobre 2019
915
0
Merci
Bonjour,

Ton intuition est bonne, il faut passer l'id de la ligne à modifier.
Par ailleurs, tu as un petit problème de balise fermante </form>, qui est en dehors de ta boucle, alors que la balise ouvrante est dans la boucle.

Pour régler ça, deux choses à faire.

1 - Dans la boucle du formulaire, rajouter un input caché :
while ($donnees = $reponse->fetch()) 
{ 
?> 
<h1>Modifier <?php echo $donnees['titres']; ?> de <?php echo $donnees['artistes']; ?></h1> 
<form method="post" action="modifier.php?num=<?php echo $_GET['t']; ?>" > 
 artiste <input type="text" value="<?php echo $donnees['artistes']; ?>" name="artistes" /><br /> 
 titre <input type="text" value="<?php echo $donnees['titres']; ?>" name="titres" /><br /> 
 url mp3 <input type="text" value="<?php echo $donnees['mp3']; ?>" name="mp3" /><br /> 
 url video <textarea name="player" ><?php echo $donnees['player']; ?></textarea><br /> 
 alpha <input type="text" value="<?php echo $donnees['alpha']; ?>" name="alpha" /><br /> 
 <input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" /> 
 <input type="submit" value="Modifier" /> 
</form> 
<?php 
 } 
} 
?>


2 - Au niveau de ta requête de mise à jour, utiliser ce nouveau paramètre :
 //insertion des donnees dans ma base 
 $artistes = $_POST['artistes']; 
 $titres = $_POST['titres']; 
 $player = $_POST['player']; 
 $mp3 = $_POST['mp3']; 
 $alpha = $_POST['alpha']; 
 $id = $_POST['id']; 
  
 mysql_query("UPDATE musics SET artistes='$artistes', titres='$titres', player='$player', mp3='$mp3', alpha='$alpha' WHERE id='$id' ");



Xavier
Messages postés
153
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
9 mars 2015
2
0
Merci
Formidable sa marche mille merci Xavier cependant histoire de finir la boucle en beauté si je puis dire ^^ Comment puis-je afficher sur la même page un message de confirmation qui me dit que les changements on bien était pris en compte ?