Soucis de selection d'un id dans une table.

WRInaute passionné
Bonjour,
J'ai un soucis de selection d'un "id" dans une table si le 1er "id" est éffacé 8O .
En gros: 4 champs id, etat ,jour_debut, jour_fin.
La selection d'un id avec un bouton radio passe le champ "etat" à valide ou non valide.
Cela fonctionne très bien si les "id" se suivent. Par contre si je supprime l'id 1 de ma base et que je selectionne l'id 2 c'est alors l'id 3 qui est modifié et ainsi de suite :?: .
Donc si id 1 supprimé sa donne:
id 2 selectionné modifie l'état de l'id 3
id 3 selectionné modifie l'état de l'id 4
id 4 selectionné modifie l'état de l'id 5
id 5 selectionné modifie l'état de l'id 2
J'aimerais comprendre pourquoi et comment y remedier?
Merci
 
WRInaute passionné
Sa donne un truc du genre:
Code:
......
$query1 = mysql_query("SELECT id_date FROM  dates ");
$query2 = mysql_query("SELECT etat FROM  dates ");
$query3 = mysql_query("SELECT jour_debut FROM  dates ");
$query4 = mysql_query("SELECT jour_fin FROM  dates ");
$query5 = mysql_query("SELECT id_date FROM  dates ");

$id = "";
$etat_ = "";
$debut = "";
$fin = "";
$check = "";

while($affiche1 = mysql_fetch_array($query1))
{
$id_date = $affiche1['id_date'];

$id.="$id_date <br />";

}


while($affiche2 = mysql_fetch_array($query2))
{
$etat = $affiche2['etat'];

$etat_.="$etat <br />";

}


while($affiche3 = mysql_fetch_array($query3))
{
$jour_debut = $affiche3['jour_debut'];

$debut.="$jour_debut <br />";

}


while($affiche4 = mysql_fetch_array($query4))
{
$jour_fin = $affiche4['jour_fin'];

$fin.="$jour_fin <br />";

}

while($affiche5 = mysql_fetch_array($query5))
{
$id_c = $affiche5['id_date'];

$check.="<input type=\"radio\" name=\"check\" value=\"$id_c\" /><br />";

}
....
Dans une autre page:
Code:
<?
$check1 = $_GET["check"];

echo "$check1";

mysql_connect("*****");
mysql_select_db("localhost");

mysql_query("UPDATE dates SET etat='Occupe' WHERE id_date='$check1' ");

mysql_close();


?>
Merci
 
WRInaute passionné
Mon champ id_date est en
Type: int
taille/valeurs: 11
Attribut: unsigned
nul: not null
extra: auto increment
 
WRInaute accro
Controle ce que tu mets dans ta variable $check1 avant ton UPDATE

Tu peux aussi simplifier ton code de cette manière:

Code:
$query = mysql_query("SELECT * FROM  dates "); 
while($affiche = mysql_fetch_array($query))
{
$id    .= ''.$affiche['id_date'].' <br />';
$etat_ .= ''.$affiche['etat'].' <br />'; 
$debut .= ''.$affiche['jour_debut'].' <br />'; 
.....

}
 
WRInaute passionné
Effectivement la requette est un peut longue :lol: , je l'ai déja simplifié et tout rassemblé dans la boucle.
Par contre quand tu me dit de controler ma variable $check1 .. c'est à dire ? Parce que le "echo" qui suit me sort pourtant le bon "id" 8O !
Merci
 
WRInaute accro
tu as forcement une coquille quelque part, une clef unique sur le champ "etat" peut-etre ?
si en faisant WHERE id_date=1, ca update l'id_date 2 alors réinstalle ma MySQL peut-etre...
 
Discussions similaires
Haut