8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis nouveau sur le forum et je me permet de poser une petite question. Je suis entrain de tester un site qui fonctionne très bien sous php 5.4 et par curiosité je le teste sous php 7.0.

Oh mauvaise surprise car mysql_query ne fonctionne plus depuis php 5.5.

Je galère avec mon code sur php.net j'ai ça comme info : À la place, vous pouvez utiliser l'extension MySQLi ou l'extension PDO_MySQL.

Le plus simple pour moi ? J'ai du mal à voir la différence, lequel des deux sera le plus simple pour moi pour faire fonctionner mon site.

D'avance, je vous remercie de vos précieux conseils.

Dave.
Modifié par Tintin75 (16 Jan 2016 - 19:05)
Administrateur
Je ne pense pas qu'il y ait de plus simple. C'est une question d'habitude et il faudra adapter le code. Autant partir sur pdo qui présente des avantages intéressants.
Merci de ton retour, je suis entrain de regarder.

J'ai un petit problème avec cette ligne de code :

 <?php
  $adresse = "http://".($_SERVER['SERVER_NAME']).($_SERVER["REQUEST_URI"]);
  ?>

  <?php $_SESSION['adresse'] = $adresse; ?> 


Je n'arrive pas à récupérer ma valeur $adresse.

J'ai bien mis
<?	 
session_start();
?>


Ca fonctionne sous php 5.4 mais pas en php 7.1

J'ai beau regarder je ne trouve pas la cause. Merci d'avance pour vos lumières.

Dave
Modifié par Tintin75 (17 Jan 2016 - 11:56)
Modérateur
Bonjour,

Il y a quoi dans tes variables $_SERVER['SERVER_NAME'] et $_SERVER["REQUEST_URI"] ?

Amicalement,
Merci, mais les deux variables fonctionnent très bien en php 5.4. De mémoire, c'est pour avoir l'adresse url complète. Le code fonctionne bien, c'est juste pour faire passer la valeur du résultat dans la variable pour l'afficher dans une autre page via $adresse.

Le truc c'est que lors du passage en mode test de php 5.4 vers 7.1, je collectionne les ennuis. Requêtes SQL et variable qui ne passe pas. Pour les requêtes SQL, j'ai trouvé la solution en faisant évoluer le code. Pour les variables, là je vois pas pourquoi ça ne fonctionne pas. Aucune variable sur le site ne passe.

Je m'arrache les cheveux, ça va que c'est un VPS, prévu pour faire du test de code, autrement je n'ose imaginer le résultat ... Smiley decu

Bon dimanche, et merci pour vos retours.

Amicalement.

Dave
Modifié par Tintin75 (17 Jan 2016 - 13:28)
Modérateur
Bonjour,

Je repose ma question. Il y a quoi dans tes variables sur ton php 7.1 ?

Sont-elles indéfinies ? Ou bien ont-elles une valeur erronée ?

Selon la configuration de ton serveur, ces variables peuvent contenir des résultats différents.

Amicalement,
Le code en version test, fonctionne parfaitement en php 5.4, pour une évolution du code, je test ce code sur un serveur en php 7.1, histoire de voir les bugs ou les modifications à apporter.

Dans mes variables, il y a du texte et des chiffres, suivant les besoins.

$adresse, $prix, $ville.

Je ne suis pas professionnel de l'informatique, mais je me débrouille un peu. Pourquoi, ça a fonctionné en php 5.4 et pas en 7 ? J'ai fait des évolutions du code en changeant de version php, je sais qu'il faut modifier le code avec les évolutions, mais là je vois pas pourquoi aucune valeur ne passe pas.

Réglage du serveur ? Bref, je sèche ...

Il y a une explication. Aucune valeur sur toutes fonctions sur le site ne passe.

Amicalement.
Modifié par Tintin75 (17 Jan 2016 - 13:48)
Modérateur
Bonjour,

D'un serveur à l'autre, les configurations varient. Ce n'est pas parce que ton code marche sur un serveur en php 5.4 qu'il va donné les mêmes résultats sur un autre serveur en php 7.1. La variable $_SERVER['SERVER_NAME'] en particulier ne donne pas toujours exactement le même résultat d'un serveur à l'autre selon les circonstances. Si sa valeur n'est pas celle attendue, ta variable $adresse ne contiendra pas la bonne valeur.

EDIT : je voulais écrire "$_SERVER['SERVER_NAME'] en particulier ne donne pas toujours le résultat attendu d'un serveur à l'autre selon les circonstances."

Pour faire le diagnostic, il faut donc que tu vérifies en premier lieu si $_SERVER['SERVER_NAME'] et $_SERVER["REQUEST_URI"] contiennent bien ce que tu attends pour que $adresse soit correcte.

Amicalement,
Modifié par parsimonhi (17 Jan 2016 - 14:06)
La variable ne passe pas, je viens de tester. Merci encore.
Modifié par Tintin75 (17 Jan 2016 - 14:14)
Ca veut dire quoi quand tu dis que ça ne passe pas ? la valeur est indéfinie ? null ? chaîne vide ? Elle provoque une notice ou une erreur quand tu essaies de l'utiliser ?
Bonjour,

Je n'ai pas la valeur en retour. Code identique à Php 5.4.

Je viens te tester MySQLi et PDO_MySQL et il faut réécrire tout le code par rapport à MySQL. Dans mon cas ça me complique la vie pour un gain de 0 pour mon cas vue que ce n'est que pour afficher des valeurs dans une base de donnée.

Bref, la semaine commence bien.

Bonne journée.

Dave
Modérateur
Bonjour,

Insére le code ci-dessous juste après ta balise <body>, et regarde si tu as "SERVER_NAME indéfini" en haut de la page ou bien autre chose. Si c'est autre chose, compare avec ton autre serveur.
<?php
if (isset($_SERVER['SERVER_NAME'])) print "Serveur name : ".$_SERVER['SERVER_NAME']."<br>";
else print "SERVER_NAME indéfini<br>";
?>


Amicalement,
Bonjour,

J'ai en retour :

Serveur name : vpsXXXX.ovh.net

Notice: Undefined variable: _SESSION in

Merci de ton aide.
Modifié par Tintin75 (18 Jan 2016 - 15:14)
Modérateur
Bonjour,

Bon, donc tu as bien une valeur pour server_name.

As-tu exactement la même chose en php 7 et php 5 ?

Amicalement,
Honte à moi !!!

Je tapais <? au lieu de <?php !!!

Sur la version 5.4 ça passait mais en 7 il faut tout taper !!!

Donc je vais me prendre un bon coup de pied au fesse pour cette faignantise !!!

J'avance bien en pdo, finalement, c'est pas la mort du petit cheval Smiley smile

Ca fonctionne beaucoup mieux tout d'un coup !!!
Modifié par Tintin75 (18 Jan 2016 - 16:11)
C'est pas comme si les développeurs de PHP n'avait pas prévenu, MySQL_query et les short tags, ça fait déjà plusieurs années que c'est plus ou moins officiellement deprecated.
Je m'y colle, ça avance bien. J'avais déjà programmé en pdo il y a longtemps. Je vois pas trop de gros changement par rapport à mysql, pour mon cas.

Le principal est que mon code tourne sur un serveur php7.

J'ai tout mon temps vue que c'est un serveur pour le dev. Ca me coûte que la location du serveur au mois.

J'adore apprendre alors je suis heureux.

Les variables passent avec ma correction, reste à dompter les modifs à faire.

Merci encore pour votre aide.

Dave Smiley smile