[Résolu] récupérer valeur mysql_fetch_assoc pour un update

Petit nouveau ! | 2 Messages

11 déc. 2011, 23:36

Bonsoir,

Je suis entrain de faire un site d'album photo. Et la je bloque sur la page où on peut modifier les informations des photos.

Alors, j'ai tout d'abord fait un mysql_fetch_assoc pour afficher toute les photos et les informations sur la page.

Et ensuite j'ai essayé de faire un UPDATE en reprenant les valeurs, mais je ne suis pas arrivé ou partielement :-/
$nom=($_SESSION["login"]);
$sql="SELECT *FROM PHOTO P INNER JOIN APPARTENIR A ON P.IDPhoto=A.IDPhoto INNER JOIN CATEGORIE C ON A.IDCategorie=C.IDCategorie WHERE P.login='".$nom."' ";
$sql_exe = mysql_query($sql) or die(mysql_error());

if (mysql_fetch_assoc($sql_exe) ==0) 
{
   $message =  "Aucune photo trouvée, rien à afficher.";
}

while($data = mysql_fetch_assoc($sql_exe)) 
{
        if(isset($_POST["Envoyer"]))
        {
            if(!empty($_POST['new_titre'])) 
            {
                $req = "SELECT titre FROM PHOTO WHERE IDPhoto = '".$data['IDPhoto']."'";
						$result=mysql_query($req)
								or die ('Erreur  :'.mysql_error() );
						$titre = mysql_fetch_array($result);
						$old_titre = $titre['titre'];
                if($old_titre != $_POST['new_titre'])
                {
                    $req3="UPDATE PHOTO SET titre = '".$_POST['new_titre']."' WHERE IDPhoto ='".$data['IDPhoto']."'";
                    $result3=mysql_query($req3) or die ('Erreur lors de la modification de du titre dans la BDD : '.mysql_error() );
                }
                else
                {		
                    $message = 'Le titre saisie est identique à l\'ancien !';			
                }
            }
}
for ($i = mysql_num_rows($sql_exe) - 1; $i >= 0; $i--) 
{
    if (!mysql_data_seek($sql_exe, $i))
    {
        echo "Cannot seek to row $i: " . mysql_error() . "\n";
        continue;
    }

    if (!($data = mysql_fetch_assoc($sql_exe))) 
    {
        continue;
    }
    
     echo '
     <fieldset><legend>'.$data['titre'].'</legend>
     <table id="bloc_form">
     <td><li>Titre</li></td><td><input type="text" name="new_titre" id = "titre" value = "'.$data['titre'].'"></td></tr>
     <tr><td><li>Catégorie</li></td><td><input type="text" name="new_nomCategorie" id = "nomCategorie" value = "'.$data['nomCategorie'].'"></td></tr>
     <tr><td><li>Date de la photo</li></td><td><input type="text" name="new_datePhoto" id = "datePhoto" value = "'.$data['datePhoto'].'"></td></tr>
     <tr><td><li>Description</li></td><td><textarea rows="3" name="new_description" id = "description">'.$data['description'].'</textarea></td></tr>
     <tr><td><p><input type="submit" name="Envoyer" value="Envoyer" id = "valider" /></p></td><td><input type="submit" name="supprimer" value="Supprimer"></td></tr>
     </table>
     </fieldset>';        
}
Modifié en dernier par ekwoue le 17 déc. 2011, 12:22, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 déc. 2011, 08:03

Salut,

1er code mysql_fetch_assoc ne retourne pas zéro, c'est soit false soit un tableau, donc le 1er if n'est pas correct il devrait y avoir un mysql_numrows().

Deuxième code : pourquoi un for avec un mysql_data_seek alors que tu utilise un while (quand même plus clair) dans le 1er code ?

Globalement il faut que tu passe dans le formulaire (ou en session) une référence sur la ou les photos modifiée(s).
Dans le cas de plusieurs photos en même temps il faut utiliser la notation tableau pour nommer les champs html (par exemple name="nom[]") associé à un tableau qui contient la clef primaire qui fait référence à la photo (soit un input de type hidden avec la même notation soit un tableau en session, le principal c'est que tu t'y retrouve et que les deux tableaux aient le même nombre d'elements.

Pour l'update tu boucle sur l'un des tableaux.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

17 déc. 2011, 12:19

Merci beaucoup moogli !! j'ai réussi !