Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 14h34   #1
Misoss
Membre à l'essai
 
Inscription : juin 2006
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 112
Points : 23
Points : 23
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 :
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
Misoss est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 15h01   #2
jreaux62
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 3 778
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 46
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 3 778
Points : 7 778
Points : 7 778
Envoyer un message via Skype™ à jreaux62
Bonjour,
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
"Quand le sage montre la lune, le sot regarde le doigt."
Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C).
Site perso Mes tutos DVP
Gestion-Affichage de Nouvelles Affichage en tableau HTML Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 15h43   #3
Misoss
Membre à l'essai
 
Inscription : juin 2006
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 112
Points : 23
Points : 23
@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 :
array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }
Misoss est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 16h01   #4
jreaux62
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 3 778
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 46
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 3 778
Points : 7 778
Points : 7 778
Envoyer un message via Skype™ à jreaux62
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.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
"Quand le sage montre la lune, le sot regarde le doigt."
Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C).
Site perso Mes tutos DVP
Gestion-Affichage de Nouvelles Affichage en tableau HTML Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 17h02   #5
Misoss
Membre à l'essai
 
Inscription : juin 2006
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 112
Points : 23
Points : 23
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 ^^
Misoss est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h27.


 
 
 
 
Partenaires

Hébergement Web