Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[PHP/MYSQL] : lire et mettre à jour des enregistrements en même temps

1 réponse
Avatar
Christophe Raverdy
Bonjour.

J'espère que ma question est plus en charte ici que sur fclp.

J'ai eu un problème d'encodage 8859-15 / utf8, j'essaye de le corriger.
J'ai fait des essais et à l'écran tout se passe bien. il y a par contre
un problème pour la requête de mise à jour



----------------------------------------------------
je me connecte à la base de données
----------------------------------------------------
$host="localhost";
$user="dvdtheque";
$password="*****";
$database="dvdtheque";
$connexion = mysql_connect($host,$user,$password) or die ("serveur
inaccessible");
$db= mysql_select_db($database, $connexion) or die ("base de données
inaccessible");

----------------------------------------------------
j'exécute une requête "sélection"
----------------------------------------------------
$sql="SELECT `boitier_dvd`.`Id_boitier`,`boitier_dvd`.`Genre`,
`boitier_dvd`.`Libelle`, `boitier_dvd`.`Resume` ";
$sql= $sql . "FROM `boitier_dvd` ";
$sql= $sql . "ORDER BY `boitier_dvd`.`Genre` ASC, `boitier_dvd`.`Libelle`
ASC;";
$result = mysql_query($sql);


----------------------------------------------------
je récupère le nombre de lignes, je traite
chacune d'entre elles dans le tableau $result
et je traite chaque champ dans une boucle interne
----------------------------------------------------

for ($i=0; $i < mysql_num_rows($result); $i++)
{
echo("<tr>");
$row_array = mysql_fetch_row($result);
for ($j = 0; $j < mysql_num_fields($result); $j++)
{
$row_array[$j] = utf8_encode($row_array[$j]);
}


----------------------------------------------------
Le problème intervient ici : je souhaite mettre à
jour l'enregistrement traité
----------------------------------------------------

$sql2 = "UPDATE boitier_dvd SET `Libelle` = $row_array[2], `Genre` =
$row_array[1], `Resume` = $row_array[3] WHERE `Id_boitier` = $row_array
[0];";
mysql_query($sql2);



Le problème est que cette requête est inopérante : me suis-je planté dans
son écriture ? y a-t-il un verrouillage sur la table via le select
initial ? ai-je loupé quelque chose ?

Par avance, merci pour vos écalirages.

--
Dépêchez-vous de voter avant qu'il ne soit trop tard :
<ygezm4n4nt2.fsf@nospam.fr.eu.org>
(publié sur fr.usenet.forums.annonces le 2 mai 2007 à 10:44)

1 réponse

Avatar
Pascal PONCET
Salut,

Christophe Raverdy a écrit :
J'espère que ma question est plus en charte ici que sur fclp.



Effectivement, tu ferais mieux de publier sur "fr.comp.lang.php" pour ce
genre de problème, parce que ça relève plus de PHP que de MySQL.

$sql2 = "UPDATE boitier_dvd SET `Libelle` = $row_array[2], `Genre` =
$row_array[1], `Resume` = $row_array[3] WHERE `Id_boitier` = $row_array
[0];";
mysql_query($sql2);
Le problème est que cette requête est inopérante : me suis-je planté dans
son écriture ?



Je ne crois pas qu'elle soit totalement "inopérante". En fait, tu dois
te retrouver avec seulement le dernier enregistrement mis à jour.
Si on suit ton schéma (mais il y a plus simple), tu devrais utiliser un
tableau à 2 dimensions : $row_array[0][2] pour le 3ème champ du 1er
enregistrement, etc.
Il faut donc mettre ton UPDATE dans une boucle.