[RESOLU] Insert base sql + serveur

Mammouth du PHP | 687 Messages

18 oct. 2012, 08:26

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\" />";
//------------------------------------------------------------------------------------------
}
?>

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 09:18

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.

Mammouth du PHP | 687 Messages

18 oct. 2012, 09:22

ah ok, merci!
donc il faut que je fasse comment ... :-(

merci beaucoup

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 09:28

...Sauf erreur de ma part, tu ne recupères pas l'id après l'insert : $id = mysql_insert_id();...
Que dire de plus ?

Mammouth du PHP | 687 Messages

18 oct. 2012, 09:30

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 :-(

Mammouth du PHP | 687 Messages

18 oct. 2012, 09:43

il faut que je le mette ou : $id = mysql_insert_id(); ???

Merci

Mammouth du PHP | 687 Messages

18 oct. 2012, 09:51

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

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 09:56

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.

Mammouth du PHP | 687 Messages

18 oct. 2012, 10:01

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);	
 	}
}

Mammouth du PHP | 687 Messages

18 oct. 2012, 10:04

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?

Mammouth du PHP | 687 Messages

18 oct. 2012, 10:15

voila maintenant l'insert se fait correctement mais pas l'upload!
j'y comprends rien...

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 13:56

        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...