IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mise à jour entrée BDD fonction UPDATE


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut Mise à jour entrée BDD fonction UPDATE
    Bonjour,

    Je cherche à effectuer les fonctions suivantes;
    1. Nouvelle photo --> Création d'une entrée + copie de la photo dans le dossier
    2. Photo existante --> Mise à jour de title dans la BDD + Renommer la photo
    3. Supprimer l'entrée de la BDD + Supprimer la photo



    1 et 3 fonctionnent bien.

    PROBLEME: 2 n'effectue que le renommage du fichier photo. L'entrée dans la BDD n'est pas changé.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    if (isset($_POST['submit'])) {
    	$link = mysql_connect($hostname, $username, $password);
    	mysql_select_db($database, $link);
     
    	$titles = isset($_POST['title']) ? $_POST['title'] : array();
    	$delFlags = isset($_POST['delFlag']) ? $_POST['delFlag'] : array();
    	$imageNames = isset($_POST['imageName']) ? $_POST['imageName'] : array();
     
    	$order = 1;
    	for ($i = 0; $i < count($titles); $i++) {
    		// local variables
    		$title = addslashes($titles[$i]);
    		$delFlag = $delFlags[$i];
    		$imageName = $imageNames[$i];
    		$imageName = @explode(',', $imageName);
    		$status = $imageName[1];
    		$imageName = $imageName[0];
    		$imgid = substr($imageName, 0, strlen($imageName) - 4);
    		$imgid = substr($imgid, 6);
     
    		// check the status and do accordingly
    		if ($status == 'new' && $delFlag == '1') {
    			$query = "INSERT INTO images(`order`, `title`) VALUES ($order, '$title')";
    			mysql_query($query);
     
    			// nouvelle entrere bdd OK
    			$imgid = mysql_insert_id();
    			$new_image_name = $title .'.jpg';
     
    			// Copie l'image dans le dossier photos OK
    			copy('photos/temp/' . $imageName, 'photos/' . $new_image_name);
    			// Vire le fichier temporaire OK
    			unlink('photos/temp/' . $imageName);
     
    			// image suivante OK
    			$order++;
    		}
     
    		else if ($status == 'old' && $delFlag == '1') {
    			$new_image_name = $title .'.jpg';
    //Mise à jour de title dans BDD PAS OK
    			$query = "UPDATE images SET `order` = '$order', `title` = '$new_image_name' WHERE `title` = '$imageName'";
    			mysql_query($query);
     
     
    			// renomme l'image dans le dossier photos OK
    			rename('photos/' . $imageName, 'photos/' . $new_image_name);
    Auriez vous une idée?

    J'ai l'impression que le problème vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else if ($status == 'old' && $delFlag == '1') {
    			$new_image_name = $title .'.jpg';
    			$query = "UPDATE images SET `order` = '$order', `title` = '$new_image_name' WHERE `title` = '$imageName'";
    			mysql_query($query);
    Mais je ne parvient pas à trouver mon erreur.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as contrôlé la requête finale ? regardé s'il y avait des erreurs ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "UPDATE images SET `order` = '" . mysql_real_escape_string($order) . "', `title` = '" . mysql_real_escape_string($new_image_name) . "' WHERE `title` = '" . mysql_real_escape_string($imageName) . "'";
    			mysql_query($query);
    echo $query;
    echo mysql_error;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut
    J'ai l'erreur suivante quand j'uploade une image:

    PHP Notice: Use of undefined constant mysql_error - assumed 'mysql_error' in /var/www/chette/photo-manager-save.php on line 48
    Idem quand je tente de modifier lnom de la photo.

    Ce nom change bien au niveau du fichier, mais pas dans title niveau BDD

    La ligne 48 correspond à la dernière de ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    else if ($status == 'old' && $delFlag == '1') {
    			$new_image_name = $title .'.jpg';
     
    			$query = "UPDATE images SET `order` = '" . mysql_real_escape_string($order) . "', `title` = '" . mysql_real_escape_string($new_image_name) . "' WHERE `title` = '" . mysql_real_escape_string($imageName) . "'";
    			mysql_query($query);
    			echo $query;
    			echo mysql_error;

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut
    Je ne comprends pas...

    Je récupère pourtant la chaine de caractère du champ title sous la variable $titles

    Puis je corrige cette variable en $title

    Enfin, j'ajoute .jpg à $title, ce qui me donne $new_image_name.

    J'ai juste créé un $new_image_name_bdd pour éviter d'avoir des .jpg dans ma bdd.

    J'obtiens ceci, qui ne fontionne toujours pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php 
    include('config2.php');
     
    if (isset($_POST['submit'])) {
    $link = mysql_connect($hostname, $username, $password);
    mysql_select_db($database, $link);
     
    $titles = isset($_POST['title']) ? $_POST['title'] : array();
    $delFlags = isset($_POST['delFlag']) ? $_POST['delFlag'] : array();
    $imageNames = isset($_POST['imageName']) ? $_POST['imageName'] : array();
     
    $order = 1;
    for ($i = 0; $i < count($titles); $i++) { 
    // local variables
    $title = addslashes($titles[$i]);
    $delFlag = $delFlags[$i];
    $imageName = $imageNames[$i];
    $imageName = @explode(',', $imageName);
    $status = $imageName[1];
    $imageName = $imageName[0];
    $imgid = substr($imageName, 0, strlen($imageName) - 4);
    $imgid = substr($imgid, 6);
     
    // check the status and do accordingly
    if ($status == 'new' && $delFlag == '1') {
    $query = "INSERT INTO images(`order`, `title`) VALUES ($order, '$title')";
    mysql_query($query);
     
    // nouvelle entree bdd OK
    $imgid = mysql_insert_id();
    $new_image_name = $title .'.jpg';
     
    // Copie l'image dans le dossier photos OK
    copy('photos/temp/' . $imageName, 'photos/' . $new_image_name);
    // Vire le fichier temporaire OK
    unlink('photos/temp/' . $imageName);
     
    // image suivante OK
    $order++;
    }
     
    else if ($status == 'old' && $delFlag == '1') {
    $new_image_name = $title .'.jpg';
    $new_image_name_bdd = $title ;
     
    $query = "UPDATE images SET `order` = '" . mysql_real_escape_string($order) . "', `title` = '" . mysql_real_escape_string($new_image_name_bdd) . "' WHERE `title` = '" . mysql_real_escape_string($imageName) . "'";
    mysql_query($query);
     
    echo $query;
    echo mysql_error;
     
    // renomme l'image dans le dossier photos OK
    rename('photos/' . $imageName, 'photos/' . $new_image_name);
     
     
    // increment the order variable
    $order++;					
    }
     
     
     
    // Vire l'image et l'entree de la base de donnee OK
    else if ($status == 'old' && $delFlag == '0') {
    $query = "DELETE FROM images WHERE title = '$title'";
    mysql_query($query);
     
    $image_name = $title . '.jpg';
    unlink('photos/' . $image_name); 
    }
    }
    }
    header('Location: pics.php');
    ?>

    Il s'agit de la ligne 46 qui foire lamentablement...Seul le nom de l'image est changé, mais rien ne se passe dans la BDD

Discussions similaires

  1. Mise à jour entre tables...
    Par brisbris dans le forum Access
    Réponses: 11
    Dernier message: 02/05/2006, 13h54
  2. comment effectuer des mises à jour entre classeurs excel ?
    Par benjamin.garbolino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2006, 00h51
  3. Mise à jour Champ en fonction liste modifiable
    Par lito74 dans le forum Access
    Réponses: 2
    Dernier message: 30/01/2006, 14h37
  4. [mise à jour tableau en fonction du button radio]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/12/2005, 11h41
  5. [CR5][VB6][MSAccess][WinXP] PB de mise à jour de BDD
    Par Gérard Connier dans le forum SDK
    Réponses: 3
    Dernier message: 25/10/2003, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo