Pas un pas deux mais trois probleme pour le prix d'un !! ( php et html)
Résolu/Fermé
A voir également:
- Pas un pas deux mais trois probleme pour le prix d'un !! ( php et html)
- La blague des trois nains reponse ✓ - Forum Loisirs / Divertissements
- Deux whatsapp sur un téléphone - Guide
- Editeur html - Télécharger - HTML
- Deux ecran pc - Guide
- Citez deux ports permettant de connecter directement un ordinateur à un écran (tv, vidéoprojecteur, etc.). - Guide
10 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
6 oct. 2021 à 17:51
6 oct. 2021 à 17:51
Bonjour,
Concernant les questions 1 et 2, ceci concerne le code CSS, or nous n'avons pas accès à ce code sur l'exemple.
Pour pouvoir aider sur ces deux questions, il faudrait partager le code HTML affiché dans le navigateur (sans code PHP) ainsi que le code CSS utilisé sur la page.
Concernant la question 3, pas sûr d'avoir bien compris le soucis.
Les images changent lorsque les fichiers dans le dossier upload sont modifiés ?
Dans les commentaires, il est indiqué "Garde les 3 premières images" mais avec les paramètres fournis dans la deuxième utilisation de array_slice, celle-ci devrait retourner seulement une seule image.
Tu pourrais surement simplifier cette partie en utilisant la fonction PHP glob() et une simple boucle for.
Enfin concernant la question bonus, pourquoi ne pas implémenter ton propre système de pagination ? Tu devrais facilement pouvoir trouver pleins de tutoriel à ce sujet.
Bonne journée,
Concernant les questions 1 et 2, ceci concerne le code CSS, or nous n'avons pas accès à ce code sur l'exemple.
Pour pouvoir aider sur ces deux questions, il faudrait partager le code HTML affiché dans le navigateur (sans code PHP) ainsi que le code CSS utilisé sur la page.
Concernant la question 3, pas sûr d'avoir bien compris le soucis.
Les images changent lorsque les fichiers dans le dossier upload sont modifiés ?
Dans les commentaires, il est indiqué "Garde les 3 premières images" mais avec les paramètres fournis dans la deuxième utilisation de array_slice, celle-ci devrait retourner seulement une seule image.
Tu pourrais surement simplifier cette partie en utilisant la fonction PHP glob() et une simple boucle for.
Enfin concernant la question bonus, pourquoi ne pas implémenter ton propre système de pagination ? Tu devrais facilement pouvoir trouver pleins de tutoriel à ce sujet.
Bonne journée,
question 1-2
voila le code css qui est quasiment vide:
question3
j'ai essaye PHP glob() mais rien ne s'affiche
de plus il n'accepte pas la fonction for et affiche la page en erreur 500
question subsidiaire :
j'ai installe une pagination le seul souci est que le nombre d'articles a afficher par page n'est pas pris en compte
probleme ++ :
la page se repete 91 fois
===>>> EDIT: Correction des balises de code ( ajout du langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
voila le code css qui est quasiment vide:
table { min-width : 10% ; max-width : 30% ; width : 50px; } tr { min-width : 10% ; max-width : 30% ; width: -moz-max-content; } td { min-width : 10% ; max-width : 30% ; width: -moz-max-content; width: 50px ; }
question3
j'ai essaye PHP glob() mais rien ne s'affiche
// mise en place image $path = 'upload/'; // chemin vers le dossier contenant tes images (ne pas oublier le slash final) // $tab = scandir($path); // Place tes images dans un tableau // $tab = array_slice($tab, 2); // J'avais oublie que scandir listait . et .. donc on les vires aussi /* // shuffle($tab); // Mélange le tableau */ // $tab = array_slice($tab, 1, 1); // Garde les 3 premières images //on fait une boucle du tableau pour l'affichage // foreach (glob("*.jpg") as $img) //foreach ($tab as $img) // foreach ($img as $img) // condition texte if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_array($result)) { ?> <!-- <tbody> --> <!-- <pre> --> <!-- <div class="boxgrid caption" color="#fff" > --> <td> <tr> <?php echo '<div class="float_foto"><img src="'.$path.$img.'" alt="" width="300px" ><br/> '; echo '</div>'; // fin disclass float foto ?> </td></tr> <td><tr> <p><?php echo $row['name']; ?></p> </td></tr> <td><tr> <p><?php echo $row['price']; echo '€'; ?></p> </td></tr> <!-- </div> <!-- fin div class boxgrid --> <!-- </pre> --> <!-- </tr> --> <!-- </tbody> --> <?php } // fin foreach
de plus il n'accepte pas la fonction for et affiche la page en erreur 500
question subsidiaire :
j'ai installe une pagination le seul souci est que le nombre d'articles a afficher par page n'est pas pris en compte
//pagination $retour_total = $conn->query("SELECT COUNT(*) AS total FROM produits "); //var_dump($retour_total); $donnees_total=mysqli_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total. $messagesParPage=10; //Nous allons afficher 30 messages par page. //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); $sql = "SELECT * FROM produits LIMIT 10"; //$messagesParPage=30; //Nous allons afficher 30 messages par page. //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } // $messagesParPage=10; //Nous allons afficher 30 messages par page. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire //Affichage la liste des pagesSélectionnez //$messagesParPage=10; //Nous allons afficher 30 messages par page. //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcule la première entrée à lire
//pagination suite echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //S'il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="article.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>';
probleme ++ :
la page se repete 91 fois
===>>> EDIT: Correction des balises de code ( ajout du langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
en retour html j'ai ca :
===>>> EDIT: Correction des balises de code ( ajout du langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
<!-- <pre> --> <!-- <div class="boxgrid caption" color="#fff" > --> <td><tr> <div class="float_foto"><img src="upload/31f965i-QiS._AC_UL320_.jpg" alt="" width="300px" ><br/> </div> </td></tr> <td><tr> <p>text</p> </td></tr> <td><tr> <p>0€</p> </td></tr> <!-- </div> <!-- fin div class boxgrid --> <!-- </pre> --> <!-- </tr> --> <!-- </tbody> --> <!-- <tbody> -->
===>>> EDIT: Correction des balises de code ( ajout du langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
13 oct. 2021 à 13:03
13 oct. 2021 à 13:03
Le code html de ton dernier message n'est pas complet. Le code css partagé me semble également un peu vide (rien dans les fichiers style.css et design.css ? Pas de règles css pour les classes .bloc, .boxgrid, .caption, .float_foto ?)
Pour répondre aux questions :
1. Les balises img sont par défaut de type "inline", ces balises vont donc s'afficher les unes à cotés des autres si elles ont la place suffisante.
Néanmoins, d'après ton code, les images à afficher ont une largeur de 300px et celles-ci sont affichées dans un conteneur avec une largeur maximum de 350px. Du coup je ne vois pas vraiment comment tu pourras afficher des images avec cette largeur dans un conteneur trop petit (diminuer la taille des images ou agrandir le conteneur).
2. Tu ne peux pas utiliser la balise br pour positionner une cellule d'un tableau html sur une nouvelle ligne. Pour créer une nouvelle ligne dans un tableau html, il faut utiliser la balise tr.
Tu ne devrais pas utiliser les tableaux html pour faire de la mise en page. Le positionnement des éléments html doit se faire en CSS.
Ton code sera surement plus simple et plus facile à maintenir sans utiliser de tableau html.
3. Toujours pas compris le problème, d'où ma précédente question : Les images changent lorsque les fichiers dans le dossier upload sont modifiés ?
4. La question bonus pourra faire l'objet d'une autre discussion, j'avoue ne pas avoir trop regardé les extraits de code partagé à ce sujet (surement plus simple avec le code complet).
A partir du code partagé dans ton premier message, on constate plusieurs erreur de syntaxe html :
- La chaine "Page de travail" dans la div class="style" n'est pas correcte : soit il s'agit du contenu de la balise div (à déplacer entre les balises div du coup), soit il s'agit de la valeur d'un attribut pour lequel il manque le nom de l'attribut.
- Il faut éviter d'utiliser une balise h3 après une balise h1 sans utiliser de balise h2 : les niveaux des titres ne sont pas cohérents. Si tu utilise la balise h3 car elle s'affiche de manière plus petite que la balise h2, ce n'est pas la bonne approche. Le HTML doit être utilisé pour la sémantique mais pas pour le style. Tu peux toujours modifier la taille du h2 avec du css pour modifier l'affichage.
- Plusieurs erreurs sur l'utilisation du tableau html :
-- La balise table ou tbody ne peut avoir que des balises tr en enfant direct (pas de balise br).
-- La balise tr ne peut avoir que des balises td en enfant direct (pas de pre ou div)
Au lieu d'ajouter un span avec un style max-width directement en html, tu peux simplement ajouter la propriété max-width sur la class css .bloc.
Si la classe .bloc est utilisée sur d'autres pages pour lesquelles tu ne veux pas appliquer le max-width, tu peux aussi créer une autre classe à ajouter en plus de la classe .bloc.
Un début de correction possible :
-> Le code css entre les balises style devrait être déplacé dans une des feuilles de style style.css ou design.css
Pour répondre aux questions :
1. Les balises img sont par défaut de type "inline", ces balises vont donc s'afficher les unes à cotés des autres si elles ont la place suffisante.
Néanmoins, d'après ton code, les images à afficher ont une largeur de 300px et celles-ci sont affichées dans un conteneur avec une largeur maximum de 350px. Du coup je ne vois pas vraiment comment tu pourras afficher des images avec cette largeur dans un conteneur trop petit (diminuer la taille des images ou agrandir le conteneur).
2. Tu ne peux pas utiliser la balise br pour positionner une cellule d'un tableau html sur une nouvelle ligne. Pour créer une nouvelle ligne dans un tableau html, il faut utiliser la balise tr.
Tu ne devrais pas utiliser les tableaux html pour faire de la mise en page. Le positionnement des éléments html doit se faire en CSS.
Ton code sera surement plus simple et plus facile à maintenir sans utiliser de tableau html.
3. Toujours pas compris le problème, d'où ma précédente question : Les images changent lorsque les fichiers dans le dossier upload sont modifiés ?
4. La question bonus pourra faire l'objet d'une autre discussion, j'avoue ne pas avoir trop regardé les extraits de code partagé à ce sujet (surement plus simple avec le code complet).
A partir du code partagé dans ton premier message, on constate plusieurs erreur de syntaxe html :
- La chaine "Page de travail" dans la div class="style" n'est pas correcte : soit il s'agit du contenu de la balise div (à déplacer entre les balises div du coup), soit il s'agit de la valeur d'un attribut pour lequel il manque le nom de l'attribut.
- Il faut éviter d'utiliser une balise h3 après une balise h1 sans utiliser de balise h2 : les niveaux des titres ne sont pas cohérents. Si tu utilise la balise h3 car elle s'affiche de manière plus petite que la balise h2, ce n'est pas la bonne approche. Le HTML doit être utilisé pour la sémantique mais pas pour le style. Tu peux toujours modifier la taille du h2 avec du css pour modifier l'affichage.
- Plusieurs erreurs sur l'utilisation du tableau html :
-- La balise table ou tbody ne peut avoir que des balises tr en enfant direct (pas de balise br).
-- La balise tr ne peut avoir que des balises td en enfant direct (pas de pre ou div)
Au lieu d'ajouter un span avec un style max-width directement en html, tu peux simplement ajouter la propriété max-width sur la class css .bloc.
Si la classe .bloc est utilisée sur d'autres pages pour lesquelles tu ne veux pas appliquer le max-width, tu peux aussi créer une autre classe à ajouter en plus de la classe .bloc.
Un début de correction possible :
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="/css/style.css" /> <link rel="stylesheet" href="/css/design.css" /> <script src="/js/jquery.min.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>Articles</title> <style> .bloc-max350 { max-width: 350px; } .article { color: #fff; } .article-name { font-size: 1.17em; } .article-images img { width: 300px; } </style> </head> <body> <h1>articles :</h1> <?php // Connect to database include("db_connect_mysqli.php"); // recherche du texte $sql = "SELECT * FROM produits"; $result = mysqli_query($conn, $sql); //recherche de l'image require_once("db_connect_mysqli.php"); $sql_2 = "SELECT name FROM file"; $req = mysqli_query($conn, $sql_2); ?> <div class="style">Page de travail</div> <div class="bloc bloc-max350"> <?php if (mysqli_num_rows($result) > 0) : while ($row = mysqli_fetch_array($result)) : ?> <div class="article boxgrid caption"> <h2 class="article-name"><?php echo $row['name']; ?></h2> <div class="article-images"> <?php $path = 'upload/'; $images = glob($path . '*.jpg'); if ($images) { $images = array_slice($images, 0, 4); foreach ($images as $img) { echo '<img src="' . $path . $img . '" alt="">'; } } ?> </div> <p><?php echo $row['description']; ?></p> <p><?php echo $row['price'] . '€'; ?></p> </div> <!-- /.article --> <?php endwhile; endif; ?> </div> <!-- fin div class bloc --> </body> </html>
-> Le code css entre les balises style devrait être déplacé dans une des feuilles de style style.css ou design.css
problemes 1) 2) et 4) resolus
pour le 3) je l'ai remplace par ce code :
le probleme est que je n'arrive pas a l'integrer correctement la j'ai toutes les images qui apparaissent dans une seule table ( je veux 1 image par table )
pour repondre a la question precedente : oui les images changent a chaque maj
pour le 3) je l'ai remplace par ce code :
$repertoire = "upload/";
$iteration = opendir($repertoire);
$fichier = readdir($iteration);
$fichier_info = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($fichier_info, $repertoire.$fichier);
//lister_images("upload/");
le probleme est que je n'arrive pas a l'integrer correctement la j'ai toutes les images qui apparaissent dans une seule table ( je veux 1 image par table )
pour repondre a la question precedente : oui les images changent a chaque maj
jordane45
Messages postés
38367
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 janvier 2025
4 721
28 oct. 2021 à 06:40
28 oct. 2021 à 06:40
Bonjour
Tu parles de table... Mais je ne vois rien de tel dans ton code ..
Le mieux serait que tu mettes cette discussion en résolue et que tu en ouvres une nouvelle specifique pour ce "nouveau" problème dans le forum programmation/php.
Ps: n'oublie pas d'y montrer ton code complet...
Tu parles de table... Mais je ne vois rien de tel dans ton code ..
Le mieux serait que tu mettes cette discussion en résolue et que tu en ouvres une nouvelle specifique pour ce "nouveau" problème dans le forum programmation/php.
Ps: n'oublie pas d'y montrer ton code complet...