Duplicate [Résolu]

mouhsine.saoud 14 Messages postés jeudi 21 mai 2015Date d'inscription 17 janvier 2016 Dernière intervention - 8 janv. 2016 à 01:53 - Dernière réponse : mouhsine.saoud 14 Messages postés jeudi 21 mai 2015Date d'inscription 17 janvier 2016 Dernière intervention
- 9 janv. 2016 à 00:04
Bonjour,

J'ai mis un code en utilisant $mysqli_affected_rows, pour chercher du duplicate avant l insertion mais j ai quelques errors :
Tel : Notice: Trying to get property of non-object
et : Notice: Undefined variable: datas

Merci pour les conseils :-)



$datas['task_name'] = $dbObjectMysqli->real_escape_string($_POST['name']);



if ($datas['task_name']->mysqli_affected_rows == 0) {
print "<br>Error! <p></p>";
echo "" .$datas['task_name']. " already exists in the Database";
print "<p></p>Please check the Name and try again";
unset($_POST);
unset($datas);
include 'index.php';
$page_template = 'task_add.php';
}

Afficher la suite 

4 réponses

Répondre au sujet
jordane45 19221 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par jordane45 le 8/01/2016 à 02:02
+1
Utile
3
Bonjour,

Pour commencer .... il nous faudrait les messages d'erreur EXACT (avec le numéro de ligne par exemple....)


Et puis....
$datas['task_name']->mysqli_affected_rows


->mysqli_affected_rows s'applique sur un "objet" ... suite à une requête !

Retourne le nombre de lignes affectées par la dernière requête INSERT, UPDATE, REPLACE ou DELETE associée au paramètre link.

Je doute que $datas['task_name'] soit cet objet !
Et puis.. je ne vois pas la requête en question .... ni même la connexion à ta BDD dans le bout de code que tu nous as donné.





Cordialement, 
Jordane                                                                 
Cette réponse vous a-t-elle aidé ?  
mouhsine.saoud 14 Messages postés jeudi 21 mai 2015Date d'inscription 17 janvier 2016 Dernière intervention - 8 janv. 2016 à 02:42
Les erreurs :
Notice: Trying to get property of non-object in C:\wamp\www\modules\Task\actions\index.php on line 41

Notice: Undefined variable: datas in C:\wamp\www\modules\Task\actions\index.php on line 52

Le code tt entier :-)

<?php
$action = 'display';

if (isset($_REQUEST['action']))
{
$action = $_REQUEST['action'];
}

switch($action)
{
default:
case 'display':
// Affichage global de tout les logiciels enregistré
$request = 'select id, task_name from tasks';

$request_result = $dbObjectMysqli->query($request);
while ($line = $request_result->fetch_assoc()) { $datas[] = $line; }
$page_template = 'display_task.php';
break;
case 'add':
// Ajout d'un matériel



if (isset($_POST['add']))
{
$act = 'valid';
} else {
$act = 'display';
}
switch ($act)
{
case 'display':
$page_template = 'form_task_add.php';
break;
case 'valid':
$datas['task_name'] = $dbObjectMysqli->real_escape_string($_POST['name']);

// debut de chercher du duplicate

if ($datas['task_name']->mysqli_affected_rows == 0) {
print "<br>Error! <p></p>";
echo "" .$datas['task_name']. " already exists in the Database";
print "<p></p>Please check the Name and try again";
unset($_POST);
unset($datas);
include 'modules/task/actions/index.php';
$page_template = 'form_task_add.php';
}
//fin de chercher du duplicate

if ($datas['task_name'] != '')
{
$msg[] = 'Retrieve the data: OK';
$request_insert = '
insert into tasks( id, task_name)
values(null,\''.$datas['task_name'].'\');';
if ($request_insert_query = $dbObjectMysqli->query($request_insert))
{
$msg[] = 'Database Update: OK';
$page_template= 'display_success.php';
}
} else {
// En cas de champs non renseignés, les différentes variables sont détruites et le module est à nouveau intégré
$message_err = 'All fields with * mark are mandatory';
unset($_POST);
unset($datas);
include 'modules/task/actions/index.php';

$page_template = 'form_task_add.php';
}

break;
}

break;
case 'modify':
// Ajout d'un matériel
if (isset($_POST['valid']))
{
$act = 'valid';
} else {
$act = 'display';
}
$id = intval($_REQUEST['id']);

switch ($act)
{
case 'display':

$datas['id'] = intval($_REQUEST['id']);
$request = 'select id, task_name from tasks where id = '.$datas['id'];

$request_result = $dbObjectMysqli->query($request);
$datas = $request_result->fetch_assoc();
$page_template = 'form_task_modify.php';
break;
case 'valid':

$datas['task_name'] = $dbObjectMysqli->real_escape_string($_POST['name']);
$datas['id'] = intval($_POST['id']);
if ($datas['task_name'] != '')
{
$msg[] = 'Retrieving data: OK';
$request_insert = 'update tasks set task_name = \''.$datas['task_name'].'\' where id='.$datas['id'];
if ($request_insert_query = $dbObjectMysqli->query($request_insert))
{
$msg[] = 'Database Update: OK';
$page_template= 'display_success.php';
}
} else {
// En cas de champs non renseignés, les différentes variables sont détruites et le module est à nouveau intégré
$message_err = 'Veuillez remplir tous les champs marqués par une étoile.';
unset($_POST);
unset($datas);
$action = 'modify';
include 'modules/task/actions/index.php';

$page_template = 'form_task_modify.php';
}

break;
}

break;
case 'delete':
// Suppression d'un logiciel et des informations qui lui sont liées
if (isset($_REQUEST['id']))
{
// Suppression des entrées
$id = intval($_REQUEST['id']);
$request_delete_query = 'delete from tasks where id = '.$id;
if ($request_delete_result = $dbObjectMysqli->query($request_delete_query))
{
$msg[] = 'Delete the category: OK';

} else {
$msg[] = 'Delete the category: KO. Please verify if the category is linked to a Device.';
}
} else {
$msg[] = 'ID not Found.';
}
$page_template = 'display_success.php';
break;
}
jordane45 19221 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 8 janv. 2016 à 10:03
C'est bien ce que je te disais .....
$datas['task_name'] n'est pas un "objet" mysqli .... l'objet c'est $dbObjectMysqli
Et puis... dans le CASE dans lequel tu te trouves .. tu n'exécutes aucune requête.....
mouhsine.saoud 14 Messages postés jeudi 21 mai 2015Date d'inscription 17 janvier 2016 Dernière intervention > jordane45 19221 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 9 janv. 2016 à 00:04
Merci

J'ai changé mysqli_affected_rows au num_rows

et a marché


$datas['task_name'] = $dbObjectMysqli->real_escape_string($_POST['name']);

// duplicate

$name = $datas['task_name'];
$query_dp = $dbObjectMysqli->query("SELECT id FROM tasks WHERE task_name = '$name'");
$count = $query_dp->num_rows;
if($count == 1)
{
echo 'task exists';
unset($_POST);
unset($datas);
include 'modules/task/actions/index.php';

$page_template = 'form_task_add.php';
}

// fin duplicate
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.