2 tables liées

Eléphant du PHP | 289 Messages

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:

Eléphanteau du PHP | 23 Messages

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:
Image

Eléphant du PHP | 289 Messages

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

Eléphanteau du PHP | 23 Messages

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...
Image

Eléphant du PHP | 289 Messages

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