Duplicate [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 21 mai 2015
Statut
Membre
Dernière intervention
17 janvier 2016
-
Messages postés
14
Date d'inscription
jeudi 21 mai 2015
Statut
Membre
Dernière intervention
17 janvier 2016
-
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';
}

1 réponse

Messages postés
28943
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
332
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                                                                 
Messages postés
14
Date d'inscription
jeudi 21 mai 2015
Statut
Membre
Dernière intervention
17 janvier 2016
1
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;
}
Messages postés
28943
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
332
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.....
Messages postés
14
Date d'inscription
jeudi 21 mai 2015
Statut
Membre
Dernière intervention
17 janvier 2016
1 >
Messages postés
28943
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020

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