[PHP] Misa à jour tableau / base de données

reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -  
reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Salut,

Alors voila, je peux créer, grâce à un formulaire, des fonctions. Une fois créée, la fonction s'ajoute automatiquement dans la page liste_fonctions. J'ai crée un lien avec lequel on peut modifier la fonction crée, seulement c'est là que je bloque...

Mon code fonctionne avec la première fonction de la liste, mais si je veux modifier, par exemple, la 5ème, c'est la première qui sera modifiée...

Voici mon code:

if (isset ($_POST['nom_fonction']) && ($_POST['description']))
	{
		$ref = $_GET['ref'];
		$nom = $_POST['nom_fonction'];
		$description = $_POST['description'];
		
		// Connexion à la base de données
	
		$local = "localhost";
		$pseudo = "root";
		$password = "";
		$database = "backoffice";

		mysql_connect ($local, $pseudo, $password) or die ("Erreur de connexion !");
		mysql_select_db ($database) or die ("Erreur de base de donnee !");
		
		// Requête SQL

		$sqlchange = 	"SELECT ref, nom, description, date_creation, date_modif
						FROM fonctions";

		$reqchange = mysql_query ($sqlchange) or die ("Erreur de requete 1 !");

		$tabchange = mysql_fetch_assoc ($reqchange);

		$nbrr = mysql_num_rows ($reqchange);

		// Requête SQL

		if ($nbrr > 0)
		{
			for ($i = 1; $i < $nbrr; $i++)
			{
				if ($tabchange['ref'][$i] == $ref)
				{
					$sqlmodif = "UPDATE fonctions
								SET nom = '$nom', description = '$description', date_modif = 'NOW()'
								WHERE nom = '".$tabchange['nom'][$i]."'
								AND description = '".$tabchange['description'][$i]."'
								AND date_modif = '".$tabchange['date_modif'][$i]."'";

					$reqmodif = mysql_query ($sqlmodif) or die ("Erreur de requete 2 !");
				}
			}
		}
		else
		{
			echo "Il n'y a aucune fonction !";
		}

		if (isset ($reqmodif))
		{
			header ('Location: liste_fonctions.php');
		}


J'aimerai savoir d'où vient le problème.

Merci de votre aide :)


A voir également:

3 réponses

Giorgiolino Messages postés 253 Date d'inscription   Statut Contributeur Dernière intervention   52
 
Salut,

il y a deux choses qui me paraissent étranges dans ton script:

1/ L'accès aux variables GET et POST
Dans ton script tu veux récupérer des valeurs dans les tableaux $_GET et $_POST.
Or lorsque tu transmets des variables c'est soit par GET, soit par POST mais très difficilement les 2 en même temps.

2/ La syntaxe utilisée pour récupérer les valeur d'un tableau à 2dimensions
Dans ton script tu veux récupérer les valeurs dans le tableau '$tabchange' avec $tabchange['ref'][$i] où $i est l'index (le numéro) de l'élément dans la liste de résultats, et 'ref' l'attribut (champ) de base de données. Ce qui me semble bien étrange pour ne pas dire faux.

En principe, mysql_fetch_arrow() te renvoie le tableau $tabchange de la forme:
["0" => ["ref" => "ref 0", "nom" => "nom 0", "description" => "description 0" , "date_creation" => "date 0"],
"1"=> ["ref" => "ref 1", "nom" => "nom 1", "description" => "description 1" , "date_creation" => "date 1"],
"2"=> ["ref" => "ref 2", "nom" => "nom 2", "description" => "description 2" , "date_creation" => "date 2"],
...
]

Donc, si tu veux la référence de l'élément numéro '$i', tu fais $tabchange[$i]['ref']. Idem pour le reste.


Un moyen de vérifier cela est de faire un var_dump($tabchange). Tu devrais déjà y voir plus clair sur la structure de ton tableau.
0
reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   21
 
Salut Giorgiolino,

J'ai utilisé les 2 variables POST parce que les variables proviennent d'un formulaire. Quand à la variable GET, c'est une variable transmise via une URL. J'aurai du le préciser, désolé.
Après, peut-être que je les exploite difficilement, je cherche toujours une solution plus simple par rapport à ça.

J'ai essayé ta méthode, mais il semble y avoir un problème au niveau de la requête: Voici ma table fonctions:

ref (tinyint 2)(clé primaire),
nom (varchar 100),
description (varchar 500),
date_création (date) J'hésite pour le type de champ,
date_modif (date) J'hésite également

Peut-être que je me goure complètement, pourtant j'y ais pas mal réfléchis.
0
reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   21
 
Up please, je suis toujours bloqué, j'ai l'impression que c'est la requête qui est problématique.
0