Valign="top" ne marche pas
Sid05
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Sid05 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Sid05 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit souci avec mon tableau. Le texte reste bloqué en dessous alors que j'aimerais qu'il soit aligné au dessus par rapport à la photo (
)
Voici mon code:
Pouvez-vous m'aider? Merci :-)
J'ai un petit souci avec mon tableau. Le texte reste bloqué en dessous alors que j'aimerais qu'il soit aligné au dessus par rapport à la photo (

Voici mon code:
<p class="titre_recettes">
<tr class="<?php print $classe;?>">
<th rowspan="2"><img src="<?php print $photos ;?>" class="photo" /></th>
<th valign="top"><?php print $nomRecettes;?> (<?php print $nomCat ;?>)</th>
</tr>
<tr class="<?php print $classe;?>">
<td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />Difficulté: <?php print $difficulte;?></td>
</tr>
</p>
Pouvez-vous m'aider? Merci :-)
A voir également:
- Valign="top" ne marche pas
- Set-top box - Accueil - Box & Connexion Internet
- Top site telechargement - Accueil - Outils
- Top clip message - Forum Mail
- Zz top retour vers le futur ✓ - Forum Musique / Radio / Clip
- Top chaise gaming - Guide
23 réponses
Bonjour
Ça devrait mieux marcher si tu mettais ton tableau à l'intérieur de balises <table> au lieu de <p>
Ça devrait mieux marcher si tu mettais ton tableau à l'intérieur de balises <table> au lieu de <p>
Merci pour la réponse, mais ça ne marche pas :s
Enfaite mon tableau se trouve déjà dans des balises <table>
Enfaite mon tableau se trouve déjà dans des balises <table>
print "<table>" ;
$i=1 ;
while($row=mysql_fetch_array($rs)) {
extract($row) ;
if (($i % 2 ) == 0) {
$classe = "paire" ;
} else {
$classe = "impaire" ;
}
?>
<br /><br /><span class="titre_recettes">
<tr class="<?php print $classe;?>">
<th rowspan="2"><a href="index.php?page=23?id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></th>
<th valign="top"><?php print $nomRecettes;?> (<?php print $nomCat ;?>)</th>
</tr>
<tr class="<?php print $classe;?>">
<td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />
Difficulté: <?php print $difficulte;?></td>
</tr>
</span>
<?php
$i++ ;
}
print "</table>"
Salut,
Une balise <table> ne peut contenir que des balises <tr>.
Une balise <tr> ne peut contenir que des <td>.
Une balise <td> peut contenir ce que tu veux.
La balise <p> (ou <span> ou autre) qui entoure ton <tr> est donc incorrect :
Tableau non valide
Tableau valide :
Bonne journée
Une balise <table> ne peut contenir que des balises <tr>.
Une balise <tr> ne peut contenir que des <td>.
Une balise <td> peut contenir ce que tu veux.
La balise <p> (ou <span> ou autre) qui entoure ton <tr> est donc incorrect :
Tableau non valide
<table> <p> <!-- invalide --> <tr><td></td></tr> </p> </table>
Tableau valide :
<table> <tr> <td><p></p></td> </tr> </table>
Bonne journée
Merci.
J'ai essayé ceci, mais ça ne convient toujours pas :s
J'ai essayé ceci, mais ça ne convient toujours pas :s
print "<table>" ;
$i=1 ;
while($row=mysql_fetch_array($rs)) {
extract($row) ;
if (($i % 2 ) == 0) {
$classe = "paire" ;
} else {
$classe = "impaire" ;
}
?>
<tr><p class="titre_recettes"></tr>
<tr class="<?php print $classe;?>">
<th rowspan="2"><a href="index.php?page=23?id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></th>
<th valign="top"><?php print $nomRecettes;?> (<?php print $nomCat ;?>)</th></tr>
<tr class="<?php print $classe;?>">
<td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />
Difficulté: <?php print $difficulte;?></td>
</tr>
<?php
$i++ ;
}
print "</table>" ;
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<tr><p class="titre_recettes"></tr>
Invalide. Où sont le contenu de la balise <p> et la balise de fermeture </p> ?
Peux-tu nous mettre un lien vers ta page si elle est en ligne ? Sinon, peux-tu nous mettre le HTML généré, histoire de ne pas être perturbé par le PHP ?
Effectivement le code html généré sans le php sera plus simple pour nous.
D'ailleurs je remarque que ton code php te permet d'ajouter une classe paire ou impaire sur les lignes de ton tableau, surement pour colorer en css ces lignes avec une couleurs différentes.
Avec CSS3 nous pouvons désormais utiliser la pseudo-classe css :nth-child qui permet de faire la même chose sans avoir besoin d'ajouter une classe sur chaque ligne. Voici un exemple simple : http://jsfiddle.net/hpbyvm2z/
D'ailleurs je remarque que ton code php te permet d'ajouter une classe paire ou impaire sur les lignes de ton tableau, surement pour colorer en css ces lignes avec une couleurs différentes.
Avec CSS3 nous pouvons désormais utiliser la pseudo-classe css :nth-child qui permet de faire la même chose sans avoir besoin d'ajouter une classe sur chaque ligne. Voici un exemple simple : http://jsfiddle.net/hpbyvm2z/
Voilà le code que j'ai remis convenablement. (En effet, je ne sais plus pourquoi il y avait ".titre_recettes"
Et ça donne toujours ceci:
En plus le premier reste "coincé" au milieu :-(
<table>
<tr class="<?php print $classe;?>">
<th rowspan="2"><a href="index.php?page=23?id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></a></th>
<th valign="top"><?php print $nomRecettes;?> (<?php print $nomCat ;?>)</th>
</tr>
<tr class="<?php print $classe;?>">
<td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />
Difficulté: <?php print $difficulte;?></td>
</tr>
</table>
Et ça donne toujours ceci:

En plus le premier reste "coincé" au milieu :-(
<a href="index.php?page=23?id=' . $data['idCat'] . '">
Il te manque des balises <?php ?> autour de $data['idCat'], et enlève les points de concaténation.
Mais ce n'est pas le problème. Chez moi, ton code marche mais je ne sais pas ce qu'il y a dans tes variables php ni dans ton CSS.
Peux-tu comme je te l'ai demandé nous donner le code html généré pour éliminer les problèmes liés à PHP ? Fais un Ctrl U sur la page affichée dans ton navigateur, et copie-colle le code correspondant à cette partie
Merci beaucoup pour vos réponses.
J'ai en effet, regarder le CSS correctement et l'erreur venait de là (j'avais mis un vertical-align: baseline; pour tous le document).
Tout marche :-)
Par contre, j'avais mis le "<?php ?> autour de $data['idCat']" car j'aimerais que quand on clique sur la photo de la recette, on accède à une autre page affichant la recette complète, mais je bloque sur ce point. Pouvez vous m'aider encore une fois?
J'ai en effet, regarder le CSS correctement et l'erreur venait de là (j'avais mis un vertical-align: baseline; pour tous le document).
Tout marche :-)
Par contre, j'avais mis le "<?php ?> autour de $data['idCat']" car j'aimerais que quand on clique sur la photo de la recette, on accède à une autre page affichant la recette complète, mais je bloque sur ce point. Pouvez vous m'aider encore une fois?
<?php
include "include/connexion.inc.php" ;
?>
<?php
echo'<form method="get" action="" >';
echo'<input type="hidden" name="page" value="06" />';
$reponse = mysql_query("select * from tblcategories order by nomCat" );
echo'<select name="idCat">';
while ($donnees = mysql_fetch_array($reponse) )
{
echo '<option value="'.$donnees['idCat'].'">'.$donnees['nomCat'].'</option>';
}
echo'</select>';
echo'<input type="submit" value=" ok ">';
echo'</form>';
?>
<?php
$sql = "SELECT R.*, P.*
FROM tblrecettes R
INNER JOIN tblcategories P
ON R.idCat = P.idCat
WHERE P.idCat = $idCat
ORDER BY R.nomRecettes ";
$rs = mysql_query($sql) or die ("Erreur de requête:$sql");
$i=1 ;
while($row=mysql_fetch_array($rs)) {
extract($row) ;
?>
<br /><br />
<table>
<tr>
<th rowspan="2"><a href="index.php?page=23&id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></a></th>
<th valign="top"><?php print $nomRecettes;?> (<?php print $nomCat ;?>)</th>
</tr>
<tr>
<td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />
Difficulté: <?php print $difficulte;?></td>
</tr>
</table>
<?php
$i++ ;
}
?>
Par contre, j'avais mis le "<?php ?> autour de $data['idCat']"
Justement non, tu ne l'as pas mis. C'est bien ce que je te faisais remarquer.Tu es ici en dehors des balises php, donc ton $data['idCat'] ne veut rien dire. Et tu devrais t'en rendre compte en regardant le code source généré : l'as-tu fait ? C'est souvent un bon moyen de détecter des erreurs.
Tu aurais dû écrire
Justement non, tu ne l'as pas mis. C'est bien ce que je te faisais remarquer.Tu es ici en dehors des balises php, donc ton $data['idCat'] ne veut rien dire. Et tu devrais t'en rendre compte en regardant le code source généré : l'as-tu fait ? C'est souvent un bon moyen de détecter des erreurs.
Tu aurais dû écrire
<a href="index.php?page=23&id=<?php echo $data['idCat'] ?>">
Ok Ok, j'ai changé ça en effet (je débute en php, j'ai repris des vieux cours et j'essaie d'adapter). Mais maintenant sur ma page d'affichage de la recette (page 23), je dois mettre quelque chose de spécial pour que ça affiche la recette ?
Voici mon code pour l'instant (qui ressemble fort à l'autre):
Voici mon code pour l'instant (qui ressemble fort à l'autre):
<?php
echo'<form method="get" action="" >';
echo'<input type="hidden" name="page" value="23" />';
$sql = "SELECT R.*, P.*
FROM tblrecettes R
INNER JOIN tblcategories P
ON R.idCat = P.idCat
WHERE P.idCat = $idCat
ORDER BY R.nomRecettes ";
$rs = mysql_query($sql) or die ("Erreur de requête:$sql");
$i=1 ;
while($row=mysql_fetch_array($rs)) {
extract($row) ;
?>
<table>
<p class="titre_recettes"><?php print $nomRecettes;?></p><p align="center">(auteur de la recette: <?php print $auteur;?>)</p> <br />
<tr class="<?php print $classe;?>">
<th><img src="<?php print $photo ;?>" class="photo_affichage" /></th>
<td>Type de plat: <?php print $nomCat;?><br /><br />
Temps de préparation: <?php print $temps_prepa;?><br /><br />Temps de cuisson: <?php print $temps_cuisson;?><br /><br /> Difficulté: <?php print $difficulte;?></td>
</tr>
<tr class="<?php print $classe;?>">
<td colspan="2"><span class="preparation">Ingrédients (pour <?php print $nombre_pers;?> personnes) :</span><br />
<?php print $nomIng;?></td>
</tr>
<tr class="<?php print $classe;?>">
<td colspan="2"><span class="preparation">Préparation de la recette :</span><br />
<?php print $description;?></td>
</tr>
</table>
<?php
$i++ ;
}
?>
<br />
<form><input type="button" value=" Retour aux recettes ''<?php print $nomCat;?>'' " onClick="history.go(-1)"></form>
</body>
</html>
<?php echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="23" />';
À quoi te sert le php ici ? À rien. Quand tu veux afficher du HTML tout simple (sans variables php), mets-le simplement en dehors des balise php.
je dois mettre quelque chose de spécial pour que ça affiche la recette
Je ne comprends pas ta question. Il suffit de faire un echo du champ qui contient la recette. Éventuellement entre des balises <p> ou <td> ou je ne sais quoi d'autre, tout dépend de la mise en page que tu cherches.
Ici, quand je clique sur la photo pour afficher la recette, il n'y a rien qui s'affiche.
Je pensais qu'il fallait que je crée une nouvelle page (index.php?page=23) d'où le code que je viens de poster un peu plus haut.
Désolé si je ne suis pas très précise :s
Je pensais qu'il fallait que je crée une nouvelle page (index.php?page=23) d'où le code que je viens de poster un peu plus haut.
Désolé si je ne suis pas très précise :s
quand je clique sur la photo
De quelle photo parles-tu ? Celle de ton message #11 :
ou celle de ton message #13 :
Car dans cette dernière, il n'y a pas de lien sur la photo ni de javascript, c'est normal qu'elle ne fasse rien.
De quelle photo parles-tu ? Celle de ton message #11 :
<th rowspan="2"><a href="index.php?page=23&id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></a></th>
ou celle de ton message #13 :
<th><img src="<?php print $photo ;?>" class="photo_affichage" /></th>
Car dans cette dernière, il n'y a pas de lien sur la photo ni de javascript, c'est normal qu'elle ne fasse rien.
De celle-ci:
En gros ça doit faire comme pour le site de marmiton par exemple (https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=pouets
On clique sur l'image et on a la recette complète qui s'affiche
<th rowspan="2"><a href="index.php?page=23&id=' . $data['idCat'] . '"><img src="<?php print $photos ;?>" class="photo" /></a></th>
En gros ça doit faire comme pour le site de marmiton par exemple (https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=pouets
On clique sur l'image et on a la recette complète qui s'affiche
<a href="index.php?page=23&id=' . $data['idCat'] . '">
As-tu bien remis les balises <?php ?> comme dir dans mon message #12 ?
Ton lien envoie sur la page index.php. Y a-t-il dans index.php du code qui analyse les valeurs de 'page' et de 'id' pour afficher une recette spécifique ? Si non, que fait cette page index.php ?
As-tu bien remis les balises <?php ?> comme dir dans mon message #12 ?
Ton lien envoie sur la page index.php. Y a-t-il dans index.php du code qui analyse les valeurs de 'page' et de 'id' pour afficher une recette spécifique ? Si non, que fait cette page index.php ?
Bonjour,
Je reviens vers vous (mon ordi était en réparation).
Justement, je ne sais pas comment faire pour que index.php analyse les valeurs de la page et de l'id pour afficher la recette...
Je reviens vers vous (mon ordi était en réparation).
Justement, je ne sais pas comment faire pour que index.php analyse les valeurs de la page et de l'id pour afficher la recette...
Les paramètres que tu as passé dans l'url (page=23 & id=machin) ou dans un formulaire avec la méthode "get" se retrouvent dans le tableau superglobal $_GET.
Les champs que tu as envoyés avec un formulaire avec la méthode post (à utiliser de préférence) se retrouvent dans le tableau superglobal $_POST
Avec l'exemple ci-dessus, tu retrouves la valeur 23 dans $_GET['page'] et 'machin' dans $_GET['id']. À toi de mettre ces valeurs dans une requête pour extraire l'information dont tu as besoin et l'afficher.
Ajoute un "print_r ($_GET) ;" au début de ton script pour voir ce qu'il y a dedans. Tu l'effaceras après, bien sûr.
Les champs que tu as envoyés avec un formulaire avec la méthode post (à utiliser de préférence) se retrouvent dans le tableau superglobal $_POST
Avec l'exemple ci-dessus, tu retrouves la valeur 23 dans $_GET['page'] et 'machin' dans $_GET['id']. À toi de mettre ces valeurs dans une requête pour extraire l'information dont tu as besoin et l'afficher.
Ajoute un "print_r ($_GET) ;" au début de ton script pour voir ce qu'il y a dedans. Tu l'effaceras après, bien sûr.
Voilà, j'ai changé mon code:
Pour la page recettes.php (avec la liste des recettes):
Et pour la page qui affiche la recette:
Mais voilà ce qui s'affiche:
Erreur SQL !
SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="4"
No database selected
Pour la page recettes.php (avec la liste des recettes):
<?php extract($_GET); if(!isset($idCat)) { $idCat= "29"; } ?> <label for="categorie" class="select">Rechercher par catégorie</label> <?php echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="06" />'; $reponse = mysql_query("select * from tblcategories order by nomCat" ); echo'<select name="idCat">'; while ($donnees = mysql_fetch_array($reponse) ) { echo '<option value="'.$donnees['idCat'].'">'.$donnees['nomCat'].'</option>'; } echo'</select>'; echo'<input type="submit" value=" ok ">'; echo'</form>'; ?> <?php include "include/connexion.inc.php" ; ?> <br /><br /> <?php $sql = "SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idCat = $idCat ORDER BY R.nomRecettes "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); echo "<table>\n"; while ($data = mysql_fetch_array($req)) { // on affiche les résultats echo "<tr>"; echo "<td rowspan="2" padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo '<a href="inc/recettes_affichage.php?id_recette_a_lire=' , $data['idRecettes'] , '"><img src="./mini/'.$photo.'" border="none" height="auto" width="100px"/><br/></a>'; echo "</td>"; echo "<th padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo ''.$data['nomRecettes'].' ('; echo ''.$data['nomCat'].')'.'<br />'; echo "</th>"; echo "</tr>"; echo "<tr>"; echo "<td padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo 'Temps de préparation: '.$data['temps_prepa'].' - '; echo 'Temps de cuisson: '.$data['temps_cuisson'].'<br />'; echo 'Difficulté: '.$data['difficulte'].'<br />'; echo "</td>"; echo "</tr>"; } echo "</table>\n"; mysql_free_result ($req); mysql_close (); ?> </body> </html>
Et pour la page qui affiche la recette:
<?php include "include/connexion.inc.php" ; ?> <?php if (!isset($_GET['id_recette_a_lire'])) { echo 'Sujet non défini.'; } else { echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="23" />'; $sql = 'SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="'.$_GET['id_recette_a_lire'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($data = mysql_fetch_array($req)) { echo "<tr>"; echo "<td> "; echo ''.$data['nomCat'].')'.'<br />'; echo "</td>"; echo "</tr>"; } ?> <table>
Mais voilà ce qui s'affiche:
Erreur SQL !
SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="4"
No database selected
extract($_GET);
L'instruction extract sur des données venant de l'extérieur est à proscrire à tout prix. Elle t'économise deux ou rois lignes de code, mais elle facilite grandement le travail des pirates qui peuvent ajouter et modifier toutes les variables qu'ils veulent dans ton script, simplement en les mettant dans l'url.
No database selected
Il y a quelque chose qui n'est pas clair dans ce message ? Visiblement, il n'y a pas de base de sélectionnée : à toi de voir où tu le fais et d'afficher le message d'erreur qu'il y a certainement.
L'instruction extract sur des données venant de l'extérieur est à proscrire à tout prix. Elle t'économise deux ou rois lignes de code, mais elle facilite grandement le travail des pirates qui peuvent ajouter et modifier toutes les variables qu'ils veulent dans ton script, simplement en les mettant dans l'url.
No database selected
Il y a quelque chose qui n'est pas clair dans ce message ? Visiblement, il n'y a pas de base de sélectionnée : à toi de voir où tu le fais et d'afficher le message d'erreur qu'il y a certainement.