Rechercher : dans
Par :

Modifier des données mysql via php

Dernière réponse le 29 sep 2007 à 21:54:08 Fitz Chivalry, le 21 sep 2007 à 10:41:17 
 Signaler ce message aux modérateurs

Bonjour à tous,

je me lance dans le php/mySQL à l'aide de tuto ici et là,
je voudrais modifier les données de ma base en suivant ce tuto :http://wiki.mediabox.fr/tutoriaux/php/inserer-modifier-supp­rimer-des-donne-php

la première page de modification marche nickel, mais lors de la deuxième j'ai ce message d'erreur :
"Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\standing_issues\admin\modify_data_two.php on line 24"

voici le code de la ligne 24 :

if( $result = mysql_fetch_object( $requete ) )

et voici le code de ma page :

<html>
<head>
<title>Modify Data - Page 2</title>
</head>
<body>
<?php
//connection to server:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//select data base
$db = mysql_select_db( "bombardier" ) ;

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id = $_GET["idissue"] ;

//requête SQL:
$sql = "SELECT * FROM standing_issue WHERE issue = ".$id ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>
<form name="insertion" action="modify_data_three.php" method="POST">
<input type="hidden" name="id" value="<?php echo $id ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Issue</td>
<td><input type="text" name="issue" value="<?php echo $result->issue ;?>"></td>
</tr>
<tr align="center">
<td>Lead Depot</td>
<td><input type="text" name="lead_depot" value="<?php echo $result->lead_depot ;?>"></td>
</tr>
<tr align="center">
<td>Lead Derby</td>
<td><input type="text" name="lead_derby" value="<?php echo $result->lead_derby ;?>"></td>
</tr>
<tr align="center">
<td>Status</td>
<td><input type="text" name="status" value="<?php echo $result->status ;?>"></td>
</tr>
<tr align="center">
<td>Action Deadline</td>
<td><input type="text" name="action_deadline" value="<?php echo $result->action_deadline ;?>"></td>
</tr>
<tr align="center">
<td>Last Update</td>
<td><input type="text" name="last_update" value="<?php echo$result->last_update ;?>"></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="modifier"></td>
</tr>
</table>
</form>
<?php
}//fin if
?>
</body>
</html>

voilà, je ne vois pas où est l'erreur. si quelqu'un qui s'y connait pouvait m'aider ça serait super sympa.

Merci d'avance à tous qui pourront m'aider.

Configuration: Windows XP
Firefox 2.0.0.7 (IE pour le boulot)
EasyPHP

1

sfel, le 21 sep 2007 à 10:44:06

Bojnjour

tes trois lignes

 //requête SQL:
$sql = "SELECT * FROM standing_issue WHERE issue = ".$id ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )


tu peux faire tout simplement
 //requête SQL:
$requete = mysql_query("SELECT * FROM standing_issue WHERE issue = ".$id );

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

2

Fitz Chivalry, le 21 sep 2007 à 10:49:53

Merci de ta réponse rapide.

j'ai changé la portion de code que tu m'as indiqué mais j'ai toujours le même erreur sur cette ligne :

if( $result = mysql_fetch_object( $requete ) )

je vois pas trop ce qu'il peut y avoir de faux !?

Répondre à Fitz Chivalry

3

sfel, le 21 sep 2007 à 11:00:10

Remplace le "if" par un "while"

while ($result = mysql_fetch_array($requete) )
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

4

Fitz Chivalry, le 21 sep 2007 à 11:07:14

Arf,

j'ai remplacé le if par un while mais j'ai encore la même erreur.
Je crois comprendre que le message me dit que mysql_fetch_object n'est pas une fonction valide pourtant je l'ai vue sur d'autres site.

Répondre à Fitz Chivalry

5

sfel, le 21 sep 2007 à 11:33:00

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base test

$reponse = mysql_query("SELECT * FROM tbale"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>

partie HTML d'affichage

<?php
}

mysql_close(); // Déconnexion de MySQL
?>
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

6

Fitz Chivalry, le 21 sep 2007 à 12:24:11

Je crois que ce script sert à afficher les données ? ça doit être dans ma première page de modification qui m'affiche toutes les données avec un lien "modifier" pour chacune d'elle ?

enfin je me trompe peut-être. si c'est le cas, je vois où il faut insérer le script ci-dessus.

Répondre à Fitz Chivalry

7

Fitz Chivalry, le 21 sep 2007 à 15:09:13

J'ai mis un echo avant la ligne où apparait l'erreur :

echo $result = mysql_fetch_object($request)

et là le message d'erreur devient :

Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp1-8\www\standing_issues\admin\modify_data_two.p­hp on line 20

j'ai mis un ";" à la fin de cette ligne :

if( $result = mysql_fetch_object( $request ) ) ;

mais j'ai toujours le même message d'erreur.

Répondre à Fitz Chivalry

8

sfel, le 22 sep 2007 à 20:54:11

A nan, tu ne met pas de ; a la fin d'un if.

bon je comprends peut-etre pas du tout ce que tu veuix, donc je vai corriger ton code, sans comprendre sa logique (donc juste l'orthographe), quand tu fai un if, met == et non pas un seul =
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

41

lara, le 26 sep 2007 à 15:57:25

Bonjour sfel
svp vous pouvez m'aider? je suis en stage d'application et je doit faire une application html.asp et en base de donné .mdb mais j'ai pa fai ses deux a l'ecol
je doit realiser des formulaire en html.asp et les enregistrer en base de donné et puis les lister
sans ecrre les code mon supérieur ma proposé de le faire avec le logiciel wisiwyg et j'ai instaler le TOweb v2 alors si vous connaissez qlq chose sur ça aide moi svp
aide moi stp

Répondre à lara

9

Fitz Chivalry, le 25 sep 2007 à 10:49:21

Bonjour sfel,

j'ai mis == après le if, mais ça ne marche toujours pas.
je réexplique mon objectif :

j'ai des données dans une base mysql et je souhaite les modifier via un formulaire. Je suis donc les indications du tutorial du site cité dans mon premier post. La méthode consiste en 3 pages. La première afficher toutes les données de la table avec un lien modifier. La deuxième permet de rentrer les valeurs à modifier et la troisième permet de faire une update de la base si j'ai bien compris.

par acquis de conscience j'ai entièrement repris le code de la deuxième page ce qui donne maintenant :

<html>
<head>
<title>modification de données en PHP :: partie2</title>
</head>
<body>
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "bombardier" ) ;

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id = $_GET["idissue"] ;

//requête SQL:
$sql = "SELECT * FROM standing_issues WHERE id_issue = ".$id ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) or die($sql . mysql_error() );

//affichage des données:
if( $result == mysql_fetch_object( $requete ) or die($sql . mysql_error() )
{
?>
<form name="insert_modify_data" action="modify_data_three.php" method="POST">
<input type="hidden" name="id" value="<?php echo($id) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Issue</td>
<td><input type="text" name="issue" value="<?php echo($result->issue) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Depot</td>
<td><input type="text" name="lead_depot" value="<?php echo($result->lead_depot) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Derby</td>
<td><input type="text" name="lead_derby" value="<?php echo($result->lead_derby) ;?>"></td>
</tr>
<tr align="center">
<td>Status</td>
<td><input type="text" name="status" value="<?php echo($result->status) ;?>"></td>
</tr>
<tr align="center">
<td>Action Deadline</td>
<td><input type="text" name="action_deadline" value="<?php echo($result->action_deadline) ;?>"></td>
</tr>
<tr align="center">
<td>Last Update</td>
<td><input type="text" name="last_update" value="<?php echo($result->last_update) ;?>"></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="modifier"></td>
</tr>
</table>
</form>
<?php
}//fin if
?>
</body>
</html>

et là le message d'erreur n'est plus sur la même ligne :

Parse error: parse error in c:\program files\easyphp1-8\www\standing_issues\admin\modification_donnees_2.php on line 25

la ligne c'est celle après le if où il n'y a que {

Voilà j'espère que je j'ai été clair dans les explications de ce que je voulais faire.

encore merci du temps consacré.

Répondre à Fitz Chivalry

10

sfel, le 25 sep 2007 à 15:10:04

Re

tu devrai enlever ton or die($sql . mysql_error()

il est inutile ici, vu que tu ne fais pas de requete, mais où tu prends les valeurs de ta requete 1 ligne plus heut.

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

11

ilan27, le 25 sep 2007 à 15:26:34

Bonjour, j'ai à peu près compris le pb.
A mon avis (dis moi si je me trompe), la variable $result n'est pas créee, je veux dire 'initialisée'. Donc ton if() n'est pas opérationnel, vu que le serveur ne peut pas comparer avec une variable inexistante.
C'est quoi cette variable $result?
Par ailleurs, je ne connais pas la fonction mysql_fetch_object(), et puis on ne met pas (je pense) "or die(mysql_error()); dans un if.
Sachant que le while($result=...) initialise la variable $result, essaye ainsi:

while($result=mysql_fetch_array($requete)){
?>
Ton code HTML
<?php
}

ps: Quand on te dis ligne 25, il se peut que ce soit avant ou après, suivant que tu as sauté des lignes ou pas (non reconnu), donc il ne faut pas bcp s'y fier! ;)

Répondre à ilan27

12

sfel, le 25 sep 2007 à 15:29:08

Je lui avait dis avec le while, c'est ce que je pense le mieux. (et c'es tce que je voi sur les différents codes)
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

13

Fitz Chivalry, le 25 sep 2007 à 16:35:35

Merci à tous de vos réponse. Si j'ai bien compris le tutorial, les valeurs de la requêtes doivent être prises à partir de ma première page de modification dont voici le code :

<html>
<head>
<title>Modify Data - Page 1</title>
</head>
<body>
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "bombardier" ) ;

//requête SQL:
$sql = "SELECT * FROM standing_issues ORDER BY issue" ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
while( $result = mysql_fetch_object( $requete ) )
{
echo "<div align=\"center\">".$result->issue." ".$result->lead_depot." ".$result->lead_derby." ".$result->status." ".$result->action_deadline." ".$result->last_update."
<a href=\"modification_donnees_2.php?idissue=".$result->issue."\">modify</a><br>\n" ;

}
?>
</body>
</html>

Après il y a le code de la deuxième page de modification :

<html>
<head>
<title>modification de données en PHP :: partie2</title>
</head>
<body>
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "bombardier" ) ;

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id = $_GET["idissue"] ;

//requête SQL:
$sql = "SELECT * FROM standing_issues WHERE idissue = '$id'" ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) or die($sql . mysql_error());

//affichage des données:
if( $result = mysql_fetch_object( $requete ) or die($sql . mysql_error() )
{
?>
<form name="insert_modify_data" action="modify_data_three.php" method="POST">
<input type="hidden" name="id" value="<?php echo($id) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Issue</td>
<td><input type="text" name="issue" value="<?php echo($result->issue) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Depot</td>
<td><input type="text" name="lead_depot" value="<?php echo($result->lead_depot) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Derby</td>
<td><input type="text" name="lead_derby" value="<?php echo($result->lead_derby) ;?>"></td>
</tr>
<tr align="center">
<td>Status</td>
<td><input type="text" name="status" value="<?php echo($result->status) ;?>"></td>
</tr>
<tr align="center">
<td>Action Deadline</td>
<td><input type="text" name="action_deadline" value="<?php echo($result->action_deadline) ;?>"></td>
</tr>
<tr align="center">
<td>Last Update</td>
<td><input type="text" name="last_update" value="<?php echo($result->last_update) ;?>"></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="modifier"></td>
</tr>
</table>
</form>
<?php
}//fin if
?>
</body>
</html>

et le code de la troisième page de modif :

<?php
//connection au serveur
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "bombardier" ) ;

//récupération des valeurs des champs:
$issue = $_POST["issue"] ;
$lead_depot = $_POST["lead_depot"] ;
$lead_derby = $_POST["lead_derby"] ;
$status = $_POST["status"] ;
$action_deadline = $_POST["action_deadline"] ;
$last_update = $_POST["last_update"] ;

//récupération de l'identifiant de la personne:
$id = $_POST["id"] ;

//création de la requête SQL:
$sql = "UPDATE standing_issues
SET issue = '$issue',
lead_depot = '$lead_depot',
lead_derby = '$lead_derby',
status = '$status',
action_deadline = '$action_deadline'
last_update = '$last_update'
WHERE id_personne = '$id' " ;

//exécution de la requête SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;


//affichage des résultats, pour savoir si la modification a marchée:
if($requete)
{
echo("Modifications have been taken into account") ;
}
else
{
echo("La modification à échouée") ;
}
?>

Voilà, pour le while à la place du if, je pensais que ce "while" était celui présent dans la page de modif 1.

Répondre à Fitz Chivalry

14

Fitz Chivalry, le 25 sep 2007 à 16:40:23

Je viens de mettre le while à la place du if.

j'ai bien un formulaire avec toutes les entrées de ma base, mais dans les champs, j'ai

<br /><b>Notice</b>: Undefined variable: result in <b>c:\program files\easyphp1-8\www\standing_issues\admin\modification_donnees_2.php</b> on line <b>24</b><br />

je suppose que avec ce while à la place du if, toute la madification se fait en une seule page php ?

Répondre à Fitz Chivalry

15

sfel, le 25 sep 2007 à 16:44:46

Et le if de la page 2, tu le change pas ??

 //affichage des données:
if( $result = mysql_fetch_object( $requete ) or die($sql . mysql_error() )
{ 


là il te dis bien qu'il n'y pas encore de resultde défini.

ainsi pareil
 //affichage des données:
while( $result = mysql_fetch_object( $requete ) )
{ 
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

16

Fitz Chivalry, le 25 sep 2007 à 16:53:54
  • +2

Si si, je l'ai changé, et c'est là que que j'ai les <br> et autres

voici le code avec le while :

<html>
<head>
<title>modification de données en PHP :: partie2</title>
</head>
<body>
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bombardier"); // Sélection de la base test

$reponse = mysql_query("SELECT * FROM standing_issues"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>

<form name="insert_modify_data" action="modify_data_three.php" method="POST">
<input type="hidden" name="id" value="<?php echo($id) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Issue</td>
<td><input type="text" name="issue" value="<?php echo($result->issue) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Depot</td>
<td><input type="text" name="lead_depot" value="<?php echo($result->lead_depot) ;?>"></td>
</tr>
<tr align="center">
<td>Lead Derby</td>
<td><input type="text" name="lead_derby" value="<?php echo($result->lead_derby) ;?>"></td>
</tr>
<tr align="center">
<td>Status</td>
<td><input type="text" name="status" value="<?php echo($result->status) ;?>"></td>
</tr>
<tr align="center">
<td>Action Deadline</td>
<td><input type="text" name="action_deadline" value="<?php echo($result->action_deadline) ;?>"></td>
</tr>
<tr align="center">
<td>Last Update</td>
<td><input type="text" name="last_update" value="<?php echo($result->last_update) ;?>"></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="modifier"></td>
</tr>
</table>
</form>
<?php
}//fin if
?>
</body>
</html>

Répondre à Fitz Chivalry

17

sfel, le 25 sep 2007 à 17:12:03

Dans ta boucle tu as $donnees,

Or, dans ton formulaire, tu utilise $result partout.

soit tu remplace partout $result par $donnee (c'es tlong)
soit tu met $result a la place de $donne dans ton while (c'est moin long ^^)

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

18

ilan27, le 25 sep 2007 à 17:18:15

Euh... j'ai un petit conseil pour plus de clarté (évite des liens dans tous les sens), et c'est moins lourd si tu veux tout en une page; voila l'architecture de la page:

Si ( $_GET['idissue'] existe){
//On a demandé de modifier un enregistrement précis
Affiche le formulaire de modifications (l'actuelle page 2 si je ne me trompe pas)
}sinon si ($_POST['idissue'] existe){
//On a rempli et envoyé le formulaire
On enregistre, et on affiche le message comme quoi l'opération s'est bien déroulée
}sinon{
//On a rien demandé
On affiche donc l'ensemble des enregistrements, l'actuelle page 1
}

Il n' a plus qu'a le mettre sous forme php/mysql
!!! Attention: revois les adresses du formulaire: ce n'est plus page1 ou 2 ou 3 mais la meme page que tu fais tourner :)

Répondre à ilan27

19

Fitz Chivalry, le 25 sep 2007 à 17:23:58

J'ai mis $result à la place de $donnees je n'ai plus tous les <br />, je n'ai plus rien du tout, tous mes champs sont vides.

Au fait si tu as un autre script pour modifier des données mysql à l'aide d'un formulaire je veux bien essayer, j'ai essayé cette méthode car j'ai trouver un tuto là-dessus et que je suis débutant en php.

Répondre à Fitz Chivalry