2 tables liées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : 2 tables liées

par FAbrice » 09 févr. 2005, 21:42

alut,

Vi, j'avis bien compris que tu n'avais presque donné la sol mais gt débordé de boulot! :shock:

je regarde ca (je pense ce WE ) et je te dis si tout va bien ;=)

en tout as merci bcq
FAb

par remram44 » 09 févr. 2005, 12:43

Qu'est-ce que c'est que ce code :shock: !?

Pas de <html>, 2 <head>, un </select> sans <select> ... pas un seul commentaire...

Et puis, apparement, tu t'y connais pas du tout en JavaScript, parce que j'ai donné la réponse juste au dessus... L'idée c'est que quand tu sélectionne quelque chose dans le premier select, tout le contenu du deuxième est modifié. Pour cela il est d'abord vidé, puis réécrit suivant ce qui est sélectionné. Le JavaScript est généré par PHP sur le serveur, puis envoyé avec la page au client (le JavaScript tourne côté client, contrairement au PHP). Pour adapter ce code, tu vas bien sûr avoir besoin de connaître un minimum de JavaScript...

Le code que je t'ai donné part du principe que tes selects s'appellent z1Rubrique et z1Item, et qu'il se trouve dans un form frmDemo1.
Les données se trouve dans l'exemple dans les tables demo_rubrique et demo_item (voir le lien pour leurs structures).
Le code est un poil compliqué, c'est vrai, mais c'est du HTML modifié par du JavaScript lui même écrit par PHP... si tu ne connais pas l'un des trois, c'est sûr que tu ne vas pas pouvoir l'utiliser.
Mais si tu ne connais pas le JavaScript, sache que tu peux quand même faire une première page avec le premier select, puis une deuxième page avec le second select...
En fait, il ne faut pas que je réactualise ma page car sinon, je perdrais mais données.
:shock: Je ne vois toujours pas pourquoi tu perdrais quoi que ce soit... L'attribut ACTION de ton form peut être une page avec des infos après un '?' (méthode GET), ou tu peux placer des <input type="hidden"> dans le form...

par FAbrice » 08 févr. 2005, 20:44

Salut remram44!

Ola, tu me sauve ma vie! :D

le code pourrais se résumer en fait a ca (si on enlève tout ce qui touche aux models!
<?php require_once('Connections/ateliermeca.php'); ?> 
<?php 
mysql_select_db($database_ateliermeca, $ateliermeca); 
$query_marques = "SELECT * FROM marques"; 
$marques = mysql_query($query_marques, $ateliermeca) or die(mysql_error()); 
$row_marques = mysql_fetch_assoc($marques); 
$totalRows_marques = mysql_num_rows($marques); 

mysql_select_db($database_ateliermeca, $ateliermeca); 
$query_models = "SELECT * FROM models"; 
$models = mysql_query($query_models, $ateliermeca) or die(mysql_error()); 
$row_models = mysql_fetch_assoc($models); 
$totalRows_models = mysql_num_rows($models); 
?> 
<head>
<?php 
do {   
?> 
      <option value="<?php echo $row_marques['Marques']?>"><?php echo $row_marques['Marques']?></option> 
      <?php 
} while ($row_marques = mysql_fetch_assoc($marques)); 
  $rows = mysql_num_rows($marques); 
  if($rows > 0) { 
      mysql_data_seek($marques, 0); 
     $row_marques = mysql_fetch_assoc($marques); 
  } 
?> 
    </select> 
    <select name="select2"> 
      <?php 
do {   
?> 
      <option value="<?php echo $row_models['Models']?>"><?php echo $row_models['Models']?></option> 
      <?php 
} while ($row_models = mysql_fetch_assoc($models)); 
  $rows = mysql_num_rows($models); 
  if($rows > 0) { 
      mysql_data_seek($models, 0); 
     $row_models = mysql_fetch_assoc($models); 
  } 
?> 
<head>
<?php 
mysql_free_result($marques); 

mysql_free_result($models); 
?>  
 
voila, ci ca peut t'aider....

merci bcq,
FAb

par remram44 » 08 févr. 2005, 20:34

En fait, il ne faut pas que je réactualise ma page car sinon, je perdrais mais données.
Pourquoi ?

Ensuite, c'est pas Java mais JavaScript.

Enfin, je penche sur la question, je reviens (mais j'ai vraiment pas envie de lire tout ton code...)

[edit : ]
Alors là, franchement, c'est pas la peine que j'aide... Tout est déjà ici :

http://www.phpinfo.net/articles/article_listes.html
<?php

@mysql_connect($hote, $user, $pass);

?>

<SCRIPT LANGUAGE="JavaScript">

function ModifierListe(code_item) {
  
  lg = document.frmDemo1.zlItem.length;
  
  // On vide la liste
  for (i = lg - 1; i >= 0; i--) {
    document.frmDemo1.zlItem.options[i] = null;
  }
    
  code_rub = document.frmDemo1.zlRubrique.selectedIndex;

<?php

// Génération des Items par Rubriques
$sql = "SELECT code FROM demo_rubrique ORDER BY code";
$resultat = mysql_db_query($Base, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {
  
  $sql  = "SELECT code, item ";
  $sql .= "FROM demo_item ";
  $sql .= "WHERE code_rub='".$enr[0]."'";
  $sql .= "ORDER BY item";
  $resultat2 = mysql_db_query($Base, $sql);

  echo "  if (document.frmDemo1.zlRubrique.options[code_rub].value == ".$enr[0].") {\n";
  echo "    document.frmDemo1.zlItem.length = ".(mysql_num_rows($resultat2)).";\n";
  $cpt = 0;
  while ($enr2 = mysql_fetch_array($resultat2)) {
    echo "    document.frmDemo1.zlItem.options[".$cpt."].value = ".$enr2[0].";\n";
    echo "    document.frmDemo1.zlItem.options[".$cpt."].text  = "".$enr2[1]."";\n";
    echo "    if (code_item == ".$enr2[0].") document.frmDemo1.zlItem.options[".$cpt."].selected = true;\n";
    $cpt++;
    if ($cpt > $max_lignes) $max_lignes = $cpt;
    if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
  }
  echo "  }\n";

}

?>
      
}  

</SCRIPT>


<?php

// ----------------------------------------------------------------------------
// Liste Rubriques
// ----------------------------------------------------------------------------
$sql = "SELECT code, rubrique FROM demo_rubrique ORDER BY rubrique";
$resultat = mysql_db_query($Base, $sql);

echo "<FORM METHOD=POST NAME='frmDemo1'>";

echo "<BR>&nbsp;<B>Rubriques</B>&nbsp;";
echo "&nbsp;<SELECT NAME='zlRubrique' onChange='ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($resultat)) {
  echo "<OPTION VALUE='".$enr[0]."'";
  if ($zlRubrique == $enr[0]) echo " SELECTED";
  echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
}
echo "</SELECT>&nbsp;\n";

// ----------------------------------------------------------------------------
// Liste Items
// ----------------------------------------------------------------------------
echo "&nbsp;<B>Items</B>&nbsp;";
echo "&nbsp;<SELECT NAME='zlItem'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT>&nbsp;\n";
if (!isset($zlItem)) $zlItem = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlItem.");\n</SCRIPT>\n";
// ----------------------------------------------------------------------------

echo "<INPUT TYPE='submit' VALUE='Valider'>\n";

echo "</FORM>";

// ----------------------------------------------------------------------------
// Résultats des sélections
// ----------------------------------------------------------------------------
echo "Sélection :<BR>\n";

if (isset($zlRubrique) && $zlRubrique != "") {
  $sql = "SELECT rubrique FROM demo_rubrique WHERE code='".$zlRubrique."'";
  $resultat = @mysql_db_query($Base, $sql);
  $enr = @mysql_fetch_array($resultat);
  echo "Rubrique = $zlRubrique [$enr[0]]<BR>\n";
}

if (isset($zlItem) && $zlItem != "" && $zlItem != -1) {
  $sql = "SELECT item FROM demo_item WHERE code='".$zlItem."'";
  $resultat = @mysql_db_query($Base, $sql);
  $enr = @mysql_fetch_array($resultat);
  echo "Item = $zlItem [$enr[0]]<BR>\n";
}

?> 
P.S. : Et avec la coloration syntaxique ;) Merci la loupe :shock:

par FAbrice » 08 févr. 2005, 19:59

bonsoir tout le monde,

j'ai essayé aujourdh'ui d'adapter le code à mon cas mais ca ne marche po ! :(

je n'ai pas les messages d'erreurs ici (g oublié au buro :? ).

Malgré cela, est ce que quelqu'un aurait un ptiot moment à consacrer a ce Pb???

merci de votre aide,
FAb, qui est grave en galère :oops:

par FAbrice » 08 févr. 2005, 07:44

bonjour le forum,

C koa dbdesigner ? ca peut m'aider à me sortir de cette galère???

merci de vos répons,
FAb

par Moosh » 08 févr. 2005, 00:10

DBDesigner 4

par FAbrice » 07 févr. 2005, 23:58

re bonsoir tout le monde,

Pfffff. Je ne comprends pas le script java et donc je n'arrive pas a l'adapter! :shock:

je CRAQUE !!!! :wink:

please HELP! :o

par @rthur » 07 févr. 2005, 22:39

Waou, ca marche 8)
Impeccable! :D

par FAbrice » 07 févr. 2005, 22:38

Waou, ca marche 8)

par FAbrice » 07 févr. 2005, 22:37

<?php require_once('Connections/ateliermeca.php'); ?> 
<?php 
mysql_select_db($database_ateliermeca, $ateliermeca); 
$query_marques = "SELECT * FROM marques"; 
$marques = mysql_query($query_marques, $ateliermeca) or die(mysql_error()); 
$row_marques = mysql_fetch_assoc($marques); 
$totalRows_marques = mysql_num_rows($marques); 

mysql_select_db($database_ateliermeca, $ateliermeca); 
$query_models = "SELECT * FROM models"; 
$models = mysql_query($query_models, $ateliermeca) or die(mysql_error()); 
$row_models = mysql_fetch_assoc($models); 
$totalRows_models = mysql_num_rows($models); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html><!-- InstanceBegin template="Templates/registre.dwt.php" codeOutsideHTMLIsLocked="false" --> 
<head> 
<!-- InstanceBeginEditable name="doctitle" --> 
<title>Document sans titre</title> 
<!-- InstanceEndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable --> 
<script language="JavaScript" type="text/JavaScript"> 
<!-- 
function MM_reloadPage(init) {  //reloads the window if Nav4 resized 
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { 
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} 
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); 
} 
MM_reloadPage(true); 
//--> 
</script> 
<link href="style_entete.css" rel="stylesheet" type="text/css"> 
<style type="text/css"> 
<!-- 
body { 
   background-image: url(Model/bg_grad.jpg); 
} 
--> 
</style> 
<link href="menu_gauche.css" rel="stylesheet" type="text/css"> 
<style type="text/css"> 
<!-- 
.Style1 {font-size: 24px} 
.texte { 
   font-family: Arial, Helvetica, sans-serif; 
   color: #FF0000; 
} 
.Style2 {font-size: 14px} 
--> 
</style> 
</head> 
<body> 
<div id="Layer3" style="position:absolute; left:14px; top:10px; width:170px; height:23px; z-index:2; visibility: visible; font-style: italic; color: #FF0000; font-weight: bold;"> 
  <div align="center" class="Style1"><a href="Pages/sommaire.php">PONTICELLI</a></div> 
</div> 
<div id="Navhaut" style="position:absolute; left:11px; top:46px; width:1023px; height:15px; visibility: visible; z-index: 2;"><img src="Model/gblnav_left.gif" width="5" height="32"><a href="Pages/Registre/registregeneral.php"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_background2.gif" width="4" height="32"><a href="Pages/Expertise/expertisegeneral.php"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_background2.gif" width="4" height="32"><a href="Pages/Actions/actionsgeneral.php"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_background2.gif" width="4" height="32"><a href="Pages/FDT/fdtgeneral.php"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_background2.gif" width="4" height="32"><a href="Pages/Modifbasesannexes/modifbageneral.php"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_background2.gif" width="4" height="32"><a href="Pages/statistiquesgeneral"><img src="Model/glbnav_background.gif" width="165" height="32" border="0"></a><img src="Model/glbnav_right.gif" width="5" height="32"></div> 
<div id="GestOT" style="position:absolute; left:21px; top:53px; width:159px; height:21px; z-index:3; visibility: visible;" class="entete"> 
  <div align="center" class="entete">REGISTRE</div> 
</div> 
<div id="Layer1" style="position:absolute; left:187px; top:95px; width:841px; height:510px; z-index:4"><!-- InstanceBeginEditable name="zone" --> 
  <p>&nbsp;</p> 
  <form name="form1" method="post" action=""> 
    <select name="select"> 
      <?php 
do {  
?> 
      <option value="<?php echo $row_marques['Marques']?>"><?php echo $row_marques['Marques']?></option> 
      <?php 
} while ($row_marques = mysql_fetch_assoc($marques)); 
  $rows = mysql_num_rows($marques); 
  if($rows > 0) { 
      mysql_data_seek($marques, 0); 
     $row_marques = mysql_fetch_assoc($marques); 
  } 
?> 
    </select> 
    <select name="select2"> 
      <?php 
do {  
?> 
      <option value="<?php echo $row_models['Models']?>"><?php echo $row_models['Models']?></option> 
      <?php 
} while ($row_models = mysql_fetch_assoc($models)); 
  $rows = mysql_num_rows($models); 
  if($rows > 0) { 
      mysql_data_seek($models, 0); 
     $row_models = mysql_fetch_assoc($models); 
  } 
?> 
    </select> 
  </form> 
  <p>&nbsp;</p> 
<!-- InstanceEndEditable --></div> 
<div id="fondblanc" style="position:absolute; left:12px; top:88px; width:1021px; height:521px; z-index:2; background-color: #F2F2F2; layer-background-color: #F2F2F2; border: 1px none #000000;"></div> 
<div id="hautgauche" style="position:absolute; left:12px; top:88px; width:169px; height:11px; z-index:3"><img src="Model/tl_curve_white.gif" width="6" height="6"></div> 
<div id="Layer4" style="position:absolute; left:941px; top:88px; width:92px; height:13px; z-index:5"> 
  <div align="right"><img src="Model/tr_curve_white.gif" width="6" height="6"></div> 
</div> 
<div id="Layer5" style="position:absolute; left:184px; top:95px; width:3px; height:511px; z-index:6; background-color: #CCCCCC; layer-background-color: #CCCCCC; border: 1px none #000000;"></div> 
<div id="Layer10" style="position:absolute; left:849px; top:18px; width:202px; height:18px; z-index:11; font-size: 10px; color: #FFFFFF;"> 
  <p class="Style2">I <a href="Pages/Recherche/recherchegeneral">RECHERCHE</a> I <a href="mailto:[email protected]">CONTACTS</a> I</p> 
</div> 
<div id="Layer11" style="position:absolute; left:186px; top:53px; width:164px; height:21px; z-index:12" class="entete">EXPERTISE</div> 
<div id="Layer12" style="position:absolute; left:354px; top:53px; width:165px; height:21px; z-index:13" class="entete">ACTIONS</div> 
<div id="Layer13" style="position:absolute; left:522px; top:53px; width:166px; height:21px; z-index:14" class="entete">FDT</div> 
<div id="Layer14" style="position:absolute; left:692px; top:53px; width:164px; height:21px; z-index:15" class="entete">Modif bases annexes</div> 
<div id="Layer15" style="position:absolute; left:860px; top:53px; width:163px; height:21px; z-index:16" class="entete">STATISTIQUES</div> 
<div id="gauche" style="position:absolute; left:16px; top:93px; width:167px; height:233px; z-index:20"><!-- InstanceBeginEditable name="gauche" --> 
  <div id="Layer16" style="position:absolute; left:1px; top:17px; width:163px; height:25px; z-index:2"><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registregeneral.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></div> 
  <p>&nbsp;</p> 
  <div id="Layer16" style="position:absolute; left:1px; top:46px; width:163px; height:25px; z-index:2"><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registreconsult.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></div> 
  <div id="Layer6" style="position:absolute; left:9px; top:51px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>Consultation</p> 
  </div> 
  <p>&nbsp;</p> 
  <div id="Layer16" style="position:absolute; left:1px; top:76px; width:163px; height:25px; z-index:2"> 
    <h2><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registreajout.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></h2> 
  </div> 
  <div id="Layer6" style="position:absolute; left:8px; top:111px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>Suppression</p> 
  </div> 
  <p>&nbsp;</p> 
  <div id="Layer16" style="position:absolute; left:1px; top:106px; width:163px; height:25px; z-index:2"><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registresupp.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></div> 
  <div id="Layer6" style="position:absolute; left:9px; top:81px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>Nouveau dossier </p> 
  </div> 
  <p>&nbsp;</p> 
  <div id="Layer6" style="position:absolute; left:9px; top:21px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>Sommaire</p> 
  </div> 
  <div id="Layer16" style="position:absolute; left:1px; top:136px; width:163px; height:25px; z-index:2"><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registrefdt.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></div> 
  <div id="Layer6" style="position:absolute; left:8px; top:140px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>FDT</p> 
  </div> 
  <div id="Layer16" style="position:absolute; left:1px; top:166px; width:163px; height:25px; z-index:2"><img src="Model/gblnav_leftbleu.jpg" width="5" height="25"><a href="Pages/Registre/registrereprise.php"><img src="Model/glbnav_backgroundbleu.jpg" width="153" height="25" border="0"></a><img src="Model/glbnav_rightbleu.jpg" width="5" height="25"></div> 
  <div id="Layer6" style="position:absolute; left:9px; top:172px; width:145px; height:18px; z-index:3" class="menu_gauche"> 
    <p>Reprise /s garantie </p> 
  </div> 
  <p>&nbsp;</p> 
<!-- InstanceEndEditable --></div> 
</body> 
<!-- InstanceEnd --></html> 
<?php 
mysql_free_result($marques); 

mysql_free_result($models); 
?>

par @rthur » 07 févr. 2005, 22:34

sinon, comment on fais pour mettre des balises php pour colorer le code?
FAb :=)
Tu vois la boite de texte pour taper un message?
Bon c'est pas dûr, tu pars du sommet supérieur droit, tu montes vers le nord sur environ 2 cm jusqu'au bouton [URL], puis tu prends la première à droite sur environ 0.5cm :D

En cas de problème, sous Windows XP, tu fais "Touche Windows + U", puis tu cliques sur le bouton "démarrer" ;)

par FAbrice » 07 févr. 2005, 22:29

re,

je me suis permis de mettre mon pb sur le forum car j'avais trouvé ton lien mais que je n'avais pas réussi a l'adapter à mon cas! dsl :? , je suis débutant :?

sinon, comment on fais pour mettre des balises php pour colorer le code?

FAb :=)

par ImBrOgLiO » 07 févr. 2005, 22:24

D'abord utilises les balises PHP, on verrait la coloration syntaxique de ton code, c'est beaucoup plus facile à lire par la suite.

Deuxio, l'exemple de que je t'ai fourni est vraiment facile, prend le temps de l'analyser, une ligne à la fois, tu vas voir qu'il répond à la problématique que tu as énoncée.

Tertio, fais quelques essais selon l'exemple, et reviens nous voir avec des messages d'erreur s'il y a lieu. On sera à mieux de t'aider par la suite. Bonne chance.

par FAbrice » 07 févr. 2005, 22:01

re,

ok, sympas ton lien ImBrOgLiO mais je n'arrive pas à l'adapter à mon cas :(

vous pourriez me fillez un ptiot coups de patte??? :roll:

merci de votre aide,
FAb