PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-08-2011 17:37:29

YLuiz
Membre
Inscription : 14-08-2011
Messages : 3

Requete MySql

Bonjour, Bonsoir smile.
J'ai un projet à rendre pour l'école, et j'ai certain soucis.
J'ai deux tables dans ma base de donnée, Media & Type, la table type c'est soit Blue Ray, Dvd ou Cd.
J'ai un fichier deleteMedia.


<?php
       
include 'config.php';
       
$id = $_GET['id'];
if(connexion_db()) {
$requete = "SELECT * FROM Media WHERE id='$id'";
$resultat = mysql_query($requete);
$requete2 = "SELECT Type.nom_type, Type.id FROM Type Type INNER JOIN Media Media ON Media.id_type=Type.id WHERE Type.id=Media.id_type";
$resultat2 = mysql_query($requete2);
if(!$resultat or !$resultat2) {
        echo "<p>Impossible de traiter la requète.</p>";
        }
        else {
        $tab = mysql_fetch_assoc($resultat);
        $tab2 = mysql_fetch_assoc($resultat2);
        }
        }
        ?>
    <p>Titre : <?php echo $tab["titre"]?></p>
    <p>Auteur : <?php echo $tab["auteur"]?></p>
    <p>Format : <?php echo $tab2["nom_type"]?></p><br/>
    <p>Etes-vous certain de vouloir supprimer ce media ?</p>
    <p>Attention! Si vous supprimez ce Media, vous supprimerez toutes les données en faisant partie.</p>
        <p><input type="submit" value="Supprimer" name="Envoi"/></p>
        </form>
 

Le problème, c'est que peut importe le media que je veux supprimer, je récupére BIEN titre et auteur, mais nom_type j'ai tjrs BlueRay, même si ce Media est un cd.

Deuxième problème, je n'arrive pas à parcourir un tableau pour récupérer les donnés dans mon fichier updateMedia.

<?php
           
include 'config.php';
           
$id = $_GET['id'];

if(connexion_db()) {
$requete = "SELECT * FROM Media WHERE id='$id'";
$resultat = mysql_query($requete);
if(!$resultat) {
    echo "<p>Impossible de traiter la requète.</p>";
    }
    else {
    $tab = mysql_fetch_assoc($resultat);
    }
    }
      ?>
    <label>Titre: <input type="text" name="titre" value=" "/></label><br/>
    <label>Auteur: <input type="text" name="auteur" value=" "/></label><br/>
    <label>Type-2 pour blueRay,3 pour dvd, 4 pour cd-: <input type="text" name="id_type" value=" "/></label><br/>
    <input type="submit" value="Modifier" name="Envoi"/>
    </fieldset>
    </form>

J'avais mis dans value=" <?php echo $tab['titre'] ?> mais ça ne marchait pas, enfin, peut importe le media que je voulais modifier, il me mettait dans les champs le 1er Media de ma table sad.
Merci.

Hors ligne

#2 15-08-2011 04:47:01

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requete MySql

Bonjour,

Pourrais-tu nous montrer la structure de tes tables stp? Merci.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 15-08-2011 08:02:02

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete MySql

Saluton,
Au passage, si tu pouvais ne pas réactiver la guerre des étoiles.
Merci


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 16-08-2011 16:11:26

YLuiz
Membre
Inscription : 14-08-2011
Messages : 3

Re : Requete MySql

Merci pour la guerre des étoiles, j'y ferais attention la prochaine fois smile.
Quand tu parles de structure de ma table, tu veux dire les champs qui l'a compose ?
Si Oui, ça donne ça smile.

Table Media :
id  (INT 5 – clé primaire – auto_increment)
titre (VARCHAR 100 – not null)
auteur (VARCHAR 100 – not null)
id_type (INT 5 – not null)

Table Type :
id  (INT 5 – clé primaire – auto_increment)
nom_type (VARCHAR 100 – not null)

Enfaite, le probleme du nom_type a été reglé smile.
Mais pour le updateMedia, quand je modifie un media, il me le modifie dans la table, mais le formulaire n'est pas "réactualisé".
Merci smile.

Désolé du retard ..

Hors ligne

#5 17-08-2011 05:51:42

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requete MySql

Bonjour,

Normalement voici quelles devraient être tes requêtes


// ta requête de consultation
$cslt_query="SELECT t1.id, titre, auteur, nom_type FROM Media as t1 LEFT JOIN Type ON t1.id_type=Type.id WHERE t1.id='$media_id' ";

// ta requête de suppression
$del_query="DELETE FROM Media WHERE id='$media_id' ";

// ta requête de modification
$change_query="UPDATE Media SET id_type='$newTypeId' WHERE id='$media_id' ";
 

Tu n'as pas besoin d'autre chose et cela devrait fonctionner correctement.

La seule chose maintenant c'est qu'il faut bien faire attention au nom de tes champs dans tes formulaires, que chaque formulaire soit bien compris entre des balises <form> </form>, ce que l'on ne voit pas dans le code fourni ici. Il faut aussi que tu mettes un id dans les propriétés des balises que tu souhaites récupérer. Par exemple <input id="titre"></input> que tu récupères avec un $_GET(['titre']) etc...

Voilà.
++

Dernière modification par Jc (17-08-2011 06:00:20)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 17-08-2011 06:54:26

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete MySql

Jc a écrit :

Il faut aussi que tu mettes un id dans les propriétés des balises que tu souhaites récupérer. Par exemple <input id="titre"></input> que tu récupères avec un $_GET(['titre']) etc...

Trois précisions:
- dans un DOM chaque id doit être unique.
- $_GET correspond à l'attribut method="get" de la balise <form>, alors que $_POST correspond method="post" pour ce même attribut.
- j'en étais resté à ce que $_GET et $_POST récupéraient non pas l'id mais le name des contrôles de formulaires. C'est ainsi que l'on pouvait avoir des contrôles tabulaires en déclarant name="titre[]", est-il dorénavant possible de procéder de même avec id="titre[]" ?
Si j'en crois Jc, les choses ont du changer, mais disons que j'aimerais en être sûr. wink


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 17-08-2011 14:21:41

YLuiz
Membre
Inscription : 14-08-2011
Messages : 3

Re : Requete MySql

Merci pour ta reponse, ça m'a aidé.
Je voulais savoir, si je pouvais supprimer une ligne de ma base de donné (un media en gros) de cette manière :

<table>
          <tr><td class="tableauAdmin"><span class="titreTableau">Id :</span></td><td class="tableauAdmin"><span class="titreTableau">Titre :</span></td><td class="tableauAdmin"><span class="titreTableau">Auteur :</span></td><td class="tableauAdmin"><span class="titreTableau">Type :</span></td></tr>
          <?php
         
          include 'config.php';
          $id = $_GET['id'];
          if(connexion_db()) {
          $requete = "SELECT med.id, med.titre, med.auteur, typ.nom_type FROM Media med INNER JOIN Type typ ON typ.id = med.id_type WHERE med.id='$id'";
          $resultat = mysql_query($requete);
              if(!$resultat) {
                echo "Impossible de traiter la requète.";
              }
              else {
                $tab = mysql_fetch_assoc($resultat); {
                echo '<tr>';
                echo '<td>'.$tab['id'].'</td>';
                echo '<td>'.$tab['titre'].'</td>';
                echo '<td>'.$tab['auteur'].'</td>';
                echo '<td>'.$tab['nom_type'].'</td>';
                echo '</tr>';
                }
              }
            }
            mysql_free_result($resultat);
          ?>
        </table>
        <p>Etes-vous certain de vouloir supprimer ce media ?</p>
        <p>Attention! Si vous supprimez ce Media, vous supprimerez toutes les données en faisant partie.</p>
        <p><input type="submit" value="Supprimer" name="Envoi"/></p>
       
        <?PHP
        if(isset($_POST['Envoi'])) {
          $requete = "DELETE FROM Media WHERE id='$id'";
          $resultat = mysql_query($requete);
         
          if(!$resultat) {
            echo "<p>Impossible de traiter la requète.</p>";
          }
          else {
            echo "<p>Media supprimée.</p>";
          }
        }
        mysql_close();
        ?>

ça ne marche pas, c'est le <table> qui derange ? hmm

Hors ligne

#8 17-08-2011 16:55:30

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requete MySql

Bonjour,

@MK: En fait, cela fait longtemps que je n'utilise plus la balise <form>, car je les gère moi-même en javascript pour éviter les conflits. Donc du coup, j'ai un peu oublié et tu as peut-être raison, il faut vérifier.

Par contre il est tout à fait possible d'utiliser un id='titre[0]' qui sera différent d'un id='titre[1]'. A la différence d'un name, si ce dernier n'est pas sous forme de tableaux name='titre[x]' il ne sert à rien, <<javascriptement>> parlant.

++

Dernière modification par Jc (17-08-2011 17:10:52)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums