Requêtes liant plusieurs tables

Petit nouveau ! | 3 Messages

07 juin 2021, 11:39

Bonjour à tous,

Je suis une stagiaire débutante en php.
Je travaille sur un site de réparation mobile.
Pour faire sa demande de réparation , le client doit choisir sa marque, son modèle et ses pannes afin que le prix s'affiche.
Je suis bloquée au niveau de l'affichage du prix.
Sachant que le prix diffère selon le centre choisit ( 1 seul pour le moment).
Du coup j'ai 5 tables
marque
modèles
pannes
prestataire
prestataire_tarif.

Je vous met donc mes codes
select.php
<?php
// Include the database connection file
include('config.php');
?>

<!DOCTYPE html>
<html>
<head>
	<title>Mongaragemobile choix</title>
	    <!-- BootStrap CSS CDN-->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

    <!-- jQuery CDN -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <!-- JavaScript CDN For BootStrap  -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<fieldset>
<legend>Complétez les éléments à propos de votre smartphone et de sa panne</legend>
    <br />
    <form action="" method="post">
      <div class="col-md-4">
       <select class="form-control" id="marque" required>
      <option value="">Choisissez la marque de votre téléphone</option>
        <?php
 $query = "SELECT * FROM marque";
 $result = $con->query($query);
 if ($result->num_rows > 0) {
 while ($row = $result->fetch_assoc()) {
 echo '<option value="'.$row['id'].'">'.$row['marque_name'].'</option>';
 }
 }else{
 echo '<option value="">Marque pas disponible</option>';
 }
 ?>
 </select>
            <br />
     <select class="form-control" id="model"required>
               <option value="">Choisissez le modèle de votre téléphone</option>
            </select>
         <br />
          <select class="form-control" id="pannes" require>
               <option value="">Choisissez la panne de votre téléphone</option>
            </select>
            </fieldset><br />
            <div id="affichage"></div>
            <fieldset>
         <legend>Renseignez vos informations afin qu'on vous contacte rapidement</legend>
  <div class="form-row">
    <div class="form-group col-md-6">
      <label for="inputEmail4">Adresse électronique</label>
      <input type="email" class="form-control" id="inputEmail4" placeholder="Adresse électronique">
    </div>
    <div class="form-group col-md-6">
      <label for="inputName">Nom</label>
      <input type="name" class="form-control" id="inputName" placeholder="Nom">
    </div>
  </div>
  <div class="form-row">
  <div class="form-group col-md-6">
    <label for="inputLname">Prenom</label>
    <input type="text" class="form-control" id="inputLname" placeholder="Prenom">
  </div>
  <div class="form-group col-md-6">
    <label for="inputAddress">Adresse</label>
    <input type="text" class="form-control" id="inputAddress" placeholder="Indiquez numéro de voie,nom de rue">
  </div>
  </div>
  <div class="form-row">
  <div class="form-group col-md-6">
      <label for="inputZip">Code de postale</label>
      <input type="text" class="form-control" id="inputZip">
    </div>
    <div class="form-group col-md-6">
      <label for="inputState">Ville</label>
      <input type="text" class="form-control" id="inputState">
  </div>
  </div>
  <div class="form-group text-center">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="gridCheck">
      <label class="form-check-label" for="gridCheck">
       J'accepte de recevoir des promotions ponctuelles de MGM
      </label>
    </div>
    </fieldset>
  <button type="submit" class="btn btn-primary">J'envoie mon téléphone en réparation</button>
</form>

<script type="text/javascript">
  $(document).ready(function(){
    // Marque dependent ajax
    $("#marque").on("change",function(){
      var marqueId = $(this).val();
      $.ajax({
        url :"ajax.php",
        type:"POST",
        cache:false,
        data:{marqueId:marqueId},
        success:function(data){
          $("#model").html(data);
          $('#pannes').html('<option value="">Choisissez la panne de votre téléphone</option>');
        }
      });
    });

    // model dependent ajax
    $("#model").on("change", function(){
      var modelId = $(this).val();
      $.ajax({
        url :"ajax.php",
        type:"POST",
        cache:false,
        data:{modelId:modelId},
        success:function(data){
          $("#pannes").html(data);
        }
      });
    });

    // tarif dependent ajax
    $("#prestataire_tarif").on("change", function(){
      var prestataire_tarifId = $(this).val();
      $.ajax({
        url :"ajax.php",
        type:"POST",
        cache:false,
        data:{prestataire_tarifId:prestataire_tarifId},
        success:function(data){
          $("#pannes").html(data);
        }
      });
    });
  });
</script>
</body> 
</html>
ajax.php
<?php
// Include the database connection file
include('config.php');

if (isset($_POST['marqueId']) && !empty($_POST['marqueId'])) {

	// Fetch model name base on marque id
	$query = "SELECT * FROM model WHERE marque_id = ".$_POST['marqueId'];
	$result = $con->query($query);

	if ($result->num_rows > 0) {
		echo '<option value="">Choisissez le modèle de votre téléphone</option>';
		while ($row = $result->fetch_assoc()) {
			echo '<option value="'.$row['id'].'">'.$row['model_name'].'</option>';
		}
	} else {
		echo '<option value="">Modèle non disponible </option>';
	}
} elseif(isset($_POST['modelId']) && !empty($_POST['modelId'])) {

	// Fetch pannes base on model id
	$query = "SELECT * FROM pannes  WHERE model_id = ".$_POST['modelId'];
	$result = $con->query($query);

	if ($result->num_rows > 0) {
		echo '<option value="">Choisissez la panne de votre téléphone</option>';
		while ($row = $result->fetch_assoc()) {
			echo '<option value="'.$row['id'].'">'.$row['pannes_name'].'</option>';
		}
	} else {
		echo '<option value="">Pannes pas disponible</option>';
	}

	// Fetch tarif base on pannes id
	$query = "SELECT * FROM prestataire_tarif  WHERE pannes_id = ".$_POST['pannesId'];
	$result = $con->query($query);
	var_dump($result);

	if ($result->num_rows > 0) {
		echo '<option value="">le prix de la réparation de votre smartphone est de.... € </option>';
		while ($row = $result->fetch_assoc()) {
			echo '<option value="'.$row['id'].'">'.$row['tarif_ht'].'</option>';
		}
	} else {
		echo '<option value="">pas de prix disponible</option>';
	}
}
?>

Je vous remercie beaucoup . Je suis désespérée

Avatar du membre
Eléphant du PHP | 70 Messages

07 juin 2021, 11:57

Bonjour queenofcode

Pourrais tu modifier ton post est mettre tout ton code dans une ou plusieurs balises [.php][./php] (sans les points) pour plus de lisibilité ?
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Petit nouveau ! | 3 Messages

07 juin 2021, 12:05

Bonjour Shadowwera
je suis désolée mais je n'ai pas compris ce que tu me dis de faire car j'ai bien mis select.php puis le code ajax.php puis le code

Avatar du membre
Eléphant du PHP | 70 Messages

07 juin 2021, 14:21

Sur le forum tu as la possibilité de mettre du code dans une balise de manière à ce que se soit plus lisible. Tu as juste a entourné ton code avec la balise [.php][./php] (sans les points)
comme ceci :
<?php
// Include the database connection file
include('config.php');
?>

<!DOCTYPE html>
<html>
<head>
<title>Mongaragemobile choix</title>
<!-- BootStrap CSS CDN-->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstr ... ap.min.css">

<!-- jQuery CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/j ... "></script>

<!-- JavaScript CDN For BootStrap -->
<script src="https://maxcdn.bootstrapcdn.com/bootstr ... "></script>
</head>
<body>
//Etc ...
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Petit nouveau ! | 3 Messages

07 juin 2021, 20:47

En fait tu peux m'aider ou pas? car tu as pu lu le code?
je suis nouvelle . Je ne sais pas comment modifier ma publication

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 juin 2021, 15:14

Salutations !

J'ai édité et mis ton code entre balise [ php ] afin qu'il soit plus lisible. Par contre, je ne suis pas certain de comprendre ce que tu veux faire, ce qui fonctionne ou pas...

Aucune raison de désespérer pour ton code php, si jamais on arrive pas à t'aider à résoudre ton problème, on demandera un coup de main à ton maître de stage dont c'est le boulot ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...