Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 30/06/2016, à 19:23

gboul

[Résolu] Résultat recherche MySQL

Bonjour à tous,
J'avais un serveur avec Ubuntu serveur 14.04 d'installé. Suite à un problème, j'ai dû le réinstaller. et j'ai gardé toutes les pages php de mon site internet.

Ce site avait une page principale où était affiché les dernières images ou vidéos téléchargées. Pour cela, j'allais dans ma base MySQL et je récupérais les dernières entrées.

Cela fonctionnait très bien sous Ubuntu 14.04, mais depuis que fait une réinstallation avec Ubuntu 16.04, plus moyen d'avoir ces résultats. J'avais aussi une recherche et lorsque je l'utilise, j'ai une page blanche.
Je me suis dit qu'il pouvait y avoir un problème d'accès avec localhost, mais lorsque je me connecte à ma base MySQL avec en ligne de commande, avec localhost, j'arrive à avoir des résultats de recherche.

Est-ce que quelqu'un saurait d'où pourrait venir le problème, s'il vous plaît? Peut-être un module PHP qu'il faut activé ou autre chose du même style?

Pour information, j'avais aussi mis une petite variable utilisable dans l'URL (index.php?n=5) afin de déterminer le nombre de dernière vidéos je voulais afficher. Mais lors de l'utilisation de cet artifice, j'ai la page d'apache qui indique que la page n'existe pas, alors qu'avec Ubuntu 14.04, tout fonctionnait bien.

Merci beaucoup pour votre aide.

Dernière modification par gboul (Le 01/01/2017, à 13:32)

Hors ligne

#2 Le 30/06/2016, à 20:24

bertrand0

Re : [Résolu] Résultat recherche MySQL

Peut-être un problème de version de Php ? Vérifie que ton code est conforme à la version utilisée...


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#3 Le 30/06/2016, à 22:57

Rufus T. Firefly

Re : [Résolu] Résultat recherche MySQL


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)

En ligne

#4 Le 30/06/2016, à 23:12

bertrand0

Re : [Résolu] Résultat recherche MySQL

Effectivement, vous êtes sensé utiliser pdo maintenant.


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#5 Le 30/06/2016, à 23:45

Rufus T. Firefly

Re : [Résolu] Résultat recherche MySQL

Ou mysqli


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)

En ligne

#6 Le 01/01/2017, à 13:32

gboul

Re : [Résolu] Résultat recherche MySQL

bertrand0 a écrit :

Effectivement, vous êtes sensé utiliser pdo maintenant.

Effectivement, j'ai maintenant essayé avec PDO et ça marche. J'avais déjà essayé, mais ça n'avais pas marché à cause de la syntaxe.
La première fois que j'ai essayé PDO, je l'ai écris comme ça:

$mysql = new PDO('mysql:host=localhost;dbname=ma_base', user, password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$link = mysql_connect($mysql) or die("Impossible de se connecter : " . mysql_error());

Mais en fait, ça ne fonctionne pas, il faut utiliser la syntaxe suivante avec mysqli:

$link = mysqli_connect(localhost, user, password, ma_base);
//Vérification connexion
if (mysqli_connect_errno()) {
    printf("Echec de la connexion : %s\n", mysqli_connect_error());
    exit();
}
if ($requete = mysqli_query($link, "SELECT id FROM ma_table ORDER BY id"))
 {
insérer les instructions MySQL ici
 }

J'ai eu du mal à trouver la bonne syntaxe, car sur les site que j'avais trouvé, tout n'était pas clair. Il faut donc utiliser une fonction IF qui vérifie que le connexion à MySQL a bien été effectuée et il faut utiliser les fonctions mysqli.

Dernière modification par gboul (Le 01/01/2017, à 13:35)

Hors ligne

#7 Le 01/01/2017, à 15:03

Rufus T. Firefly

Re : [Résolu] Résultat recherche MySQL

gboul a écrit :
$mysql = new PDO('mysql:host=localhost;dbname=ma_base', user, password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$link = mysql_connect($mysql) or die("Impossible de se connecter : " . mysql_error());

Là tu mélanges 2 choses, PDO qui est une classe (programmation objet) et mysql_connect.

Quand tu fais $mysql = new PDO (...) tu crées une instance (un objet) de la classe PDO par un appel implicite au constructeur __construct (défini dans la classe). Une fois que cette instance $mysql est crée, non seulement la connexion à la base est faite, mais tu accèdes aux propriétés et méthodes (publiques, parce qu'il peut y en avoir qui sont privées) définies dans la classe.

Exemple : tu veux lancer une requête $sql="select x,y,z from ma_table";
Tu peux utiliser la méthode query de l'instance $mysql que tu viens de créer
$result = $mysql->query($sql);

$result est un objet PDOStatement, qui a lui-même des propriétés et des méthodes.
Si tu veux par exemple le nombre de lignes renvoyées par ta requête :
$lignes= $result->rowCount();
Tu peux aussi configurer $result pour qu'il te renvoie les résultats comme tu le souhaites, etc.

Ça a l'air plus compliqué mais, une fois qu'on maîtrise, c'est en fait plus simple et surtout beaucoup plus propre

Dernière modification par Rufus T. Firefly (Le 01/01/2017, à 15:10)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)

En ligne