Probele avec l'id

ladj59 Messages postés 322 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
j'ai un petit souci
je récupére l'd d'un sujet sur ma page php et je voudrais compléter ma bdd qui contient juste le sujet correspondant...
now je veux la compléter en mettant pour id = celui récupéré alors compléter la bdd
avec le code qui suit cela marche mais le probléme c'est qu'il n'y a pas la condition avec l'id donc si il y a plusieurs sujets identiques alos il compléte les autres champs de la ligne pour tous les sujets alors qu'il faudrait que ce soit juste pour le dernier

<?php
$reponse=mysql_query('SELECT * FROM base_physique ORDER BY id DESC LIMIT 1');
while ($donnees = mysql_fetch_array($reponse))
{
echo 'Id : '.$donnees['id'].' - Sujet : '.$donnees['sujet'];
}
?>

<?php

if( !isset( $_POST[ 'valeurs' ] ) )
{
echo '<form method="post">';
echo '<label for="valeurs">Valeurs (séparez pas des tirets, ex : 1-2-3...)</label>';
echo '<input type="text" name="valeurs" id="valeurs" /><br>';
echo '<input type="submit" value="Enregistrer !" />';
echo '</form>';
}
else
{

$arr_valeurs = explode( '-', $_POST[ 'valeurs' ] );
$query = "UPDATE base_physique SET auteur = '".$arr_valeurs[0]."' , motstitre = '".$arr_valeurs[1]."' , année = '".$arr_valeurs[2]."' , journal = '".$arr_valeurs[3]."' , volume = '".$arr_valeurs[4]."' , page = '".$arr_valeurs[5]."' , motscle = '".$arr_valeurs[6]."'"
. " WHERE sujet = '".$_SESSION['sujet']."'";
$ex = mysql_query( $query ) or die( mysql_error() );
if( $ex )
echo "L'enregistrement a bien été effectué !";
else
echo "L'enregistrement n'a pu être effectué !";

1 réponse

ladj59 Messages postés 322 Statut Membre 3
 
quelqu'un a une idée?
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Salut,


$reponse=mysql_query('SELECT * FROM base_physique ORDER BY id DESC LIMIT 1');

en faisant ainsi tu n'auras toujours que le premier id


echo '<label for="valeurs">Valeurs (séparez pas des tirets, ex : 1-2-3...)</label>';

si je comprend bien tu demandes à l'utilisateur de séparer les valeurs à modifer par un tiret sachant que chacune représente l'auteur, le titre mot cle etc..

passe l'id en champ caché et fais la condition WHERE sur le champ id comme ça:

<?php
$reponse=mysql_query('SELECT * FROM base_physique ORDER BY id DESC LIMIT 1');
while ($donnees = mysql_fetch_array($reponse))
{
echo 'Id : '.$donnees['id'].' - Sujet : '.$donnees['sujet'];
}
?>

<?php

if( !isset( $_POST[ 'valeurs' ] ) )
{
echo '<form method="post">';
echo '<label for="valeurs">Valeurs (séparez pas des tirets, ex : 1-2-3...)</label>';
echo '<input type="text" name="valeurs" id="valeurs" /><br>';
echo '<input type="hidden" name="id" id="id" value='.$donnees['id'].'/><br>';//on passe l'id en champ caché
echo '<input type="submit" value="Enregistrer !" />';
echo '</form>';
}
else
{

$arr_valeurs = explode( '-', $_POST[ 'valeurs' ] );
$query = "UPDATE base_physique SET auteur = '".$arr_valeurs[0]."' , motstitre = '".$arr_valeurs[1]."' , année = '".$arr_valeurs[2]."' , journal = '".$arr_valeurs[3]."' , volume = '".$arr_valeurs[4]."' , page = '".$arr_valeurs[5]."' , motscle = '".$arr_valeurs[6]."'"
. " WHERE id = '".$_POST[ 'id' ]."'";
$ex = mysql_query( $query ) or die( mysql_error() );
if( $ex ){
	echo "L'enregistrement a bien été effectué !";
}else{
	echo "L'enregistrement n'a pu être effectué !";
}


au passage, prends l'habitude de mettre toujours des { } pour les if else même si une seule instruction, car si tu dois en rajouter une autre instruction tu vas les oublier.

n'aurait il pas été plus simple de faire un champ pour chaque valeur "auteur" "motstitre" annee etc... dans ton formulaire ?

@lain
0