Aller au contenu

[PHP/MySQL] Projet d'école


Limp

Messages recommandés

Posté(e)

Bonjour à tous!

Je vous explique, je suis actuellement en vacances. J'ai pour "devoir" de créer une petite application en PHP qui permet de saisir, supprimer dans une base de donnée.

J'ai donc décidé de créer un programme de gestion de cave à vin.

Très simpliste le but étant de montrer qu'on a fait quelque chose pendant les vacances...

J'ai fait l'affichage des vins, on peut ajouter dans la base. Mais je n'arrive pas à finaliser le code pour la suppression...

Premièrement, merci de ne pas me taper si c'est un peu le fouilli... J'apprend le php... je débute donc... Tout ce que je veux c'est apprendre :up:

<?
if ($_POST['boutonsup'] == "supprimer")
{
$db=mysql_connect("localhost","login",""mdp);
mysql_select_db('romandie-stuntcom2',$db);
$sql = 'SELECT * FROM `vino`';
$numvin = $_POST['variable_choisi'];
$requete = "DELETE FROM `vino` WHERE numero = $numvin";
$resultat = mysql_query($requete);
$sql_results = mysql_query($sql)
 or die("Une erreur s'est produite B12");
$vindata = mysql_fetch_array($sql_results);
}
?>
<form method="post" action="?supprimerbouteille">
        <table border=2>
        <tr><th align=middle>Sélectionner la bouteille a supprimer : </th></tr>
        <tr><td align=center><select name="variable_choisi">Choissiez votre option:
        <option selected value=""> ---------- Les vins----------
<?php
$optio=mysql_query($sql,$db);
while($row = mysql_fetch_row($optio)) {
        print "\t\t<option>".($row[0])."\n";
}

?>
        </select>
        </td></tr>
        <tr><td align=center><input name ="boutonsup" type="submit"
        value="supprimer"></td></tr>
        </table>
</form>
<?
While($data = mysql_fetch_assoc($sql_results))
{
?> 
<table border="0" align="center">
       <tr>
         <td>Numéro bouteille :</td>
         <td><? echo(html_entity_decode($data['numero'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Nom :</td>
         <td><? echo(html_entity_decode($data['nom'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Année :</td>
         <td><? echo(html_entity_decode($data['annee'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Origine :</td>
         <td><? echo(html_entity_decode($data['pays'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Catégorie :</td>
         <td><? echo(html_entity_decode($data['categorie'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Nombre de bouteilles :</td>
         <td><? echo(html_entity_decode($data['nbbouteille'], ENT_QUOTES)); ?></td>
       </tr>
</table>
<?
}
mysql_close();
?>

Suite, à partir de lundi je travaille sur un vrai projet qui va durer 3 mois... On va tout faire, de la modélisation au codage. Je vais me servir de ce post pour vous expliquer l'avancement du projet et poser les questions lorsque sera arriver le temps de coder...

Voilà, désolé si c'était un peu long...

Posté(e)

Voilà ça commence à fonctionnner:

<?
$db=mysql_connect("localhost","***","****3");
mysql_select_db('romandie-stuntcom2',$db);
$sql = 'SELECT * FROM `vino`';
$sql_results = mysql_query($sql)
 or die("Une erreur s'est produite B12");
if ($_POST['boutonsup'] == "supprimer")
{
$numvin = $_POST['variable_choisi'];
$requete = "SELECT * FROM `vino` WHERE numero = $numvin";
$resultat = mysql_query($requete);
$nbbouteille = mysql_fetch_array($resultat);
$boutsup = $nbbouteille['nbbouteille']-=1;
$requete = "UPDATE FROM `vino` WHERE numero = $numvin SET nbbouteille=$boutsup";
$resultat = mysql_query($requete);
$vindata = mysql_fetch_array($sql_results);
}
?>
<form method="post" action="?supprimerbouteille">
        <table border=2>
        <tr><th align=middle>Sélectionner la bouteille a supprimer : </th></tr>
        <tr><td align=center><select name="variable_choisi">Choissiez votre option:
        <option selected value=""> ---------- Les vins----------
<?php
$optio=mysql_query($sql,$db);
while($row = mysql_fetch_row($optio)) {
        print "\t\t<option>".($row[0])."\n";
}
?>
</select>
</td></tr>
<tr><td align=center><input name ="boutonsup" type="submit"value="supprimer"></td></tr>
</table>
</form>
<?
While($data = mysql_fetch_assoc($sql_results))
{
if ($data['nbbouteille']==0){$requete = "DELETE FROM `vino` WHERE numero = $numvin";
$resultat = mysql_query($requete);}
else
{
?> 
<table border="0" align="center">
       <tr>
         <td>Numéro bouteille :</td>
         <td><? echo(html_entity_decode($data['numero'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Nom :</td>
         <td><? echo(html_entity_decode($data['nom'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Année :</td>
         <td><? echo(html_entity_decode($data['annee'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Origine :</td>
         <td><? echo(html_entity_decode($data['pays'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Catégorie :</td>
         <td><? echo(html_entity_decode($data['categorie'], ENT_QUOTES)); ?></td>
       </tr>
       <tr>
         <td>Nombre de bouteilles :</td>
         <td><? echo(html_entity_decode($data['nbbouteille'], ENT_QUOTES)); ?></td>
       </tr>
</table>
<?
}
}
mysql_close();

?>

Mon problème il ne fait pas moins 1 comme je lui dit à cette ligne:

$boutsup = $nbbouteille['nbbouteille']-=1;

Posté(e)

Pourrais nous montrer comment ta table vino est constituée?

Si ça peut t'aider, fais un echo ($nbbouteille) enttre ces deux lignes pour vérifier ce que tu récupuères

$nbbouteille = mysql_fetch_array($resultat);

$boutsup = $nbbouteille['nbbouteille']-=1;

Posté(e)

Salut Mugul,

Alors j'ai mis un echo comme tu me l'as dit et ça m'écrit array...

J'en déduits qu'il y a un problème.

Voici un screenshot de ma table :modoreussi:

tablevino.jpg

Merci pour votre aide :oops:

Posté(e)

salut,

pour voir ce que contient ton champ nbbouteille, fais un écho sur $nbbouteille['nbbouteille'], $nbbouteille tout seul étant le résultat de mysql_fetch_array et donc un tableau ( array ).

Voila @+ :modoreussi:

Posté(e)

Voilà, enfin de l'avancement... J'ai trouvé mes erreurs, une de mes requête était en partie fausse...

Le echo m'a permis de voir que les valeurs étaient juste donc que c'était la requête le problème, merci à ceux qui m'ont donné cette idée pourtant si simple...

Je profite également de me mettre au CSS et de dire aurevoir au tableau.

<?
$db=mysql_connect("localhost","***","***");
mysql_select_db('romandie-s',$db);
if ($_POST['boutonsup'] == "supprimer")
{
$numvin = $_POST['variable_choisi'];
$requete = "SELECT * FROM `vino` WHERE numero = $numvin";
$resultat = mysql_query($requete);
$nbbouteille = mysql_fetch_array($resultat);
//echo($nbbouteille['nbbouteille']);
$boutsup= $nbbouteille['nbbouteille']-=1;
//echo($boutsup);
$requete = "UPDATE `vino` SET `nbbouteille` = '$boutsup' WHERE `numero` = $numvin LIMIT 1";
$resultat = mysql_query($requete);
//$vindata = mysql_fetch_array($sql_results);
}
?>
<form method="post" action="?supprimerbouteille">
        <table border=2>
        <tr><th align=middle>Sélectionner la bouteille a supprimer : </th></tr>
        <tr><td align=center><select name="variable_choisi">Choissiez votre option:
        <option selected value=""> ---------- Les vins----------
<?php
$sql = 'SELECT * FROM `vino`';
$sql_results = mysql_query($sql)
 or die("Une erreur s'est produite B12");
$optio=mysql_query($sql,$db);
while($row = mysql_fetch_row($optio)) {
        print "\t\t<option>".($row[0])."\n";
}
?>
</select>
</td></tr>
<tr><td align=center><input name ="boutonsup" type="submit"value="supprimer"></td></tr>
</table>
</form>
<?
While($data = mysql_fetch_assoc($sql_results))
{
if ($data['nbbouteille']==0){$requete = "DELETE FROM `vino` WHERE `numero` = $numvin LIMIT 1";
$resultat = mysql_query($requete) or die("caca");}
else
{
?>
<div class="tableau1">
Numéro bouteille : <? echo(html_entity_decode($data['numero'], ENT_QUOTES)); ?><br />
Nom : <? echo(html_entity_decode($data['nom'], ENT_QUOTES)); ?><br />
Année :<? echo(html_entity_decode($data['annee'], ENT_QUOTES)); ?><br />
Origine :<? echo(html_entity_decode($data['pays'], ENT_QUOTES)); ?><br />
Catégorie :<? echo(html_entity_decode($data['categorie'], ENT_QUOTES)); ?><br />
Nombre de bouteilles :<? echo(html_entity_decode($data['nbbouteille'], ENT_QUOTES)); ?><br />
</div> 
<?
}
}
mysql_close();
?>

Posté(e)

Bonsoir, je suis passé au code pour modifier une entrée dans ma cave. Je me suis basé sur du code que j'ai trouvé avec google, en revanche j'ai une erreur:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/75402d78414e492f79cc4f10f57cc328/web/vin/include/modifierbouteille.php on line 13

Voici le code:

<?
$db=mysql_connect("localhost","%ç*"","****") or die ("Impossible de se connecter à MySQL");
mysql_select_db('romandie-s',$db)or die("Impossible de sélectionner la base de données");

if (!isset($submited)) {
   
   /*
   On va chercher les infos pour l'identifiant unique qui a été envoyés.
   */
   $query_string = "SELECT nom, annee, pays, categorie, nbbouteille FROM `vino` WHERE numero=$id";
   $query = mysql_query($query_string);

   if (mysql_num_rows($query) >= 1) {
?>
   <h1>Modifier un lien commenté</h1>
   
   <p>
     Veuillez modifier les informations ci-dessous
   </p>
   
   <form METHOD="POST" ACTION="<? $PHP_SELF ?>">
     <p>Numéro de bouteille <? echo $id ?> </p>
     <input TYPE="hidden" name="id" value="<? echo $id ?>">
     <p class="inputTitle">Nom:</p>
     <input TYPE="text" name="nom" value="<? echo mysql_result($query,0,"nom") ?>" SIZE="30">
     <p class="inputTitle">L'année:</p>
     <input TYPE="text" name="annee" value="<? echo mysql_result($query,0,"annee") ?>" SIZE="4">
     <p class="inputTitle">Pays:</p>
  <input TYPE="text" name="pays" value="<? echo mysql_result($query,0,"pays") ?>" SIZE="30">
        <p class="inputTitle">Catégorie:</p>
  <input TYPE="text" name="categorie" value="<? echo mysql_result($query,0,"categorie") ?>" SIZE="30">
        <p class="inputTitle">Nb bouteille:</p>
  <input TYPE="text" name="nbbouteille" value="<? echo mysql_result($query,0,"nbbouteille") ?>" SIZE="11">
     <p>
   <input TYPE="submit" VALUE="mettre à jour">
     </p>
   </form>

<?
   } else {
     echo "<h1>Aucun enregistrement ne correspond à votre demande</h1>";
   }
} else {
 echo  "<h1>Mise à jour d'un lien commenté</h1>";
   $query_string = "UPDATE `vino` SET nom='$nom', annee='$annee', pays='$pays', categorie='$categorie', nbbouteille='$nbbouteille' WHERE numero=$id";
   $query=mysql_query($query_string);
   if ($query) {
     echo "<p class=\"resultok\">Mise à jour effectuée</p>";
   } else {
     echo "<p class=\"resultbad\">Problème lors de la mise à jour</p>";
     echo "<p class=\"resultbad\">" . mysql_error() . "</p>";
   }
}
?>

J'arrive pas à trouver une réponse avec google...

Merci :francais:

Posté(e)

$query_string = "SELECT nom, annee, pays, categorie, nbbouteille FROM `vino` WHERE numero=$id";
  $query = mysql_query($query_string);

  if (mysql_num_rows($query) >= 1) {

tu dois avoir une merde dans ta requete. d'où sort la variable $id ?

Posté(e)

C'est ça le prob, j'essaie de faire que la variable $id sortent de la liste déroulante... Mais je bloque, un pote est censé me filer un coup de main cet aprèm...

Posté(e)

Ca avance, je vais présenter ma petite application mainteant, mais le modifier ne fonctionne pas encore...

Je verrai ça plus tard, au moins ajouter, supprimer marche comme je veux....

Modifier commence à marcher, j'ai utiliser $_POST['id'].

Posté(e)

ça fait plusieurs fois que la question est posée sur le forum.

Lorsqu'on récupère une données passées en GET, on utilise $_GET[].

Lorsqu'on récupère une données passées en POST, on utilise $_POST[].

Rien de plus compliqué...

Posté(e)

Grand pas en avant!

<?
if ($_POST['boutonmod'] == "modifier") 
{
$id = htmlspecialchars(htmlentities($_POST['id'], ENT_QUOTES));
$db=mysql_connect("localhost","***r","*****") or die ("Impossible de se connecter à MySQL");
mysql_select_db('romandie-',$db)or die("Impossible de sélectionner la base de données");
$query_string = "SELECT * FROM `vino` WHERE `numero`='$id'";
$variablesql = mysql_query($query_string);
$winedata1 =  mysql_fetch_assoc($variablesql);
$nom = htmlspecialchars(htmlentities($_POST['nom'], ENT_QUOTES));
$annee = htmlspecialchars(htmlentities($_POST['annee'], ENT_QUOTES));
$pays = htmlspecialchars(htmlentities($_POST['pays'], ENT_QUOTES));
$categorie = htmlspecialchars(htmlentities($_POST['categorie'], ENT_QUOTES));
$nbbouteille = htmlspecialchars(htmlentities($_POST['nbbouteille'], ENT_QUOTES));
if($nom != $winedata1['nom'])
{
$sql = "UPDATE `vino` SET `nom` = '$nom' WHERE  `numero`='$id' LIMIT 1";
$sql_results = mysql_query($sql)
   or die("Une erreur s'est produiteB1_ER"); 
}
if($nom != $winedata1['nom'])
{
$sql = "UPDATE `vino` SET `annee` = '$annee' WHERE  `numero`='$id' LIMIT 1";
$sql_results = mysql_query($sql)
   or die("Une erreur s'est produiteB1_ER"); 
}
if($nom != $winedata1['nom'])
{
$sql = "UPDATE `vino` SET `pays` = '$pays' WHERE  `numero`='$id' LIMIT 1";
$sql_results = mysql_query($sql)
   or die("Une erreur s'est produiteB1_ER"); 
}
if($categorie != $winedata1['categorie'])
{
$sql = "UPDATE `vino` SET `categorie` = '$categorie' WHERE  `numero`='$id' LIMIT 1";
$sql_results = mysql_query($sql)
   or die("Une erreur s'est produiteB1_ER"); 
}
if($nbbouteille != $winedata1['nbbouteille'])
{
$sql = "UPDATE `vino` SET `nbbouteille` = '$nbbouteille' WHERE  `numero`='$id' LIMIT 1";
$sql_results = mysql_query($sql)
   or die("Une erreur s'est produiteB1_ER"); 
}
}
else
{
if(isset($_POST['variable_choisi']))
{
$theid = htmlspecialchars(htmlentities($_POST['variable_choisi'], ENT_QUOTES));
$db=mysql_connect("localhost","****r","****") or die ("Impossible de se connecter à MySQL");
mysql_select_db('romandie',$db)or die("Impossible de sélectionner la base de données");
$query_string = "SELECT * FROM `vino` WHERE `numero`='$theid'";
$variablesql = mysql_query($query_string);
$winedata1 =  mysql_fetch_assoc($variablesql);
?>
<form METHOD="POST" ACTION="?modifierbouteille">
     <p>Numéro de bouteille: <? echo $theid ?> </p>
     <input TYPE="hidden" name="id" value="<? echo $theid ?>">
     <p class="inputTitle">Nom:</p>
     <input TYPE="text" name="nom" value="<? echo(html_entity_decode($winedata1['nom'], ENT_QUOTES)); ?>" SIZE="30">
     
 <p class="inputTitle">L'année:</p>
     <input TYPE="text" name="annee" value="<? echo(html_entity_decode($winedata1['annee'], ENT_QUOTES)); ?>" SIZE="4">
     <p class="inputTitle">Pays:</p>
  <input TYPE="text" name="pays" value="<? echo(html_entity_decode($winedata1['pays'], ENT_QUOTES)); ?>" SIZE="30">
        
 <p class="inputTitle">Catégorie:</p>
  <input TYPE="text" name="categorie" value="<? echo(html_entity_decode($winedata1['categorie'], ENT_QUOTES)); ?>" SIZE="30">
        
 <p class="inputTitle">Nombre de bouteilles: </p>
  <input TYPE="text" name="nbbouteille" value="<? echo(html_entity_decode($winedata1['nbbouteille'], ENT_QUOTES)); ?>" SIZE="11">
     <p>
   <input name ="boutonmod" type="submit" value="modifier">
     </p>
</form>
<?
}
}
mysql_close();
?>

En revanche les champs pays et année ne veulent pas se mettre à jour, j'ai vérifier les noms et tout concorde!

J'y perds mon latin!

Posté(e)

Lorsque tu teste ton application PHP est-ce sur un serveur Linux Apache/PHP/MySQL que tu as à la maison... ou encore EasyPHP sur un Windows ?

Il m'a déjà arrivé quelques fois que j'avais des problèmes de mises à jour de données dans ma BD MySQL depuis une requête PHP et il a fallu redémarrer le serveur, ça rrive plus souvent après avoir essayé des requêtes invalides justement... ce qui cause un maivais fonctionnement par la suite !

Mais pour avoir de bons exemples pour modifier et supprimer, va voir le site http://www.phpdebutant.org et à droite tu as toutes les étapes de A - Z pour faire d'un débutant un moyen-expert en environ 75 pages !!!

Posté(e)

C'est mon serveur de mon site web avec base de donnée en ligne... Easyphp c'est vite la merdouille :chinois:

Je connais phpdebutant c'est comme ça que j'ai commencé :craint:

Posté(e)

Je viens de rajouter un truc tout con sur la page d'affichage des vins.

$sql = "SELECT * FROM `vino`";
$sql_results = mysql_query($sql)
 or die("Une erreur s'est produite B12");
$res = mysql_num_rows($sql);
if ('$res'==0)
{
echo 'La cave est vide!';
}
else
{
echo 'Il y a '.$res.' enregistrement(s) dans la table vin.';
}

Avec bien sûre le mysql_connect avant etc...

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/75402d78414e492f79cc4f10f57cc328/web/vin/include/afficherliste.php on line 7

J'ai pris presque tel quel sur phpdebutant un de leurs exemples...

C'est louche :chinois:

Posté(e)

Voilà, j'ai trouvé la solution pour l'année et l'origine, après une nuit de sommeil la réponse m'a sauté aux yeux!

Erreur dans les champs.. Alors que j'étais sûr que tout était bon! LOL

  • 2 semaines après...
Posté(e)

Voilà ma cave à vin est terminé et elle est maintenant sécurisé.

En revanche je cherche un bon site ou un programme qui permet de faire un design sans trop se prendre la tête et tout celà en respectant le WC3 XHTML/CSS

Merci :gne:

Posté(e)

Effectivement, je connais, mais j'ai un design qui me plaît que j'ai déjà acheté, mais va falloir que je l'adapte car il utilise des tableaux pour la mise en page...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...