Afficher dans la liste les éléments d'une tab

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 19 juil. 2011 à 12:16
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 19 juil. 2011 à 13:16
Bonjour,

Voici mon code et je sollicite votre aide pour afficher les éléments d'une table dans ma liste déroulante :
<?php
$delai=0; 
$url='DernNews.php';

$db = mysql_connect('*****', '*****', '*****');
mysql_select_db('*****',$db);
$sql = 'SELECT DATE_FORMAT(DateJour, "%d-%m-%Y à %H:%i:%s") AS DateFr, NewsJour FROM Web_Nouvelles ORDER BY DateFr DESC';
//$sqld= 'SELECT DATE_FORMAT(DateJour, "%d-%m-%Y à %H:%i:%s") AS DateFr, NewsJour FROM Web_Nouvelles ORDER BY DateFr DESC';

mysql_query('SET NAMES utf8');
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

//Ajout dans la table si bouton "submit" est cliqué
if (isset($_POST['button'])) {$add=mysql_query("INSERT INTO Web_Nouvelles SET DateJour=now(), NewsJour='$NewsJour'"); header("Refresh: $delai;url=$url");}

//Supprimer dans la table si liste choisie et bouton cliqué
if(isset($_POST['envoie'])){$delete = $_POST['delete']; mysql_query("DELETE FROM Web_Nouvelles WHERE NewsJour= '".$delete."' "); header("Refresh: $delai;url=$url");}

mysql_close();
?>

<form id="form1" name="form1" method="post" action=""><table width="795" border="0" align="center" cellpadding="0" cellspacing="5">
      <tr>
        <td width="160" valign="top">Supprimer la nouvelle :</td>
        <td width="620">
<select name="delete" size="5" style="width:100%">
<option>Choisir la nouvelle à supprimer</option>
<?php $recherches=mysql_query('SELECT * FROM Web_Nouvelles ORDER BY DateJour DESC');while($applique=mysql_fetch_assoc($recherches)) {?>
<option name="name" ><?php echo $applique['NewsJour']; ?></option><?php }?>
</select>
        </td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="envoie" id="envoie" value="Supprimer" /></td>
      </tr>
    </table>
    </form>

<?php while($data = mysql_fetch_assoc($req)) {echo '<span class="Description"><b><u>'.$data['DateFr'].' :</u></b></span><br>'.$data['NewsJour'].'<hr>';} ?>


Dans le <select> il y a la première ligne "Choisir la nouvelle à supprimer" qui lorsque je l'ajoute comme enregistrement dans ma table, se supprime lorsque je clique sur le bouton supprimer.
Mon problème est que les enregistrements de la table ne s'affichent pas dans ma liste déroulante.
Pouvez-vous m'aider svp ?

A voir également:

3 réponses

adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
19 juil. 2011 à 12:31
Bonjour,

si ta liste déroulante est vide c'est parce qu'il se produit probablement une erreur lors de la récupération de données en base.

Pour cela je te conseillerais donc d'afficher simplement tes données avant de les mettre dans une liste déroulante.

Ensuite une fois ta liste correctement afficher il te faudra modifier les options qui ne comporte pas d'attribut name car celui ci est sur le select mais des attributs value qui auront pour valeur l'identifiant que tu souhaite utiliser pour supprimer un élément dans ta table.

Dernier point le fait d'autant mélanger le code ne peut être que générateur d'erreur. je te conseillerais donc d'opter pour une solution dans ce style

<?php 
echo '<select name="delete"><option value='.$applique['NewsJour'].'>'.$applique['NewsJour'].'</option></select>';


Adns
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
19 juil. 2011 à 12:42
J'ai juste remplacé :
<select name="delete" size="5" style="width:100%">
<option>Choisir la nouvelle à supprimer</option>
<?php $recherches=mysql_query('SELECT * FROM Web_Nouvelles ORDER BY DateJour DESC');while($applique=mysql_fetch_assoc($recherches)) {?>
<option name="name" ><?php echo $applique['NewsJour']; ?></option><?php }?>
</select>

par
<?php 
echo '<select name="delete"><option value='.$applique['NewsJour'].'>'.$applique['NewsJour'].'</option></select>'; 
?>

Avec ça il n'ajoute rien à la liste
Mais lorsque je fais :
<?php 
echo '<select name="delete"><option value='.$sql['NewsJour'].'>'.$sql['NewsJour'].'</option></select>'; 
?>

et là il m'affiche seulement un "S" or je n'ai aucun enregistrement qui débute ou fini par un "S"
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
19 juil. 2011 à 13:14
Fais juste

echo $sql['NewsJour'];

Si tu as une url de test cela pourrai être utile ;)

Adns
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
19 juil. 2011 à 13:16
Merci pour tes conseil Adns, il fonctionne super bien avec ceci :
$sqi = 'SELECT DATE_FORMAT(DateJour, "%d-%m-%Y à %H:%i:%s") AS DateFr, NewsJour FROM Web_Nouvelles ORDER BY DateFr DESC';
$reqt = mysql_query($sqi) or die('Erreur SQL !<br>'.$sqi.'<br>'.mysql_error());

<select name="delete" size="5" style="width:100%">
<?php while($applique=mysql_fetch_assoc($reqt)) {?>
<option><?php echo $applique['NewsJour']; ?></option>
<?php }?>
</select>
0