Modifier des données mysql via php

Fermé
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 - 21 sept. 2007 à 10:41
 ima - 2 mai 2012 à 15:11
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-supprimer-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.
A voir également:

50 réponses

Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 09:18
Merci d'avoir pris la peine de refaire tout le code.

Si j'ai bien compris, toute la modification ce fait en une page ?

J'ai essayé et IE m'affiche
Parse error: parse error in c:\program files\easyphp1-8\www\standing_issues\admin\modif_data.php on line 4

Je sais pas si ça a un rapport mais d'habitude dans le notepad++ les balise <html> <head> s'affichent en bleu et la il y a les <> en mauve et le ead en noir ?

Je commence à désespérer de réussir à faire ces modifications.
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 10:08
Oui tu as raison.
Dsl j'ai oublié "?>" avant de passer en html.
Ne t'inquiète pas, j'ai souvent désespéré, mais il faut tenir, ça finit toujours par marcher je t'assure.
Dis moi à chaque erreur que tu rencontres.
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 10:48
Arf non !

j'ai une autre parse erreur aux alentour de la ligne 29

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

En tout cas merci du temps passé sur mon problème.
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 12:13
En effet, il ne faut pas placer un "or die..." dans un while. Ne le mets pas, ce n'est pas nécessaire.
Une autre erreur?? :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 12:21
Avec ce script, j'ai une première page avec tous les enregistrements et un lien modifier.
Je clique sur ce lien et je me retrouve sur page avec un des formulaires (autant de formulaires que d'enregistrements) avec tous les champs vides. Normalement ça devrait afficher les données à modifier non ?
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 12:29
Je vais y reflechir, mais tout d'abord, je viens de m'apercevoir qu'en réecrivant tes pages, j'ai laissé que le lien de modification vers "modification_donnees_2.php", il faudrait le changer vers modif_data.php.
Dis moi si le problème est là. (parce que ça ferait référence à une page incorrect d'avant qui présenterait le problème)
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 12:40
Merci,

pour les champs vides c'est bien le lien qui n'allait pas. Mais comme une solution apporte toujours un autre problème j'ai un nouveaux message d'erreur après avoir cliqué sur modifier :
SELECT * FROM standing_issues WHERE idissue = 'G.P.S.'Champ 'idissue' inconnu dans where clause

ça me refait penser à ce que tu m'as dit avec la différence entre idissue et id_personne. En fait id_personne est à l'origine dans le tutorial, mais quand j'ai essayé de remplacer par mes propres données ça ne marchait plus du tout. Alors je sais pas s'il faut mettre un id_issue ou id_personne ou quelque chose d'autre ?
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 13:36
Euh... quelques questions:
1. id_personne et id_issue, en quoi sont-ils différents? Je veux dire, y a t il une nuance? Vu que je ne connais pas le but du formulaire...!
2. Quelle est la ligne d'erreur exacte qu'il te mette, et son message? Parce que je vois G.P.S mais je ne sais pas si ce sont des données, une variable...
Et essaye (c'est une habitude) d'encadrer les noms de champs tels que 'id' de ta bdd par des " ` ", une sorte de virgule dans les airs.
(altGr + 7)
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 13:56
en fait je crois bien que id_issue et id_personne c'est la même chose. Le but du site c'est de faire un planning où l'on peut insérer, modifier, et supprimer des tâches (issues) j'ai réussi à insérer des données (issue, lead depot...) et là je bloque pour la page de modification.

pour le message exact et la ligne je n'ai rien d'afficher d'autre à part

SELECT * FROM standing_issues WHERE idissue = 'G.P.S.'Champ 'idissue' inconnu dans where clause

pas de ligne dans le message d'erreur, mais d'après le script ça serait la ligne 22 :

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

G.P.S c'est une donnée de la table.

j'ai modifier idissue par issue et là ça marche j'ai mon formulaire avec mes champs à modifier.
mais quand je valide les modifs avec modifier j'ai une erreur 404.

j'arrive à avancer à petit pas grâce à toi, merci.
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 14:03
De rien ;-)
Je vois l'erreur, dis moi si j'y suis (c'est une erreur que je retiendrais car elle m'a fait souffrir aussi!!):
avant d'ecrire une variable php dans une requete sql, tu doit fermer ta phrase sql par des guillemets, et concaténer ta variable php, parce que ce n'est pas le meme langage. Ca donne ceci:
$sql = "SELECT * FROM standing_issues WHERE idissue = ' ".$id." ' " ;
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 14:09
J'ai remplacé la ligne, mais j'ai toujours l'erreur 404 quand je clique sur modifier, j'ai regarder dans le script, je ne vois pas de lien vers une nouvelle page ?
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 14:12
Ok, renvoie moi le code, parce que maintenant je ne vois plus toutes les modifications. Je vais l'examiner de plus près.
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 14:16
Voici le code

<?php
if(isset($_GET['idissue'])){
//On a demandé la 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 issue = ' ".$id." ' " ;

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

//affichage des données:
while( $result = mysql_fetch_object( $requete ) )
{
?>
<form name="insert_modify_data" action="modify_data.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 while
?>
</body>
</html>

<?php



}else if(isset($_POST['id'])){
//On a rempli le formulaire




//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__issue = '$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") ;
}





} else{

//On n'a rien demandé, on affiche les enregistrements





?>
<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=\"modif_data.php?idissue=".$result->issue."\">modify</a><br>\n" ;

}
?>
</body>
</html>
<?php
}//fin du if() global
?>
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 14:23
Bon alors deja, il faut que tu choisisses le nom de ta page :p, parce qu(un moment tu a modify_data.php et un autre modif_data.php
Ensuite, je pense que tu peux enlever les () des echo. Mais je sais pas si c'est nécessaire.
Enfin, fais comme je t'ai dit avec la requete de modification sql: mets des guillmets et des points, il faut changer ça dans toutes les requetes ;)
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 14:44
ok,

j'avais pas vu la différence entre modify et modif.

là j'ai une erreur au niveau de la fonction update :
$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 issue = '.$issue.' " ;

Erreur de syntaxe près de 'last_update = '.modif.' WHERE issue = '.test.'' à la ligne 7

alors j'ai mis des guillemets : WHERE issue =" '.$issue.' " " ;

et là le message c'est un parse error
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 14:49
Oui, mais tu as inversé guillemets et apostrophe! :)
En fait l'apostrophe désigne une valeur en sql, et les guillemets séparent les deux langages.
Voici le bon code:

$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 issue = ' ".$issue." ' " ;

C'est bon comme ça?
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 14:59
ok, la j'ai plus l'erreur mais ça me renvoie à l'affichage de toutes les données sans faire d'update.
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 15:13
1. Avant chaque "else" mets mysql_close(); pour fermer ta base de données, à ce qui parait il faut le faire.
2. Ne mets pas $cnx dans la requete, je ne sais pas ce que c'est, sauf si tu le sais.
3.Mets une parenthese après SET et ferme là avant le dernier ';'
0
Fitz Chivalry Messages postés 38 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 29 septembre 2007 10
26 sept. 2007 à 15:50
Pfff, ça marche toujours pas, j'ai encore une parse error au niveau de la fonction update.

Mais laisse tomber, mon stage se termine demain et j'aurais pas le temps de finir.

Merci à toi et à tous ceux qui m'ont aidés.
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
26 sept. 2007 à 15:52
Oh bein non!
Si tu veux:
1. Re- Envoie moi tout le code je vais revoir
2. Vérifie que ce que tu as ecrit (les noms des champs...) coincident avec ta bdd
0