pb html

manegedaix

Membre confirmé
10 Avril 2007
71
1
Bonjour, je debute avec sql et l'html. Je voudrais inserer des boutons radio devant chaque ligne de ma requete sql. Le code ci dessous marche sur safari et FF mais pas sous IE. Je pense qu'il contient des fautes mais je ne sais pas lesquels. Quelqu'un peut il m'aiguiller?


Bloc de code:
<html>
<body>
<?php
global $user;
 $cnx = mysql_connect( "localhost", "xxx", "xxx" ) 
         or die ("couldn't connect to server");

  /* selectionne tous les concours de la table concours */

  $query = "SELECT date,lieu,description,coid FROM concours ORDER BY date";
  $result = mysql_query($query)
            or die ("Couldn't execute query.");       

  echo "<div style='margin-left: .1in'>\n
  <h3>Quel concours voulez vous supprimer?</h3>\n";

  /* Creation du formulaire */

  echo "<form action='http://xxx.free.fr/?q=node/33' method='POST'>\n"; 
  echo "<table cellpadding='5' border='1'>  <tr>

<th>Date</th>
<th>Lieu</th>
<th>Déscription</th>

</tr>";
 
  while($row = mysql_fetch_assoc($result))        
  {
     extract($row); 

echo "<tr><td valign='top' width='50%' 
                   style='font-weight: bold; 
                   font-size: 1.2em'\n";
     echo "<input type='radio' name='coid' 
                  value='$coid'\n";             
    echo ">$date</td>";  
  echo "<td>$lieu</td>";                          
    echo "<td>$description</td></tr>";

  }
  echo "</table>";
 
  echo "<p><input type='submit' value='Supprimer le concours'>  
        </form></p>\n";    
              
?>
</div>
</body></html>
 
Tu devrais mettre une doctype.
Pourquoi déclares-tu la variable $user comme global, alors que (1) tu ne t'en sers pas et (2) elle n'est pas dans une fonction ni dans un bloc?
Tu devrais éviter de styliser dans les tags, mais plutot utiliser des css. (Dans le meme ordre d'idée tu devrais eviter de mélanger autant le php et le html).
Dans ton dernier echo, il faut que tu fermes ton paragraphe (</p>) avant ton formulaire (</form>) :
Bloc de code:
echo "<p><input type='submit' value='Supprimer le concours'>  
        </p></form>\n";
 
Tu devrais mettre une doctype.
Pourquoi déclares-tu la variable $user comme global, alors que (1) tu ne t'en sers pas et (2) elle n'est pas dans une fonction ni dans un bloc?
Tu devrais éviter de styliser dans les tags, mais plutot utiliser des css. (Dans le meme ordre d'idée tu devrais eviter de mélanger autant le php et le html).
Dans ton dernier echo, il faut que tu fermes ton paragraphe (</p>) avant ton formulaire (</form>) :
Bloc de code:
echo "<p><input type='submit' value='Supprimer le concours'>  
        </p></form>\n";

Je me sers de la variable $user aprés. Merci de la correction pour le form. Par contre je n'ai toujours pas resolu mon probleme de bouton radio qui n'apparaissent pas sur IE
 
Je me sers de la variable $user aprés. Merci de la correction pour le form. Par contre je n'ai toujours pas resolu mon probleme de bouton radio qui n'apparaissent pas sur IE

ton <input> apparait comme attribut de ton td :
tu as fait
Bloc de code:
echo "<tr><td valign='top' width='50%' 
                   style='font-weight: bold; 
                   font-size: 1.2em'\n";
     echo "<input type='radio' name='coid' 
                  value='$coid'\n";             
    echo ">

Ce qui va produire :
Bloc de code:
<tr><td valign='top' width='50%' style='font-weight: bold; font-size: 1.2em'
<input type='radio' name='coid' value='x' 
> date </td>
et a priori faudrait plus avoir :
Bloc de code:
<tr><td valign='top' width='50%' style='font-weight: bold; font-size: 1.2em'>
<input type='radio' name='coid' value='x' 
> date </td>
 
J'ai mis ton code mais ça marche toujours pas sous IE (par contre toujours OK sous FF et safari).

J'arrive pas a comprendre pourquoi 2 naviguateur fonctionnent et IE bloque!
 
Bloc de code:
echo "<tr><td valign='top' width='50%' 
                   style='font-weight: bold; 
                   font-size: 1.2em'[B][COLOR="Red"]>[/COLOR][/B]\n";
     echo "<input type='radio' name='coid' 
                  value='$coid'\n";

peut-être qu'en fermant la balise <td> comme en rouge au dessus, cela fonctionnerait mieux :siffle:
 
Bloc de code:
echo "<tr><td valign='top' width='50%' 
                   style='font-weight: bold; 
                   font-size: 1.2em'\n";
     echo "<input type='radio' name='coid' 
                  value='$coid'\n";             
    echo ">$date</td>";  
  echo "<td>$lieu</td>";                          
    echo "<td>$description</td></tr>";

essais avec :
Bloc de code:
echo "<tr><td valign='top' width='50%' style='font-weight: bold; font-size: 1.2em'\n";
     echo "<input type='radio' name='coid ' value='" . $coid . "' />\n";             
    echo $date . "</td>";  
  echo "<td>" . $lieu . "</td>";                          
    echo "<td>" . $description . "</td></tr>";

dis-nous si cela fonctionne...

une autre raison est que la requête ne retourne rien. Auquel cas un COUNT dans ta requête SQL nous éclairerait davantage.
 
J'ai fait ce que tu m'as proposer fredmac mais aucun arrangement. Il n'y a toujours pas les boutons radios devant la date dans mon tableau (uniquement sous ce .... d' IE).

Une autre idée?

Quelqu'un aurait il un code "propre" à me proposer?
 
Vérifies bien que le conseil donné par da capo (et le meme par moi, mais moins clair) ont été respectés, puis vire tous les elements de style (valign, margin...) teste comme ca.
Je me permets d'ajouter un conseil: rajoute une doctype, et tache de valider ton code :
par exemple, en termes de html c'est valide (et ca devrait passer sur ie)
Bloc de code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en"> 
<head>
<title>HTML Structure</title> 

<body>


<div style='margin-left: .1in'>
  <h3>Quel concours voulez vous supprimer?</h3>

  /* Creation du formulaire */

<form action='http://xxx.free.fr/?q=node/33' method='POST'>
<table cellpadding='5' border='1'>  <tr>

<th>Date</th>
<th>Lieu</th>
<th>Déscription</th>

</tr>
 
<tr><td >
<input type='radio' name='coid' 
                  value='$coid'>$date</td> 
<td>$lieu</td>                          
<td>$description</td></tr>
</table>
 
<p><input type='submit' value='Supprimer le concours'>  
        </p></form>   

</div>
</body></html>
Encore une fois, vire les styles sure tes balises pour tester, mais si tu as un truc du genre précédent ca devrait marcher (et tu peux tester le truc sur ie et nous dire si tu vois la seule radio box du code, si c'est le cas, ben arrange toi pour que ton code php crache un truc du genre)

PS : je n'ai toujours pas compris pourquoi le global pour $user.
 
le plus étonnant est que tu ne te connectes sur aucune base... je ne vois donc pas comment le script pourrait te renvoyer quoi que ce soit. :D


commence donc par là. ;)

Il a juste, raisonnablement, masqué les données sensibles. Cela dit le probleme ne vient probablement pas de php (vu que ca marche sur les autres navigateurs et que c'est les seules radio box qui disparaissent), mais plutot d'un tag mal clos, ou autre attribut bizarrement compris par ie.

Ps fredmac: pourquoi fais tu de la concaténation de chaines de caracteres, quand les echos sont faits avec des doublequotes, les variables seront nécessairement développées - ou quelque chose m'échappe?
 
bon sinon, j'ai pris le temps de tester : c'est bien la fermeture manquante de la balise td qui n'est pas corrigée par IE.

mais comme il ne lit pas les messages (enfin pas tous) je remets une nouvelle fois la solution à son pb.

Allez, bonne nuit.
 
bon sinon, j'ai pris le temps de tester : c'est bien la fermeture manquante de la balise td qui n'est pas corrigée par IE.

mais comme il ne lit pas les messages (enfin pas tous) je remets une nouvelle fois la solution à son pb.

Allez, bonne nuit.
Ca me semble raisonnable (ca me semblerait meme raisonnable que les autres navigateurs, n'affichent pas un input qui pour eux devraient apparaitre comme un attribut). En tous cas, je me permets de remercier d'avoir testé sur IE (qui ne m'est pas accessible en ce moment), car j'aurai bientot un site à tester, et à force de lire je commencais à me dire que ie7 avait de nouveaux comportements bizarres.
 
Ca me semble raisonnable (ca me semblerait meme raisonnable que les autres navigateurs, n'affichent pas un input qui pour eux devraient apparaitre comme un attribut). En tous cas, je me permets de remercier d'avoir testé sur IE (qui ne m'est pas accessible en ce moment), car j'aurai bientot un site à tester, et à force de lire je commencais à me dire que ie7 avait de nouveaux comportements bizarres.

Si tu ne disposes pas de machine pour tes tests, tu peux toujours soumettre tes pages à cette adresse :

http://browsershots.org/
 
YYYYYEEEEEEEEESSSSSSS. Super les gars. :up:

CA MARCHE. J'ai rajouter tous vos conseils et maintenant ça fonctionne enfin sous IE.

Merci de votre precieuse aide. Je vais ennfin pouvoir continuer.

MERCI encore à tous. Vos conseils sont les meillleurs!!! :)