Modifier le champs d'une bdd

Résolu/Fermé
AlexandreParis13 Messages postés 154 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 9 mars 2015 - 17 sept. 2012 à 17:29
AlexandreParis13 Messages postés 154 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
A voir également:

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 18/09/2012 à 14:02
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
0
AlexandreParis13 Messages postés 154 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 9 mars 2015 4
Modifié par AlexandreParis13 le 18/09/2012 à 19:36
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 ?
0