Page 1 sur 1

Insert base sql + serveur

Posté : 18 oct. 2012, 08:26
par orell1
Bonjour à tous,
j'ai un petit soucis d'upload sur mon serveur et ma base de données...
En effet lorsque j'essaie d'ajouter une photo (champs "photo") ou un plan en pdf (champs "plan_bien") l'upload ne se fait du premier coup, en effet il faut que je créé une première fois une fiche qui viendra compléter la base de données, ensuite j'enregistre pour que tous les éléments soient pris en compte par la base, lorsque les enregistrement sont faits, je reviens sur la fiche créée pour la modifier et là, lorsque l'upload du plan et de la photo fonctionne...

Bizarre non?
Je pense que c'est un mini problème, quelqu'un peut regarder svp?

Merci par avance.
Voici le fichier php qui permet d'insérer dans le serveur les fichiers et dans la base sql les infos :
<?php


//--------les includes des fonctions permettent le bon fonctionnement du site-------------- 
include "include_fns.php";
//-----------------------------------------------------------------------------------------
// ------------------------------- recuperation des variables -----------------------------
	 $story = $_POST['story'];
	
	$id = $_POST['id'];
	//$photo = $_POST['photo'];
	$titre = strtoupper(addslashes(trim($_POST['titre'])));
	$lieux = $_POST['lieux'];
	$nbre_lots = $_POST['nbre_lots'];
	$livraison = addslashes(trim($_POST['livraison']));
	$type = strtoupper(addslashes(trim($_POST['type'])));
	$num_lot = ($_POST['num_lot']);
	$genre = $_POST['genre'];
	$etage = strtoupper(addslashes(trim($_POST['etage'])));
	$orientation = addslashes(trim($_POST['orientation']));
	$avec = addslashes(trim($_POST['avec']));
	$surface_fiscale = $_POST['surface_fiscale'];
	$surface_habitable = $_POST['surface_habitable'];
	$surface_jardin = $_POST['surface_jardin'];
	$surface_terasse = $_POST['surface_terasse'];
	$surface_loggia = $_POST['surface_loggia'];
	$surface_cave = $_POST['surface_cave'];

	//$num_dossier = round(rand(0, time())/25000);
	//$num_saisie = round(time()/1500000);

	$ht = strtoupper(addslashes(trim($_POST['ht'])));
	$tva = strtoupper(addslashes(trim($_POST['tva'])));
	$immobilier = strtoupper(addslashes(trim($_POST['immobilier'])));
	$prix_pack_1 = strtoupper(addslashes(trim($_POST['prix_pack_1'])));
	$prix_pack_2 = strtoupper(addslashes(trim($_POST['prix_pack_2'])));
	$loyer_scellier_15 = $_POST['loyer_scellier_15'];
	$loyer_scellier_9 = $_POST['loyer_scellier_9'];
	
	$adresse_programme = addslashes($_POST['adresse_programme']);
	$num_permis_construction = addslashes($_POST['num_permis_construction']);
	$permis_delivre = addslashes($_POST['permis_delivre']);
	$adresse_notaire = addslashes($_POST['adresse_notaire']);
	
	$signature_previsionnelle = addslashes($_POST['signature_previsionnelle']);
	
	$reference = addslashes($_POST['reference']);
	

//-----------------------------------------------------------------------------------------
// || !$_POST['telephone'] || !$_POST['adresse'] || !$_POST['code_postal'] || !$_POST['ville'] || !$_POST['num_siret']
//-------------- verifie la presence des variables sinon affiche message erreur -----------
if (!$_POST['reference']) {
   			    
	echo "<div id=\"ruffin_message\">".IMPOSSIBLE_POURSUIVRE_SAISIE_INCOMPLETE." !<br />";
       	echo "<a href=\"$_SERVER[HTTP_REFERER]\">".RETOUR."</a></div><br />";
//-----------------------------------------------------------------------------------------

//-------------------- affichage du bas de page et quitte le programme --------------------
    	include "bas.php";	
    	exit();
}
else {
//-----------------------------------------------------------------------------------------

//--------------------- connexion db requete sql sur table articles -----------------------
    $conn = db_connect();
//-----------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------
	if ($id) {
		
		$sql = "update ".PROGRAMMES." set  titre = '$titre', lieux = '$lieux', nbre_lots = '$nbre_lots', livraison = '$livraison', type = '$type', num_lot = '$num_lot', genre = '$genre', etage = '$etage', orientation = '$orientation', avec = '$avec', surface_fiscale = '$surface_fiscale', surface_habitable = '$surface_habitable', surface_jardin = '$surface_jardin', surface_terasse = '$surface_terasse', surface_loggia = '$surface_loggia', surface_cave = '$surface_cave', ht = '$ht', tva = '$tva', immobilier = '$immobilier', prix_pack_1 = '$prix_pack_1', prix_pack_2 = '$prix_pack_2', loyer_scellier_15 = '$loyer_scellier_15', loyer_scellier_9 = '$loyer_scellier_9', adresse_programme = '$adresse_programme', num_permis_construction = '$num_permis_construction',  permis_delivre = '$permis_delivre', adresse_notaire = '$adresse_notaire', signature_previsionnelle = '$signature_previsionnelle', reference = '$reference' where id = '$id'";
		
	$result = @mysql_query($sql, $conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	
	if (!$result) {
	echo "<div id=\"ruffin_message\">".ERREUR_REQUETE." <PRE>$sql</PRE><br />";
       	echo "<a href=\"$_SERVER[HTTP_REFERER]\">".RETOUR."</a></div><br />";
  exit();
}
	}
	else {
		//$num_client = round(rand(1500, time())/500000);
		//$username = $_SESSION["administrateur"] or $_SESSION["utilisateur"];
$sql = "insert into ".PROGRAMMES." values ('', '','', '$titre', '$lieux', '$nbre_lots', '$livraison', '$type', '$num_lot', '$genre', '$etage', '$orientation', '$avec', '$surface_fiscale', '$surface_habitable', '$surface_jardin', '$surface_terasse', '$surface_loggia', '$surface_cave', '$ht', '$tva', '$immobilier', '$prix_pack_1', '$prix_pack_2', '$loyer_scellier_15', '$loyer_scellier_9', '$adresse_programme', '$num_permis_construction',  '$permis_delivre', '$adresse_notaire', '$signature_previsionnelle', '$reference')";

		//$date_limite = (time()+(86400 * 364));
//		$sql_dossier = "insert into ".ENTREPRISES_DOSSIERS." values ('', '$num_dossier', '$date_limite', '$num_saisie', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '$num_client')";
//		$resultat_dossier = @mysql_query($sql_dossier, $conn);
	//}
		$result = @mysql_query($sql, $conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
//-----------------------------------------------------------------------------------------
	//------------------------------------- upload de la photo ------------------------------------
if (isset($_FILES['photo'])) {
	$tmp_file = $_FILES['photo']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
	   	$filename = "galerie_programmes/".$_FILES['photo']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".PROGRAMMES." set photo = '$filename' where id = '$id'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
//-----------------------------------------------------------------------------------------
	//------------------------------------- upload du plan ------------------------------------
if (isset($_FILES['plan_bien'])) {
	$tmp_file = $_FILES['plan_bien']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
	   	$filename = "galerie_programmes/plans/".$_FILES['plan_bien']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".PROGRAMMES." set plan_bien = '$filename' where id = '$id'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
	
//----------------------si la requete n'aboutie pas message erreur ------------------------
if (!$result) {
	echo "<div id=\"ruffin_message\">".ERREUR_REQUETE." <PRE>$sql</PRE><br />";
       	echo "<a href=\"$_SERVER[HTTP_REFERER]\">".RETOUR."</a></div><br />";
  exit();
}
//------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------
    include "bas.php";	
   echo "<meta http-equiv=\"refresh\" content=\"1;url=gestion_liste_fiches_programmes.php\" />";
//------------------------------------------------------------------------------------------
}
?>

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:18
par Mazarini
Bonjour,

Sauf erreur de ma part, tu ne recupères pas l'id après l'insert : $id = mysql_insert_id();
Donc les updates se font avec id = 0 ou false et ne trouve rien.

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:22
par orell1
ah ok, merci!
donc il faut que je fasse comment ... :-(

merci beaucoup

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:28
par Mazarini
...Sauf erreur de ma part, tu ne recupères pas l'id après l'insert : $id = mysql_insert_id();...
Que dire de plus ?

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:30
par orell1
l'update fonctionne bien c'est l'insert int qui ne fonctionne pas...
je suis obligé de faire un uptage pour que les fichiers soient pris en compte :-(

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:43
par orell1
il faut que je le mette ou : $id = mysql_insert_id(); ???

Merci

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:51
par orell1
Ok j'ai réussi à le placer pour l'upload de la photo, en recanche ça ne fonctionne pas pour l'upload du plan :
	//------------------------------------- upload de la photo ------------------------------------
if (isset($_FILES['photo'])) {
	$tmp_file = $_FILES['photo']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
		$id_photo = mysql_insert_id();
	   	$filename = "galerie_programmes/".$_FILES['photo']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set photo = '$filename' where id = '$id_photo'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
//-----------------------------------------------------------------------------------------
	//------------------------------------- upload du plan ------------------------------------
if (isset($_FILES['plan_bien'])) {
	$tmp_file = $_FILES['plan_bien']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
		$id_plan = mysql_insert_id();
	   	$filename = "galerie_programmes/plans/".$_FILES['plan_bien']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set plan_bien = '$filename' where id = '$id_plan'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
merciiii

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 09:56
par Mazarini
Tu fais un update lorsque $id n'est pas renseigné et un insert dans le cas contraire.
S'il faut renseigner l'id, c'est dans le traitement ou tu fais l'insert et uniquement dans le cas de l'insert. Et bien sur forcément avant les updates qui suivent l'insert.

A toi de regarder dans la doc comment marche mysql_insert_id(). Il doit y avoir des exemples. Je ne peux/veux pas écrire le code à ta place.

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 10:01
par orell1
ok.
Ce que je ne comprends pas c'est que désormais l'insert fonctionne avec :
if (isset($_FILES['photo'])) {
	$tmp_file = $_FILES['photo']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
		$id_photo = mysql_insert_id();
	   	$filename = "galerie_programmes/".$_FILES['photo']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set photo = '$filename' where id = '$id_photo'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
mais pas pour l'upload du plan... :-(
//------------------------------------- upload du plan ------------------------------------
if (isset($_FILES['plan_bien'])) {
	$tmp_file = $_FILES['plan_bien']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {
		$id_plan = mysql_insert_id();
	   	$filename = "galerie_programmes/plans/".$_FILES['plan_bien']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set plan_bien = '$filename' where id = '$id_plan'";
    		$result = @mysql_query($sql, $conn);	
 	}
}

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 10:04
par orell1
Ok j'ai trouvé, j'ai ressorti de IF : $id = mysql_insert_id();

ce qui donne:
$id = mysql_insert_id();
	//------------------------------------- upload de la photo ------------------------------------
if (isset($_FILES['photo'])) {
	$tmp_file = $_FILES['photo']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {

	   	$filename = "galerie_programmes/".$_FILES['photo']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set photo = '$filename' where id = '$id'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
//-----------------------------------------------------------------------------------------
	//------------------------------------- upload du plan ------------------------------------
if (isset($_FILES['plan_bien'])) {
	$tmp_file = $_FILES['plan_bien']['tmp_name'];
	if (($tmp_file) && ($tmp_file != "none")) {

	   	$filename = "galerie_programmes/plans/".$_FILES['plan_bien']['name'];
		move_uploaded_file ($tmp_file, $filename);
		
		$conn = db_connect();	
    		$sql = "update ".RUFFIN_PROGRAMMES." set plan_bien = '$filename' where id = '$id'";
    		$result = @mysql_query($sql, $conn);	
 	}
}
	
Est-ce bien cela?

Re: Insert base sql + serveur

Posté : 18 oct. 2012, 10:15
par orell1
voila maintenant l'insert se fait correctement mais pas l'upload!
j'y comprends rien...

Re: [RESOLU] Insert base sql + serveur

Posté : 18 oct. 2012, 13:56
par Mazarini
        if ($id) {
... (update)
}
        else {
                //$num_client = round(rand(1500, time())/500000);
                //$username = $_SESSION["administrateur"] or $_SESSION["utilisateur"];
$sql = "insert into ".PROGRAMMES." values ('', '','', '$titre', '$lieux', '$nbre_lots', '$livraison', '$type', '$num_lot', '$genre', '$etage', '$orientation', '$avec', '$surface_fiscale', '$surface_habitable', '$surface_jardin', '$surface_terasse', '$surface_loggia', '$surface_cave', '$ht', '$tva', '$immobilier', '$prix_pack_1', '$prix_pack_2', '$loyer_scellier_15', '$loyer_scellier_9', '$adresse_programme', '$num_permis_construction',  '$permis_delivre', '$adresse_notaire', '$signature_previsionnelle', '$reference')";

                //$date_limite = (time()+(86400 * 364));
//              $sql_dossier = "insert into ".ENTREPRISES_DOSSIERS." values ('', '$num_dossier', '$date_limite', '$num_saisie', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '$num_client')";
//              $resultat_dossier = @mysql_query($sql_dossier, $conn);
        //}
                $result = @mysql_query($sql, $conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
                $id = mysql_insert_id(); // c'est ici, juste après l'insert
}
...
Essayes de comprendre pourquoi il faut le mettre la...