aissam92
Messages postés2Date d'inscriptionvendredi 20 mars 2009StatutMembreDernière intervention30 mars 2009
-
23 mars 2009 à 12:20
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011
-
23 mars 2009 à 12:38
Bonjour,
Je possède une base de données dans laquelle on retrouve un table nommée sites_image. Dans cette table j'ai 3 champs: 'id', 'Site' et 'image'.
J'ai besoin de mettre à jour les enregistrements de cette table régulièrement (les données sont extraites d'un fichier Excel).
Malheuresement le code que j'utilise actuellement ne gère pas les doublons.
Je m'explique:
Supposons que j'ai dans ma base de données 1 enregistrement possédant comme valeurs: id= 1, site=A1000, image=3
Quand j'exécute mon fichier .php, ce dernier va quand même rajouter une ligne même si celle-ci possède les mêmes valeurs que celle déjà existante dans la table.
Au final ça donne 2 enregistrements identiques:
J'ai tenté d'utiliser 2 requêtes successives, la première vide la table et la deuxième la remplit à nouveau (étant débutant, je ne pense pas que cette méthode soit la meilleure à utiliser)
Le problème c'est que la table est bien vidée mais seulement la dernière ligne du fichier Excel est rajoutée et as tous les enregistrements.
Avez vous une requête qui permet de contrôler les doublons???
// pour eviter qu un champs "nom" du fichier soit vide
if ($champs1!='')
{
// nouvel ajout, compteur incrémenté
$cpt++;
// requete et insertion ligne par ligne
// champs1 id en general dc on affecte pas de valeur
// Pour supprimer tous les enregistrements avant d'en rajouter d'autres
// Le problème rencontrée c'est que lorsque la table est vidée, seulement la dernière ligne est ajoutée
//$query2= "DELETE FROM Site_image";
$query = "INSERT INTO Site_image (id,Site,Poids_Image) VALUES('','$champs1','$champs2')";
//$result2= mysql_query($query2);
$result= mysql_query($query);
if (mysql_error())
{
???> ERREUR DE REQUETE SUR LA BASE.
<?php
fclose($fp);
exit();
}
else
{
???><?php echo $liste[0];???>, <?php echo $liste[1];???>
<?php
}
}
}
// fermeture du fichier
fclose($fp);
//on supprime la derniere car elle est vide
$sql =mysql_query("DELETE FROM Site_image WHERE $champs1=''");
//==================
// FIN
//==================*/
???>
<?php echo $cpt;???> valeurs ajoutées dans la table.
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 23 mars 2009 à 12:38
Il faut que tu fasse une requete qui calcul le nombre de ligne contenant deja la reference site = A1000, ainsi si le nombre de ligne est superieur a 0 cela signifie qu'il existe deja un enregistrement.
exemple :
$select = "SELECT * FROM sites_image WHERE site=A1000"; // Construction de la requete
$queryCheck = mysql_query($select, $connect); // Envoi de la requete
$check = mysql_num_rows($queryCheck); // calcul du nombre d'enregistrement de notre requete
if($check!=0){ // si nombre d'enregistrements different de 0
// il y a au moins un enregistrement donc je met le code de redirection par exemple
} else { // sinon
// il n'y a aucun enregistrement donc je met le code de traitement suivant.