Requete UPDATE avec formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete UPDATE avec formulaire

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 15:17

Désolé du double post mais en fait j'y suis arrivée :)
Il s'agissait juste d'un problème avec la variable $monArticle qui n'existait que dans le while, j'ai donc créér d'autres variables.
<?php
	require_once('connexion.php');
	$idArticle = $_GET['article'];
	//	echo '<p>' .$idArticle. '</p>';   // l'idArticle passé en URL est bien récupéré
	$request = 'SELECT * FROM articles WHERE idArticle = "'.$idArticle.'";';
	$resultat = mysql_query ($request, $connexion);
	if (!empty($resultat) or die(mysql_error()))
	{
		while ($monArticle = mysql_fetch_object ($resultat))
		{
			//echo $monArticle->titreArticle;
			//echo $monArticle->contenuArticle;
			$titreArticle = $monArticle->titreArticle;
			$contenuArticle = $monArticle->contenuArticle;
			$descPhoto = $monArticle->descPhoto;
			$idCat = $monArticle->idCat;
			$photoArticle = $monArticle->photoArticle;
		}
	}
?>
Et hop !
Merci à tous.

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 14:53

Merci beaucoup, grâce à ton aide j'en vois enfin presque le bout !

Donc voici le code que j'ai fais au début du fichier "form_editerarticle.php" :
<?php
	require_once('connexion.php');
	$idArticle = $_GET['article'];
	//	echo '<p>' .$idArticle. '</p>';   // l'idArticle passé en URL est bien récupéré
	$request = 'SELECT * FROM articles WHERE idArticle = "'.$idArticle.'";';
	$resultat = mysql_query ($request, $connexion);
	if (!empty($resultat) or die(mysql_error()))
	{
		while ($monArticle = mysql_fetch_object ($resultat))
		{
			echo $monArticle->titreArticle;
			echo $monArticle->contenuArticle;
		}
	}
?>
<table border=2>
	<form action="../edition/editer.php" method="post" enctype="multipart/form-data">
	<br/>
	<h5> MODIFIER UN ARTICLE </h5>
	<tr>
		<td width> Titre de l'article : </td>
		<td width><input type="text" name="titreArticle" size="108" value="<?php echo $monArticle->titreArticle; ?>"/></td>
	</tr>
	<tr>
...
Donc grâce aux echo fait dans le "while", on constate que mes données sont bien récupérées :D
Par contre, encore un problème, que je trouve bizarre d'ailleurs, dans les echo du formulaire, j'ai toujours un "Trying to get property of non-object", et là j'avoue que je ne comprend pas.... #-o

Re: Requete UPDATE avec formulaire

par macgawel » 18 avr. 2011, 14:14

Récupérer une valeur, ça reste simple...
Soit tu le passes dans l'URL de tes liens (par un GET) : http://monsite.ext/form_editionarticle. ... <IdArticle> (penser à bien contrôler dans ce cas, vu qu'on peut mettre ce qu'on veut dans l'URL)
Soit tu le passes dans le formulaire, par exemple avec un champ caché (penser à contrôler un minimum, dans ce cas, parce qu'il est possible de modifier le contenu d'un champ caché quand on envoie un formulaire)
soit tu utilises un système de SESSION.

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 14:08

Merci de tes explications.
Donc effectivement je vais partir sur une nouvelle reqûete, le problème étant qu'il faut au moins que je puisse récupérer "idArticle", pour faire quelque chose du genre :
$request = "SELECT * FROM articles WHERE idArticle ='" .$_REQUEST['article']."'";
dans mon fichier form_editionarticle.php" ?

Re: Requete UPDATE avec formulaire

par macgawel » 18 avr. 2011, 14:05

En gros, ça fonctionne comme ça :
1. Le "client" (le navigateur) demande la page editerarticle.php
2. Le serveur traite le script PHP (entre autres il récupère les données de la BDD).
3. Le serveur envoie la page HTML générée. Il oublie tout ce qui vient de se passer.
4. Le client demande la page form_editionarticle.php
5. Le serveur traite le script PHP.

Deux solutions :
- Tu trouves un moyen de passer les données récupéréres d'un script à l'autre. Par exemple, avec l'utilisation de Sessions.
- Tu repasses une requête SQL pour récupérer les données.

Passer les données d'une page à l'autre risque de vite devenir compliqué, et multiplie les risques (oublis dans le script, modifications non souhaitées, ...)
Le plus esimple est donc, a priori, de passer une nouvelle requête.

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 13:48

Ok donc :

Je cherche à récupérer les informations relatives à l'article demandé dans ma BDD. Comme elles ont déjà été demandées dans le fichier editerarticle.php, je peux essayer de les récupérer depuis ce fichier là ? Où est-ce que je ne peux pas, dans ce cas, je dois les re-récupérer dans ma BDD à l'aide d'une requête SQL de ce genre là ?
	$request = "SELECT * FROM articles WHERE idArticle ='" .$_REQUEST['article']."'";
	$resultat = mysql_query ($request, $connexion);
	if (!empty($resultat) or die(mysql_error())) {
	while ($monArticle = mysql_fetch_object ($resultat)) {	
	}
	}
La réponse est que je crois avoir eu les yeux plus gros que le ventre ^^

Re: Requete UPDATE avec formulaire

par macgawel » 18 avr. 2011, 13:36

Pose-toi les bonnes questions...

Première question : Où se trouve l'information que tu souhaites afficher ?
Deuxième question : Comment la récupérer ?

Répondre à ces questions devrait déjà bien t'avancer :wink:

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 13:29

Je comprend tout à fait le principe de ce que tu me dis et je vois mon erreur. Merci pour çà.
En revanche, je ne vois pas du tout comment résoudre le problème. Si tu pouvais au moins me mettre sur la piste, ce serait super ;)

Re: Requete UPDATE avec formulaire

par macgawel » 18 avr. 2011, 13:26

$monArticle = $_REQUEST['article'];

J'ai toujours le message d'erreur "trying to get property of non-object" dans tout mes input, textarea, ...
Comment puis-je résoudre ce problème ?
Tu affectes une chaîne de caractères à $monarticle, et ensuite tu le traites comme un objet, forcément PHP n'apprécie pas trop #-o

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 13:21

Merci à toi, je n'avais pas vu qu'elle n'était pas définie dans le fichier "form_editionarticle.php" !
J'ai donc rajouté cette ligne : $monArticle = $_REQUEST['article']; et il y a nettement moins de messages d'erreur :D .
Cependant, il y en a toujours un paquet quand même.

J'ai toujours le message d'erreur "trying to get property of non-object" dans tout mes input, textarea, ...
Comment puis-je résoudre ce problème ?

Re: Requete UPDATE avec formulaire

par macgawel » 18 avr. 2011, 12:39

La variable $monArticle est définie dans la troisème requete de mon premier script
Et dans le script form_editionarticle.php, elle est définie où ?
Notice: Undefined variable: monArticle in C:\wamp\www\SMTK\admtool\includes\form_editionarticle.php on line 10
Notice: Trying to get property of non-object in C:\wamp\www\SMTK\admtool\includes\form_editionarticle.php on line 10
C'est assez clair :
- La variable $monarticle n'est pas définie.
- Tu essayes de récupérer une propriété sur quelque chose qui n'est pas un objet (ce qui se tient avec le premier point).

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 12:01

La variable $monArticle est définie dans la troisème requete de mon premier script :
 // affichage des produits
        $requete = 'SELECT idArticle, idCat, titreArticle, contenuArticle, photoArticle,  descPhoto FROM articles where idCat = \'' . $categorie . '\';';
        $resultat = mysql_query ($requete, $connexion);
        if (!empty($resultat)) 
        {
                while ($monArticle = mysql_fetch_object ($resultat)) 
                {
                        echo '<li> <a href="editer.php?categorie='.$monArticle->idCat.'&article='.$monArticle->idArticle.'"><img src="'.$monArticle->photoArticle.'" alt="'.$monArticle->descPhoto.'"/>
                        </a><p> '.$monArticle->descPhoto .'</p></li>';
                }
        }
        else 
        {
                echo "Erreur dans l'exécution de la requête.<br/>\n";
                echo "Message de MySQL : ", mysql_error($connexion);
        }       
                echo '</ul>';
Je te met mon fichier connexion.php, même si ca sert a rien puisque tout le reste de mon site (blog, ajout, suppression,...) fonctionne très bien.
<?php
	require('connect.php');
	
	$connexion = mysql_connect ("localhost", "root", "");
	if (!$connexion) {
		echo 'Désolé, connexion au serveur ' . localhost . " impossible\n";
		exit();
	}
	else {
		if (!mysql_select_db('smtk')) {
			echo "Désolé, accès à la base" . smtk . " impossible\n";
			exit();
		}
		// Spécifie l'encodage UTF-8 pour dialoguer avec la BD
		mysql_query('SET NAMES utf8');
	}
?>
EDIT : C'est justement çà à mon avis le problème, j'ai l'impression que mon troisième script ne parvient pas à récupérer les variables du premier, alors que le premier "editionarticle.php", envoie vers "editer.php"(mon troisième script) dans la dernière requête.

Re: Requete UPDATE avec formulaire

par misterflo » 18 avr. 2011, 11:55

Ce qui pose problème justement ce sont ces
<?php echo ''.$monArticle->titreArticle.'' ;?>
Qu'est-ce que $monArticle ?
Apparament ca n'est défini nul part vu qu'il affiche une erreur.

En fait tu essaye de récupérer les valeurs des champs dans ta bdd c'est ca ?
Que contient le fichier connexion.php ?

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 11:49

A priori, après avoir corrigé ma reqûete grâce à ton aide, ce problème est résolu.
Maintenant, le gros problème, c'est tout ces Trying to get property of non-object.
Toutes mes variables dans le formulaire ne s'affichent pas :

Code : Tout sélectionner

Notice: Undefined variable: monArticle in C:\wamp\www\SMTK\admtool\includes\form_editionarticle.php on line 10 Notice: Trying to get property of non-object in C:\wamp\www\SMTK\admtool\includes\form_editionarticle.php on line 10
D'habitude, j'arrive à résoudre le problème, mais là je vois pas :shock: .

(Merci de votre aide !)

Re: Requete UPDATE avec formulaire

par Pauloscorps » 18 avr. 2011, 11:31

Merci, je vais regarder ton lien.
En fait, j'ai le message suivant sur la ligne de condition de ma requete : unexpected T_CONSTANT_ENCAPSED_STRING.