Tout d'abord, bonjour!

Mon problème étant que dans une de mes tables de ma bdd je me retrouve avec deux champs qui sont : "id_row" et "id_hydroweb", du coup, cela crée un conflit lorsque j'essaye d'utiliser ma fonction suivante. Mais je voudrai en gros que Si "id_row" se retrouve en même temps qu'un autre champ de type "id_" (comme "id_hydroweb" dans ce cas présent) dans une table alors il faudrait que "id_row" ET sa valeur, soit attribués en tant que "$id" (dans mon else)


Voici le code de ma Classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
include('modele.class.php');
include('IProprietes.class.php');
 
class ctrl_ops_chkbox  extends Modele implements IProprietes
{
	protected $id_ctrl, $id_hydroweb, $Q, $question, $precision_reponse, $degre, $id_row;
 
	public function __construct($id_ctrl= null, $id_hydroweb= null, $Q= null, $question= null, $precision_reponse= null, $degre= null, $id_row= null)
	{
		if(!($id_ctrl == null && $id_hydroweb== null && $Q== null && $question== null && $precision_reponse== null && $degre== null && $id_row== null) )
		{
			$this->id_ctrl = $id_ctrl;
			$this->id_hydroweb = $id_hydroweb;
			$this->Q = $Q;
			$this->question = $question;
			$this->precision_reponse = $precision_reponse;
			$this->degre = $degre;
			$this->id_row = $id_row;
		}
	}
	public function getProprietes()
	{
		return get_object_vars($this);
	}
}
 
?>

Voici le code de ma fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public  function setRequeteModifier($obj)
	{
		$classe=get_class($obj);
		$table = $classe;
		$proprietes=$obj->getProprietes();  //récupération du tableau associatif clés-valeurs de l'objet
		$where = " WHERE "; //sous chaîne pour la clause WHERE
		$params = array();
		$sql="UPDATE $table SET "; //début de la requête
		$id="";
		foreach($proprietes as $key=>$val)//suppose que l'identifiant de la classe et de la table est id_ + nom de la classe : si classe est Client alors id_client
		{
			if( ($key != "id_".$classe) && ($key != "id_".get_parent_class($obj)) && ($key !="id_row") && ($key !="id_hydroweb") ) //j'écarte l'identifiant des champs à modifier
			{
					$sql=$sql.$key."=?,"; //on ajoute un ? -> //requête préparée avec marqueurs interrogatifs
					$params[]=$val;
			}
			else
			{
					$where = $where . $key . "=?"; //requête préparée avec marqueurs interrogatifs
					$id=$val;
			}
		}
		$proprietes= $val;
		$params[]=$val;
		// $params[] = $id; //on ajoute l’id à la fin du tableau des paramètres
 
 
		$sql = rtrim($sql, ","); // enleve la derniere virgule, PHManuel : Supprime les espaces (ou d'autres caractères) de fin de chaîne
		$sql = $sql . $where; //on ajoute la clause WHERE à la fin de la requête
		$this->requete = $sql; //on stocke le texte de la requête dans $this->requete
		$this->parametres = $params;//on stocke les valeurs des paramètres dans $this->parametres
BESOIN : but if there is (($key ="id_row") && ($key ="id_hydroweb")) then $key="id_row" and so $id=$val= value($id_row)

Ma requête actuelle est de cette forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE ctrl_ops_chkbox SET id_ctrl=?,Q=?,question=?,precision_reponse=?,degre=? WHERE id_hydroweb=?id_row=?Array ( [0] => 1000 [1] => Q101 [2] => test test? [3] => blablablabla [4] => 10 [5] => 4394 )
Et je veux que ma requête soit sous cette forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE ctrl_ops_chkbox SET id_ctrl=?,id_hydroweb=?,Q=?,question=?,precision_reponse=?,degre=? WHERE id_row=?Array ( [0] => 1000 [1] => 25000 [2] => Q101 [3] => test test? [4] => blablablabla [5] => 10 [6] => 4394 )
Si je vise totalement à côté pour ma demande, corrigez moi! De plus si vous avez besoin de d'autres info' n'hésitez pas!

Merci d'avance de votre aide, car je bloque là dessus depuis quelques heures déjà.