Limp Posté(e) le 1 septembre 2005 Partager Posté(e) le 1 septembre 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 1 septembre 2005 Auteur Partager Posté(e) le 1 septembre 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; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mugul Posté(e) le 1 septembre 2005 Partager Posté(e) le 1 septembre 2005 Luss! Tu devrais peut-être écrire: $boutsup= $nbbouteille['nbbouteille']-1; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Okin Posté(e) le 1 septembre 2005 Partager Posté(e) le 1 septembre 2005 Remplace nbbouteille=$boutsup par : nbbouteille=nbbouteille-1 dans le update Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 3 septembre 2005 Auteur Partager Posté(e) le 3 septembre 2005 J'ai essayé vos deux versions, mais lorsque je fais supprimer, ça enlève toute les infos de la bouteille... M'énerve... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mugul Posté(e) le 3 septembre 2005 Partager Posté(e) le 3 septembre 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; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 5 septembre 2005 Auteur Partager Posté(e) le 5 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
haaronn Posté(e) le 5 septembre 2005 Partager Posté(e) le 5 septembre 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 @+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 5 septembre 2005 Auteur Partager Posté(e) le 5 septembre 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!!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 5 septembre 2005 Auteur Partager Posté(e) le 5 septembre 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(); ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 5 septembre 2005 Auteur Partager Posté(e) le 5 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 6 septembre 2005 Partager Posté(e) le 6 septembre 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 6 septembre 2005 Auteur Partager Posté(e) le 6 septembre 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 6 septembre 2005 Partager Posté(e) le 6 septembre 2005 Si ça vient d'un formulaire, il faut passer par le tableau $_POST comme ci: $_POST['id'] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 6 septembre 2005 Auteur Partager Posté(e) le 6 septembre 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']. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 6 septembre 2005 Partager Posté(e) le 6 septembre 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é... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 6 septembre 2005 Auteur Partager Posté(e) le 6 septembre 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! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 6 septembre 2005 Partager Posté(e) le 6 septembre 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 !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 6 septembre 2005 Auteur Partager Posté(e) le 6 septembre 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é Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 6 septembre 2005 Auteur Partager Posté(e) le 6 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 7 septembre 2005 Auteur Partager Posté(e) le 7 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 7 septembre 2005 Partager Posté(e) le 7 septembre 2005 mysql_num_rows se fait sur le résultat de la requète et non sur la requète... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 16 septembre 2005 Auteur Partager Posté(e) le 16 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 16 septembre 2005 Partager Posté(e) le 16 septembre 2005 Ya des sites qui te proposent un design tout fait mais souvant payant... à voir... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Limp Posté(e) le 16 septembre 2005 Auteur Partager Posté(e) le 16 septembre 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.