Menu

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

Messages postés
2
Date d'inscription
mercredi 14 novembre 2018
Dernière intervention
23 novembre 2018
-
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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
24613
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2019
1856
0
Merci
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


Commenter la réponse de jordane45
Messages postés
2
Date d'inscription
mercredi 14 novembre 2018
Dernière intervention
23 novembre 2018
0
Merci
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']));
Commenter la réponse de phil065