voila j'essayer d'apprendre à créer un cms avec tutoriel copier/coller sur un site web.
Mais apparement le code de ce monsieur ne fonctionne pas comme prévu??
il utilise mysqli pour les connexion le problem c'est que je n'est pas assez les compétences pour comprendre sont code pour passer à PDO.
même si il y a des milliers d'exemple sur le net..
le message d'erreur:
Fatal error: Call to undefined function mysqli_fetch_all() in /var/www/html/blog/includes/public_functions.php on line 11
et la fonction ou çà plante:
<?php
/* * * * * * * * * * * * * * *
* Returns all published posts
* * * * * * * * * * * * * * */
function getPublishedPosts() {
// use global $conn object in function
global $conn;
$sql = "SELECT * FROM posts WHERE published=true";
$result = mysqli_query($conn, $sql);
// fetch all posts as an associative array called $posts
$posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
$final_posts = array();
foreach ($posts as $post) {
$post['topic'] = getPostTopic($post['id']);
array_push($final_posts, $post);
}
return $final_posts;
}
Quelqu'un peut m'aider à remplacer la fonction mysqli_fetch_all par une au fonction , j'ai trouver une solution qui fonction qui est:
function getPublishedPosts() {
// use global $conn object in function
global $conn;
$sql = "SELECT * FROM posts WHERE published=true";
$result = mysqli_query($conn, $sql) or die ("Error in Selecting " . mysqli_error($conn));;
$posts = array();
while ($row = $result->fetch_assoc()) {
$posts[] = $row;
}
return $posts;
}
// more functions to come here ...
?>
mais apres je sais pas comment l'adapter avec la suite du code qui est :
/* * * * * * * * * * * * * * *
* Receives a post id and
* Returns topic of the post
* * * * * * * * * * * * * * */
function getPostTopic($post_id){
global $conn;
$sql = "SELECT * FROM topics WHERE id=
(SELECT topic_id FROM post_topic WHERE post_id=$post_id) LIMIT 1";
$result = mysqli_query($conn, $sql);
$topic = mysqli_fetch_assoc($result);
return $topic;
}
Le code pris pour modèle me semble très loin d'être propre (or die, global, manque d'échappement ou plutôt cast sur $post_id, pourrait plus efficace sur le chargement des topics, etc) ...
> Quelqu'un peut m'aider à remplacer la fonction mysqli_fetch_all par une au fonction
mysqli_fetch_all n'est disponible que si mysqli est compilé pour utiliser mysqlnd au lieu de libmysql (cf sa doc).
Une correction serait d'ajouter ce code :
if (!function_exists('mysqli_fetch_all')) {
function mysqli_fetch_all(mysqli_result $result) {
$rows = [];
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
}
}
De façon à créer la fonction en PHP pur quand elle n'est pas disponible.
> mais apres je sais pas comment l'adapter avec la suite du code qui est :
Je ne comprends pas le problème, tu ne devrais rien avoir à faire par rapport au remplacement ou ajout de mysqli_fetch_all.
du moin je vais te dire ce que j'ai compris , tu a ecris :
si la fonction mysqli_fetch_all n'existe pas alors tu créer un tableau $row puis tu boucle sur while et tu afffiche chaque ligne dans la variable rows et enfin de parcours tu retourne la variable $rows pour l'afficher
par contre j'arrive pas a comprendre le dernier bloc comment il est relier au bloc de la fonction que ta créer encore bravo..
Hum, il doit te manquer des bases en programmation.
Je ne fais que créer la fonction (écrite en PHP) si elle n'existe pas/n'est pas disponible au niveau de PHP (écrite en C, on en revient à l'histoire de mysqlnd vs libmysql utilisée comme bibliothèque cliente).
Au final, "ma" fonction ne fait que ce que tu avais déjà écrit en remplaçant le mysqli_fetch_all par le while ($row = mysqli_fetch_assoc($result)) pour stocker tous les résultats dans un tableau. Mais, en procédant ainsi, tu n'as pas à remplacer chaque occurrence de mysqli_fetch_all comme tu étais parti pour le faire.
Pour ta dernière question, de ce que je comprends, en rien si ce n'est juste par l'appel à mysqli_fetch_all (ligne 12).
EDIT : non, pour ton edit, pourquoi mets-tu une fonction dans une fonction ? Non seulement je ne sais même pas comment ça pourrait fonctionner entre le manque d'appel et de return mais pourquoi tu aurais besoin d'une fonction fetchall1 quand tu peux appeler directement mysqli_fetch_all. Je ne comprends absolument pas ce que tu cherches à faire !
Fatal error: Call to undefined function mysqli_fet
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli