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 :

Double entrée dans la base [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Points : 73
    Points
    73
    Par défaut Double entrée dans la base
    Bonjour,

    Cela plusieurs jours que je planche sur un petit soucis avec un script d’actualitée, je tourne donc vers vous pour que vous puissiez m'aider ^^
    Le script me génère deux entrées dans la BDD quand je poste l'actu avec une image. une entrée avec l'image uppé, et une avec la variable redéfinie avec l'image 'noview'.
    (alors que si je post une actu sans image pas de soucis le script ne fais bien qu'une seul entrée )

    Fonctionnement :
    Je peux poster un actualité avec ou sans image.

    Avec image :
    si il y'a une image, je la up, j'en crée une miniature, et j'enregistre dans la BDD.

    Sans image :
    je remplace l'array de variable $img, par une image définie 'noview', et j'enregistre dans la BDD

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    $caract  = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
    $replace  = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ð','ñ','ò','ó','ô','õ','ö','ù');
    $title = str_replace($caract, $replace, ucfirst(strtolower(($_POST['title']))));
    $news = str_replace($caract, $replace, $_POST['news']);
    $active = $_POST['active'];
    $img=($_FILES['mon_image']);
    $category = $_POST['category'];
     
    if($action == 'add'){
    	// Ajout sans photo
    	if(!empty($img)){
    		$img='noview.png';
    		mysql_connect($sql_host,$sql_user,$sql_pass) or die("Erreur de connexion au serveur...<br />". mysql_error());
    		mysql_select_db($sql_data) or die("Erreur de connexion a la base de donnees...<br />". mysql_error());
    		mysql_query("INSERT INTO br_news VALUES('', '$active', '$category', '$title', '$img','$news', '" . time() . "')") or die("Erreur d'enregistrement dans la base de donnee...<br />". mysql_error());
    		mysql_close();
    		echo '<i><a href="list_actu.php" class="lien">< Retour</a></i><br />';
    	}	
     
     
     
    //Ajout avec photo
    	$dir = '../images/actu/';
    	$dir_mini = '../images/actu/mini/';
    	$ratio = 300;
    	if (empty($_FILES['mon_image']['tmp_name'])) {
    		// si oui, on affiche un petit message d'erreur
    		$erreur = 'Aucun fichier envoye.';
    	}
    	else {
    		$tableau = @getimagesize($_FILES['mon_image']['tmp_name']);
    		if ($tableau == FALSE) {
    			unlink($_FILES['mon_image']['tmp_name']);
    			$erreur = 'Votre fichier n\'est pas une image.';
    		}
    		else {
    			if ($tableau[2] == 2 || $tableau[2] == 3) {
    				if (is_file('../images/gallerie/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
    				else $file_upload = $_FILES['mon_image']['name'];
     
    				copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);
     
     
    				if ($tableau[2] == 2) {
     
    					$src = imagecreatefromjpeg($dir.'/'.$file_upload);
    					if ($tableau[0] > $tableau[1]) {
    						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
    						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
    					}
    					else {
    						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
    						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
    					}
    					// on copie notre fichier g?n?r? dans le r?pertoire des miniatures
    					imagejpeg ($im, $dir_mini.'/'.$file_upload);
    				}
    				elseif ($tableau[2] == 3) {
    					$src = imagecreatefrompng($dir.'/'.$file_upload);
    					if ($tableau[0] > $tableau[1]) {
    						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
    						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
    					}
    					else {
    						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
    						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
    					}
    					imagepng ($im, $dir_mini.'/'.$file_upload);
    				}
     
    				$img=$file_upload;
     
    				mysql_connect($sql_host,$sql_user,$sql_pass) or die("Erreur de connexion au serveur...<br />". mysql_error());
    				mysql_select_db($sql_data) or die("Erreur de connexion a la base de donnees...<br />". mysql_error());
    				mysql_query("INSERT INTO br_news VALUES('', '$active', '$category', '$title', '$img','$news', '" . time() . "')") or die("Erreur d'enregistrement dans la base de donnee...<br />". mysql_error());
    				mysql_close();				
    				exit();
     
    				echo '<i><a href="list_actu.php" class="lien">< Retour</a></i><br />';
    			}
    			else {
    				unlink($_FILES['mon_image']['tmp_name']);
    				$erreur = 'Votre image est d\'un format non supporte.';
    			}
    		}
    	}

    Merci pour votre aide & passer de bonnes fêtes

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Points : 73
    Points
    73
    Par défaut
    @jreaux62, il ne manquerait pas quelque chose à ta réponse ?

    Si je met,
    le script ne m'enregistre pas la l'actualité sans image car Array n'est pas vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je pense que tu as mis le doigt dessus, sans en prendre conscience :
    $img (autrement dit $_FILES['mon_image']) n'est jamais empty !
    Donc : qu'il y ait une image à télécharger ou pas, tu crées l'image "noview".

    C'est la position même de tes tests (if...) qu'il faut revoir.

    Perso, je m'y prend autrement :
    1/ INSERT en BdD des valeurs "text" (+ image "noview.png", par défaut)
    2/ récupération du dernier id inséré : mysql_insert_id()
    3/ traitement "file" : image uploadée ? on modifie (UPDATE) le champ image en BdD.

    N.B. mysql_ est obsolète : lui préférer mysqli_ ou PDO.
    Dernière modification par Invité ; 30/12/2012 à 17h12.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    C'est la position même de tes tests (if...) qu'il faut revoir.
    Exact c'est good j'avais pas tilter que je pouvais imbriquer autrement. merci

    Citation Envoyé par jreaux62 Voir le message
    Perso, je m'y prend autrement :
    1/ INSERT en BdD des valeurs "text" (+ image "noview.png", par défaut)
    2/ récupération du dernier id inséré : mysql_insert_id()
    3/ traitement "file" : image uploadée ? on modifie (UPDATE) le champ image en BdD.
    A mon goût faire un Insert, puis un Update, cela viens à faire des opérations au serveur pour rien, si on peut lui insérer directement les bonnes valeurs

    Citation Envoyé par jreaux62 Voir le message
    N.B. mysql_ est obsolète : lui préférer mysqli_ ou PDO.
    Tout dépend de la vétusté de l'installation, et sa c'est pas moi qui gère mais merci comme même ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 16/09/2011, 01h38
  2. [Conception] double ajout dans la base
    Par cell dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/06/2006, 10h25
  3. Dernière entrée dans une base de données
    Par ploxien dans le forum JDBC
    Réponses: 1
    Dernier message: 10/05/2006, 15h30
  4. [MySQL] Suppresion d'une entrée dans une base de donnée.
    Par bullrot dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/03/2006, 20h33
  5. Réponses: 4
    Dernier message: 17/01/2006, 16h53

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