Insertion fichier Excel via php a mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insertion fichier Excel via php a mysql

Re: Insertion fichier Excel via php a mysql

par topvision » 22 nov. 2015, 03:21

Excuse pour le retard c’est juste que j’ai perdu ma tablette sur laquelle je me connectais. Oui il ya une colonne idnote(PRIMARY KEY) qui sert d’identifiant, mais l’utilisateur n’est pas censé le savoir comme je l’avais montre sur ma première requête pour le update, il faut une combinaison de $idelevenote et $matierenote pour l’identifier.
En fait je me suis pris autrement en recherchant l’idnote pour faire un update si ca existe déjà dans la base et de faire une insersion s’il y’en a pas. Le voici
<?php	
include('fonctions.inc.php');
if(isset($_POST["submit"]))
{

$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$c = 0;
while(($filesop = fgetcsv($handle, 1024, ";")) !== false)
{	
			{
		    
		$req= mysql_query("select * FROM note where idelevenote='".$filesop[0]."' and matierenote='".$filesop[1]."'  ");
		     
   			 if(mysql_num_rows($req)>0)
    		{  
			$id=mysql_fetch_array($req);
				$idnote=$id['idnote'];
				$idelevenote=$filesop[0];
				$matierenote=$filesop[1];
				$note1=$filesop[2];
				$note2=$filesop[3];
				$note3=$filesop[4];
				$compo1=$filesop[5];
				$trim1=$filesop[6];
				$note4=$filesop[7];
				$note5=$filesop[8];
				$note6=$filesop[9];
				$compo2=$filesop[10];
				$trim2=$filesop[11];

		$sql="UPDATE note SET note1='".
		$note1."', note2='".$note2."',  note3='".$note3."',compo1='".$compo1."', trim1='".$trim1."', note4='".
		$note4."', note5='".$note5."', note6='".$note6."', compo2='".$compo2."', trim2='".$trim2."'
		
		WHERE idelevenote='".$idelevenote."' AND matierenote='".$matierenote."'  ";
					
					if($result=mysql_query($sql))
				{
					echo "<script language='javascript'>";
						echo "alert('Note mise a jour');";
						echo "window.location.replace('../admin/note.php');" ; 
					echo "</script>";
				}
					else 
				{
					echo "<script language='javascript'>";
						echo "alert('Insersion echoue');";
						echo "window.location.replace('../admin/note.php');" ; 
					echo "</script>";
				}
				
			}
			
			else
			{
				$idelevenote=$filesop[0];
				$matierenote=$filesop[1];
				$note1=$filesop[2];
				$note2=$filesop[3];
				$note3=$filesop[4];
				$compo1=$filesop[5];
				$trim1=$filesop[6];
				$note4=$filesop[7];
				$note5=$filesop[8];
				$note6=$filesop[9];
				$compo2=$filesop[10];
				$trim2=$filesop[11];


		$sql="INSERT INTO note VALUES ('','$idelevenote','$matierenote','$note1','$note2', '$note3','$compo1','$trim1',
					'$note4','$note5','$note6','$compo2','$trim2')"; 
					
					
					if($result=mysql_query($sql))
				{
					echo "<script language='javascript'>";
						echo "alert('Note Inserer');";
						echo "window.location.replace('../admin/note.php');" ; 
					echo "</script>";
				}
					else 
				{
					echo "<script language='javascript'>";
						echo "alert('Echec Insersion');";
						echo "window.location.replace('../admin/note.php');" ; 
					echo "</script>";
				}
			}//Fin else
			}//fin ok
			}
			}
?>
Ca marche et je me demande comment le trouvez-vous


--
-- Structure de la table `note`
--

CREATE TABLE IF NOT EXISTS `note` (
`idnote` int(11) NOT NULL,
`idelevenote` int(11) NOT NULL,
`matierenote` varchar(25) NOT NULL,
`note1` varchar(5) NOT NULL,
`note2` varchar(5) NOT NULL,
`note3` varchar(5) NOT NULL,
`compo1` varchar(5) NOT NULL,
`trim1` varchar(6) NOT NULL,
`note4` varchar(5) NOT NULL,
`note5` varchar(5) NOT NULL,
`note6` varchar(5) NOT NULL,
`compo2` varchar(5) NOT NULL,
`trim2` varchar(6) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8;

--
-- Contenu de la table `note`
--

INSERT INTO `note` (`idnote`, `idelevenote`, `matierenote`, `note1`, `note2`, `note3`, `compo1`, `trim1`, `note4`, `note5`, `note6`, `compo2`, `trim2`) VALUES
(1, 1, 'Maths', '10', '11', '12', '11', '11', '12', '13', '13', '11', '12,25'),
(48, 2, 'Maths', '10', '12', '11', '10', '15,75', '13', '12', '12', '12', '12,25'),
(51, 3, 'Maths', '10', '12', '11', '13', '11,50', '12', '11', '', '11', '11,33'),
(52, 4, 'Maths', '10', '14', '', '', '12', '15', '11', '', '12', '12,67'),
(53, 4, 'Philo', '10', '11', '', '0', '7,5', '', '', '', '', '');

--
-- Index pour les tables exportées
--

--
-- Index pour la table `note`
--
ALTER TABLE `note`
ADD PRIMARY KEY (`idnote`),
ADD KEY `idelevenote` (`idelevenote`),
ADD KEY `matierenote` (`matierenote`);

--
-- AUTO_INCREMENT pour les tables exportées
--

--
-- AUTO_INCREMENT pour la table `note`
--
ALTER TABLE `note`
MODIFY `idnote` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=54;
Si c'est bon comment je peux ignorer la 1ière ligne pour avoir des titres

Re: Insertion fichier Excel via php a mysql

par topvision » 18 nov. 2015, 19:06

pour ici c'est les deux qui conditionne $idelevenote et $matierenote quil doit verifier

Re: Insertion fichier Excel via php a mysql

par @rthur » 17 nov. 2015, 09:42

J'ai essayer avec le REPLACE mais la aussi problème reste le même il duplique les entrées
C'est probablement qu'il te manque un index dans ta table.
la fonction REPLACE de MySQL [...] fonctionne exactement comme INSERT, mais fera l'équivalent d'un UPDATE dans le cas où la table dispose d'un index UNIQUE (un PRIMARY KEY sur id par exemple).

Re: Insertion fichier Excel via php a mysql

par topvision » 17 nov. 2015, 09:32

J'ai essayer avec le REPLACE mais la aussi problème reste le même il duplique les entrées
include ("connection.php");

if(isset($_POST["submit"]))
{

$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$c = 0;
while(($filesop = fgetcsv($handle, 1024, ";")) !== false)
{
$idelevenote = $filesop[0];
$matierenote = $filesop[1];
$note1 = $filesop[2];
$note2 = $filesop[3];
$note3 = $filesop[4];
$compo1 =$filesop[5];
$trim1 = $filesop[6];
$note4 = $filesop[7];
$note5 = $filesop[8];
$note6 = $filesop[9];
$compo2 =$filesop[10];
$trim2 = $filesop[11];
$sql = mysql_query("REPLACE INTO note (idelevenote, matierenote, note1, note2, note3, compo1, trim1, note4, note5, note6, compo2, trim2)
VALUES ('$idelevenote','$matierenote','$note1','$note2','$note3','$compo1','$trim1','$note4','$note5','$note6','$compo2','$trim2')");
$c = $c + 1;
}
if($sql){
echo "You database has imported successfully. You have inserted ". $c ." recoreds";
}else{
echo "Sorry! There is some problem.";
}
}

Re: Insertion fichier Excel via php a mysql

par @rthur » 17 nov. 2015, 00:51

Bonjour,

Si tes index sont bien fait, tu peux utiliser la fonction MySQL REPLACE au lieu de INSERT
http://www.journaldunet.com/developpeur ... lace.shtml

Re: Insertion fichier Excel via php a mysql

par or 1 » 17 nov. 2015, 00:45

"select * FROM note where idelevenote='".$filesop[0]."' and matierenote='".$filesop[1]."' "
cela aboutit bien à ce qui est attendu ?

Insertion fichier Excel via php a mysql

par topvision » 17 nov. 2015, 00:07

Bonjour,
Je voudrai insérer un fichier Excel.csv via php a ma base MySQL mais j'ai 2 soucis
1:-) L'insertion se passe correctement pour la première fois mais si je répète l'action il réinsére les données et crée des doublons alors que je veux qu'il vérifie si l'identifiant existe d'abord et si oui qu'il écrase ou fasse une mise à jour
2:-) comment faire pour gérer une ligne d'entête
Voici mon code
form name="import" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
include ("connection.php");

if(isset($_POST["submit"]))
{

$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$c = 0;
while(($filesop = fgetcsv($handle, 1024, ";")) !== false)
{

$req= mysql_query("select * FROM note where idelevenote='".$filesop[0]."' and matierenote='".$filesop[1]."' ");

if(mysql_num_rows($req)==0)
{
$idelevenote = $filesop[0];
$matierenote = $filesop[1];
$note1 = $filesop[2];
$note2 = $filesop[3];
$note3 = $filesop[4];
$compo1 =$filesop[5];
$trim1 = $filesop[6];
$note4 = $filesop[7];
$note5 = $filesop[8];
$note6 = $filesop[9];
$compo2 =$filesop[10];
$trim2 = $filesop[11];
$sql = mysql_query("INSERT INTO note (idelevenote, matierenote, note1, note2, note3, compo1, trim1, note4, note5, note6, compo2, trim2)
VALUES ('$idelevenote','$matierenote','$note1','$note2','$note3','$compo1','$trim1','$note4','$note5','$note6','$compo2','$trim2')");
$c = $c + 1;
}
else{

$idelevenote = $filesop[0];
$matierenote = $filesop[1];
$note1 = $filesop[2];
$note2 = $filesop[3];
$note3 = $filesop[4];
$compo1 =$filesop[5];
$trim1 = $filesop[6];
$note4 = $filesop[7];
$note5 = $filesop[8];
$note6 = $filesop[9];
$compo2 =$filesop[10];
$trim2 = $filesop[11];

$sql="UPDATE note SET note1='".
$note1."', note2='".$note2."', note3='".$note3."',compo1='".$compo1."', trim1='".$trim1."', note4='".
$note4."', note5='".$note5."', note6='".$note6."', compo2='".$compo2."', trim2='".$trim2."'

WHERE idelevenote='".$idelevenote."' AND matierenote='".$matierenote."' ";
}

if($sql){
echo "You database has imported successfully. You have inserted ". $c ." recoreds";
}else{
echo "Sorry! There is some problem.";
}
}
}