Je Cherche actuellement à optimiser une partie de mon script, en effet je reçois un array() via la méthode GET, et ensuite je contrôle si les données sont déjà existante avant insert dans la base !!!
Le problème c'est que ma méthode exécute plusieurs fois la requêtes, et je sais que c'est pas bon, que l'on peut optimiser tout çà en une seule requête mais je ne sais pas comment.
Donc je demande aux experts de me mettre sur la voie afin que j’exécute une seule requête pour l'ensemble de mon array().
Voici le code :
// definition des variables
$id = $_SESSION['sessionutilisateur'];
// test si get existe et n'est pas null
if(isset($_GET['datasend']) && $_GET['datasend'] != NULL) {
// definition de variable array $datasent recu pour exemple
$datasent = '[
{"link":"http://google.fr/", "aTime":"123456789"},
{"link":"http://google.com/", "aTime":"123456789"},
{"link":"http://google.uk/", "aTime":"123456789"},
{"link":"http://google.ca/", "aTime":"123456789"},
{"link":"http://google.us/", "aTime":"123456789"},
{"link":"http://google.ru/", "aTime":"123456789"}
]';
$someArray=json_decode($datasend, true);
foreach ($someArray as $key => $value) {
$link=$value["link"];
$time=substr($value["aTime"], 0, 10);
// on verifie si le lien n'existe pas déjà par rapport à l'user
$sqlverif = "SELECT * FROM user_link WHERE (idlink='".mysqli_escape_string($db,$link)."' AND id='".$id."')";
$query = @mysqli_query($db,$sqlverif) or die('ERROR SQL !'.mysqli_error($db));
$count_link = @mysqli_num_rows($query);
// condition de test si pas ds la base (si différent de 1 on insert)
if($count_link < 1){
// si pas déjà ds la bdd insertion des donnees ds la base
$sql = 'INSERT INTO user_link VALUES("", "'.mysqli_escape_string($db,$id).'", "'.mysqli_escape_string($db,$link).'", "'.mysqli_escape_string($db,$time).'", vis)';
@mysqli_query($db,$sql) or die('ERROR SQL !'.mysqli_error($db));
} // fin condition de test si existe ds la base
} // fin boucle foreach
} // fin condition get
Merci par avance...