Limp Posted September 1, 2005 Share Posted September 1, 2005 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 <? 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... Link to comment Share on other sites More sharing options...
Limp Posted September 1, 2005 Author Share Posted September 1, 2005 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; Link to comment Share on other sites More sharing options...
Mugul Posted September 1, 2005 Share Posted September 1, 2005 Luss! Tu devrais peut-être écrire: $boutsup= $nbbouteille['nbbouteille']-1; Link to comment Share on other sites More sharing options...
Okin Posted September 1, 2005 Share Posted September 1, 2005 Remplace nbbouteille=$boutsup par : nbbouteille=nbbouteille-1 dans le update Link to comment Share on other sites More sharing options...
Limp Posted September 3, 2005 Author Share Posted September 3, 2005 J'ai essayé vos deux versions, mais lorsque je fais supprimer, ça enlève toute les infos de la bouteille... M'énerve... Link to comment Share on other sites More sharing options...
Mugul Posted September 3, 2005 Share Posted September 3, 2005 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; Link to comment Share on other sites More sharing options...
Limp Posted September 5, 2005 Author Share Posted September 5, 2005 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 Merci pour votre aide Link to comment Share on other sites More sharing options...
haaronn Posted September 5, 2005 Share Posted September 5, 2005 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 @+ Link to comment Share on other sites More sharing options...
Limp Posted September 5, 2005 Author Share Posted September 5, 2005 Ca marche je test dès que l'admin de l'école décide de me donner le fichier config pour ce foutu proxy!!!! Link to comment Share on other sites More sharing options...
Limp Posted September 5, 2005 Author Share Posted September 5, 2005 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(); ?> Link to comment Share on other sites More sharing options...
Limp Posted September 5, 2005 Author Share Posted September 5, 2005 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 Link to comment Share on other sites More sharing options...
ingeni Posted September 6, 2005 Share Posted September 6, 2005 $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 ? Link to comment Share on other sites More sharing options...
Limp Posted September 6, 2005 Author Share Posted September 6, 2005 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... Link to comment Share on other sites More sharing options...
ingeni Posted September 6, 2005 Share Posted September 6, 2005 Si ça vient d'un formulaire, il faut passer par le tableau $_POST comme ci: $_POST['id'] Link to comment Share on other sites More sharing options...
Limp Posted September 6, 2005 Author Share Posted September 6, 2005 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']. Link to comment Share on other sites More sharing options...
ingeni Posted September 6, 2005 Share Posted September 6, 2005 ç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é... Link to comment Share on other sites More sharing options...
Limp Posted September 6, 2005 Author Share Posted September 6, 2005 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! Link to comment Share on other sites More sharing options...
ggbce Posted September 6, 2005 Share Posted September 6, 2005 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 !!! Link to comment Share on other sites More sharing options...
Limp Posted September 6, 2005 Author Share Posted September 6, 2005 C'est mon serveur de mon site web avec base de donnée en ligne... Easyphp c'est vite la merdouille Je connais phpdebutant c'est comme ça que j'ai commencé Link to comment Share on other sites More sharing options...
Limp Posted September 6, 2005 Author Share Posted September 6, 2005 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 Link to comment Share on other sites More sharing options...
Limp Posted September 7, 2005 Author Share Posted September 7, 2005 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 Link to comment Share on other sites More sharing options...
ingeni Posted September 7, 2005 Share Posted September 7, 2005 mysql_num_rows se fait sur le résultat de la requète et non sur la requète... Link to comment Share on other sites More sharing options...
Limp Posted September 16, 2005 Author Share Posted September 16, 2005 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 Link to comment Share on other sites More sharing options...
ingeni Posted September 16, 2005 Share Posted September 16, 2005 Ya des sites qui te proposent un design tout fait mais souvant payant... à voir... Link to comment Share on other sites More sharing options...
Limp Posted September 16, 2005 Author Share Posted September 16, 2005 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... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.