Bonjour Je rencontre un problème avec mon code actuellement.
Et si y'a quelqu'un qui peut m'aider, sa me ferait vraiment plaisir .
Le problème est le suivant :
Je veux modifier mes données qui se trouve dans la base de données.
Donc j'ai créer une page de code mais j'ai une erreur de :
Fatal error: Uncaught Error: Call to undefined function mysql_fetch_array()
PAGE(modificateur.php)
Cela est mon code quand j'aterris sur la page pour procéder à la modification de mes données.
<?php
// SCRIPT DE CONNEXION
$hote ="localhost";
$nombasededonnees ="comptable";
$utilisateur ="comptable";
$motdepasse ="NPYyYc4kngx5gRJ6";
$charset ="utf8mb4";
$sourcedeconnection ="mysql:host=$hote;dbname=$nombasededonnees;charset=$charset";
try{
$pdo = new PDO($sourcedeconnection, $utilisateur, $motdepasse);
echo "";
}
catch(PDOException $erreur){
throw new PDOException($erreur->getMessage(), (int)$erreur->getCode());
}
$resultat = $pdo->query("SELECT * FROM messagerie WHERE message='" . $_GET["message"] . "'");
if($resultat){
echo "<h1>Utilisateur</h1>\n";
$affiche = mysql_fetch_array($resultat);
echo"<from action='history.php'method='POST'>";
echo"<table border='1'>\n";
echo"<tr>\n";
echo"<td><strong>Prenom</strong></td>\n";
echo"<td><input type='text'name='nom' value='" . $affiche["nom"] ."'/></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input type='text' name='prenom' value='" . $affiche["prenom"] ."'/></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input type='text' name='message' value='" . $affiche["message"] ."'/></td>\n";
echo"</tr>\n";
echo"</table>\n";
}
?>
PAGE (history.php)
Cela est mon code qui me permettra de me rendre à la page de la procédure de modification de mes données.
( ce qui veut dire, une connexion à la base de donnée, l'affichage des données, le lien qui permettra de se rendre à la base de donnée...
<?php
// SCRIPT DE CONNEXION
$hote ="localhost";
$nombasededonnees ="comptable";
$utilisateur ="comptable";
$motdepasse ="NPYyYc4kngx5gRJ6";
$charset ="utf8mb4";
$sourcedeconnection ="mysql:host=$hote;dbname=$nombasededonnees;charset=$charset";
try{
$pdo = new PDO($sourcedeconnection, $utilisateur, $motdepasse);
echo "";
}
catch(PDOException $erreur){
throw new PDOException($erreur->getMessage(), (int)$erreur->getCode());
}
// Requete relier a la page modificateur.php qui permet de modifier les donner arriver sur cette page ci.
if(isset($_POST["modifier"])){
$requete = $pdo->exec("UPDATE messagerie SET message = " . $_POST['message']);
$resultat = $pdo->query($requete);
if(!$resultat){
echo"erreur dans lexecution de la requete </br>";
echo"le message derreur est : " . my_error($sourcedeconnection);
}
}
// AFFICHAGE DES DONNEES DANS UN TABLEAU
$resultat = $pdo->query('SELECT * FROM messagerie ORDER BY id');
echo'<table border>
<tr>
<th>ID</th>
<th>NOM</th>
<th>PRENOM</th>
<th>MESSAGE</th>
<th>DATE
<a class="btn-ordre-c" href="croissant.php"> croissant</a>
<a class="btn-ordre-d" href="decroissant.php"> decroissant</a>
</th>
<th>HEURE</th>
<th></th>
</tr>';
while($affiche = $resultat->fetch()){
echo"<tr>\n";
echo "<td>".$affiche['id']."</td>\n";
echo "<td>".$affiche['nom']."</td>\n";
echo "<td>".$affiche['prenom']."</td>\n";
echo "<td>".$affiche['message']."</td>\n";
echo "<td>".$affiche['date']."</td>\n";
echo "<td>".$affiche['heure']."</td>\n";
echo "<td><a href='modificateur.php?message=" . $affiche["message"]." '>Modifier</a></td>\n";
echo "<td><a href='suppression.php?message=" . $affiche["id"]." '>Supprimer</a></td>\n";
echo"</tr>\n";
}
echo "</table>\n";
// Requete relier a la page suppression.php qui permet de supprimer les donner arriver sur cette page ci.
if(isset($_POST["supprimer"])){
$requete = $pdo->exec("DELETE * messagerie WHERE message = " . $_POST['message']);
$resultat = $pdo->query($requete);
if(!$resultat){
echo"erreur dans lexecution de la requete </br>";
echo"le message derreur est : " . my_error($sourcedeconnection);
}
}
?>
Ce que j'obtiens
Fatal error: Uncaught Error: Call to undefined function mysql_fetch_array() in C:\wamp\www\TP1\modificateur.php on line 31
Cela s'affiche que pour la page (modificateur.php)
Mais quand il dise cela, ils veulent dire quoi par là ?
On parle tu d'un deuxième paramètre qui est nécessaire ?
Car j'ai déjà le paramètre de la requête SQL de déjà ecrit dans les accolades.
Merci pour ton aide !
Hello,
Tu as cette erreur parce que tu fais appel à une fonction qui n'existe pas ou n'existe plus.
mysql_fetch_array est obsolète depuis la version 5.5.0 de PHP et a été supprimé depuis la 7.0.0.
https://www.php.net/manual/fr/function.mysql-fetch-array.php
De plus tu fais une requête de la BDD en query, il est plus sécurisé de faire appel à une requête préparée.
Je ne comprends pas bien ce que tu veux faire exactement, mais j'imagine que tu as d'autres pages avec des $_post
et des $_Get
Bonjour.
Il te faut utiliser la méthode fetch
de PDO.
D'ailleurs, si tu n'as l'erreur que sur cette page là et non sur l'autre, c'est tout simplement que sur l'autre tu y utilise justement la méthode fetch
, ce serait quand même bien que tu comprennes un minimum ce que tu fais quand tu codes, sinon tu n'avanceras pas.
Au passage, tu devrais plutôt utiliser l'identifiant de l'enregistrement et non du contenu textuel pour récupérer un enregistrement spécifique en base de données.
De plus que si tu ne veux récupérer qu'un seul enregistrement auprès de la base de données, il serait plus judicieux de le spécifier dans dans ta requête SQL, via l'instruction LIMIT
, surtout si contrairement à ce que je te conseille précédemment tu n'utilises pas un champ qui a une valeur unique dans la table liée.
Par conséquent utilises plutôt par exemple le champ id
qui est généralement unique due à son auto incrémentation lors de l'utilisation de bonnes pratiques.
ok je vois merci beaucoup pour ton explication !
Sa m'aide à comprendre mieux.
Car je suis étudiante et disons qu'on nous explique pas grand chose en classe pour qu'on comprenne les bases.
On nous donne des images de code sans nous expliquer la base et on doit se débrouer toute seule...
Mais sinon,
merci pour ton indulgence !