Mon script que j'ai fait évolué en php7 ne fonctionne plus alors que sous php 4.

Résolu/Fermé
Utilisateur anonyme - Modifié le 14 nov. 2018 à 14:25
 Utilisateur anonyme - 23 nov. 2018 à 13:41
Bonjour,

Depuis de nombreuses années, j'utilise un script pour poster des news sur mon site. Jusqu'à présent, il fonctionnait comme il faut sous php 4.5. Comme mon hébergeur (OVH) me demande de passer en php 7, j'ai dû modifier le code ce qui engendre un souci pour modifier les news. En effet, lorsque je sélectionne une news à modifier, son contenu est vide et il est, par conséquent, impossible de procéder à la modification. Le nouveau code du fichier qui semble poser problème est :
$retour = $connexion->query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
$donnees = mysqli_fetch_array($retour);

Ci-dessous, l'ensemble du code que j'ai modifié :
<?php
// on pose les constantes.
$host = 'toto.mysql.db';
$login = 'philippe';
$password = 'test';
$bdb = 'mabdd';
//  Etablissement de la connexion SQL
$connexion = mysqli_connect($host, $login, $password, $bdb);
if (!$connexion)
{
 die('Connexion au serveur impossible : '.mysqli_connect_errno().' ; '.mysqli_connect_error());
}
if (isset($_GET['modifier_news']))
{
    // Si on demande de modifier une news.
    // On protège la variable « modifier_news » pour éviter une faille SQL.
    $_GET['modifier_news'] = mysqli_real_escape_string(htmlspecialchars($_GET['modifier_news']));
    // On récupère les informations de la news correspondante.
    $retour = $connexion->query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
    $donnees = mysqli_fetch_array($retour);

    // On place le titre et le contenu dans des variables simples.
    $titre = stripslashes($donnees['titre']);
    $contenu = stripslashes($donnees['contenu']);
    // Cette variable va servir pour se souvenir que c'est une modification.
    $id_news = $donnees['id'];
}
else
{
    // C'est qu'on rédige une nouvelle news.
    // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news.
    $titre = '';
    $contenu = '';
    // La variable vaut 0, donc on se souviendra que ce n'est pas une modification.
    $id_news = 0;
}
?>


Pourrez-vous, si possible, m'aider à résoudre ce problème ou m'orienter vers une personne qui pourrait le faire surtout que je ne suis pas développeur.

Dans l'attente de votre réponse, je vous remercie pour votre aide précieuse.

Salutations cordiales,

Phil065

EDIT : Ajout des BALISES DE CODE
A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
14 nov. 2018 à 14:29
Bonjour,

Déjà... attention à ne pas mélanger le style "objet"
$connexion->query
et le style procédural
mysqli_connect

Tu dois utiliser ou l'un ... ou l'autre

Ensuite, il faut gérer les éventuelles erreurs...
regarde comment est codé l'exemple ici :
https://www.w3schools.com/php/func_mysqli_error.asp

NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


0
Utilisateur anonyme
23 nov. 2018 à 13:41
Après etude de mon problème de script, voici ce qui manquait pour qu'il fonctionne "$connexion" :
$_GET['modifier_news'] = mysqli_real_escape_string($connexion, htmlspecialchars($_GET['modifier_news']));
0