Modifier des données mysql via php

Fitz Chivalry Messages postés 38 Statut Membre -  
 ima -
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.
Configuration: Windows XP
Firefox 2.0.0.7 (IE pour le boulot)
EasyPHP

50 réponses

  • 1
  • 2
  • 3
Résumé de la discussion

Un script PHP manipulant une base MySQL échoue lors de la récupération des données avec l’erreur mysql_fetch_object(): supplied argument is not a valid MySQL result resource, sur la page de modification.

Plusieurs répondants suggèrent de vérifier l’exécution de la requête avec mysql_query et d’ajouter or die(mysql_error()) pour afficher clairement l’erreur, puis de corriger le SQL (sélection, guillemets, concaténation).

Des conseils insistent aussi sur l’usage d’un champ et d’une table cohérents (id_issue vs idpersonne) et recommandent, selon le contexte, d’utiliser une boucle while plutôt qu’un seul if.

En pratique, les échanges illustrent des variantes de la même erreur liées à des noms de colonnes incohérents et à des requêtes mal formées, nécessitant une harmonisation entre pages et tests.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Fitz Chivalry Messages postés 38 Statut Membre 10
     
    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.
    6
  • 1
  • 2
  • 3