Duplicate

Résolu
mouhsine.saoud Messages postés 14 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 17 janvier 2016 - 8 janv. 2016 à 01:53
mouhsine.saoud Messages postés 14 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 17 janvier 2016 - 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';
}

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 8/01/2016 à 02:02
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                                                                 
1
mouhsine.saoud Messages postés 14 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 17 janvier 2016 1
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;
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.....
0
mouhsine.saoud Messages postés 14 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 17 janvier 2016 1 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié par mouhsine.saoud le 9/01/2016 à 00:05
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
0
Rejoignez-nous