PHP/MSSQL: réaffichage contenu tableau sur page PHP - PHP - Programmation
Marsh Posté le 19-07-2006 à 13:48:57
je vais résumer ton problème comme ça:
1- tu fais un select, tu affiches le résultat dans une table
2- tu fais un delete ensuite
3- tu es surpris que l'élement supprimé en 2 apparaisse dans le tableau généré en 1
c'est ça???
Marsh Posté le 19-07-2006 à 14:01:35
Bonjour anapajari,
Tout d'abord merci de t'interresser à mon problème.
Pas tout à fait !!!
Grosso modo voilà comment ça se presente sur ma page php:
Formulaire de sasie: ID|Nom|AdresseMail
Bouton validation
Tableau avec colonne: ID|Nom|AdresseMail
ligne affiche Bd 1 |aa |aa.aa@aa.fr
ligne affiche Bd 2 |bb |bb.bb@bb.fr
(Au fur et à mesure que je saisie via mon formulaire cela s'incrémente dynamiquement dans mon tableau sur ma page html).
Liste déroulate contenant les ID des lignes à supprimer récupérées dans ma bd. Liste déroulante
Bouton Validation
Ce que j'arrive à faire c'est sélectionner un ID, ensuite quand je valide ma sélection de liste, cela me supprime bien ma ligne dans ma bd.
Par contre cela ne me réactualise pas mon tableau avec la ligne supprimée en moins. Et c'est que je voudrais faire !!!!
Merci d'avance
Bien toi
Marsh Posté le 19-07-2006 à 14:30:53
bouillehpras > Si tu veux que la supression soit visible dans le tableau, alors il faut faire la supression avant de récupérer les données du tableau.
PS : Mets le code de ton premier message entre [ cpp ] [ /cpp ] (sans les espaces) ca rendra ton code plus lisible. Là, j'ai pas le temps d'analyser ton texte pour trouver les débuts et fin de chaque morceau.
Marsh Posté le 19-07-2006 à 14:43:54
Bonjour à toi omega2
Tout d'abord merci de t'interresser à mon problème.
Voici le code avec les balises !!!
CODE:
<?php
$server="xx.xx.xx.xx";
$username="xx";
$password="xx";
$connect = mssql_connect ("$server","$username","$password" ) || die ("===>>> Connexion impossible au serveur" );
mssql_select_db("NOMEMAIL" ) || die ("===>>> Connexion impossible à la base de données" );
$ID="";
if(!empty($_POST["ID"]))
$ID=$_POST["ID"];
$nom="";
if(!empty($_POST["nom"]))
$nom=addslashes($_POST["nom"]);
$email="";
if(!empty($_POST["email"]))
$email=$_POST["email"];
$message="";
if($email)
{
$table="TESTNOMEMAIL";
$query = "INSERT INTO $table(ID,nom,email)";
$query .= " VALUES('$ID','$nom','$email')";
$result = mssql_query($query);
}
?>
<HTML>
<HEAD>
<TITLE>Exemple</TITLE>
<script language="JavaScript">
function verif(email)
{
var arobase = email.indexOf("@" )
var point = email.lastIndexOf("." )
if((arobase < 3) || (point + 2 > email.length) || (point < arobase+3))
return false
return true
}
function test(ID,nom,mail)
{
if(ID.value=="" ) { alert('ID requis !')
ID.focus();return false }
if(nom.value=="" ) { alert('Nom requis !')
nom.focus();return false }
if(!verif(mail.value)) { alert('Email invalide !')
mail.focus();return false }
return true
}
</script>
</HEAD>
<BODY bgcolor="#0066FF">
<p align="center"><b><font color="#CCFF33" size="5">Liste Nom / Adreese E-Mail: </font></b></p>
<center>
<?php
echo $message;
?>
<form method="post" action="<? echo $URL; ?>" onSubmit="return test(this.ID,this.nom,this.email)">
<table BORDER=1>
<tr>
<td>ID</td>
<td><input type="text" name="ID"></td>
<td>Nom</td>
<td><input type="text" name="nom"></td>
<td>E-mail</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<th colspan=6>
<input type="Submit" value="Ajouter"></th>
</tr>
</table>
</form>
<table ALIGN=CENTER BORDER=3 CELLSPACING=2 CELLPADDING=1 width="605" height="146">
<TR>
<TH ALIGN=CENTER>ID:</TH>
<TH ALIGN=CENTER>NOM:</TH>
<TH ALIGN=CENTER>EMAIL:</TH>
</TR>
<?php
$requete="select ID, nom, email from TESTNOMEMAIL where ID between 1 and 100";
$resultat = mssql_query($requete) or die ("===>>> Erreur SQL" );
while ( list( $ID, $nom, $email ) = mssql_fetch_row($resultat))
{
$bgcolor="bgcolor=#cccccc";
print ("<tr>\n".
" <td $bgcolor ALIGN=CENTER>$ID</td>\n".
" <td $bgcolor ALIGN=CENTER>$nom</td>\n".
" <td $bgcolor ALIGN=CENTER>$email</td>\n".
"</tr>\n" );
}
echo "</table>";
$resultat_ligne = mssql_query("select * from TESTNOMEMAIL " ) or die ("===>>> Erreur SQL" );
$totalFilm = mssql_num_rows($resultat_ligne);
?>
<form name="myform" method="post" action="<? echo $URL; ?>">
<table>
<tr>
<td align=center>
SUPPRESSION DE LIGNE:
</td>
</tr>
<tr>
<td align=center>
Veuillez sélectionner un nom afin de supprimer une ligne:
<select name="liste[]">
<option selected>-- Veuillez choisir --</option>
<?PHP
while ($val = mssql_fetch_array($resultat_ligne))
{
?>
<option>
<?PHP
echo $val["ID"];
?>
</option>
<?PHP $Flag=1;
}
?>
</select>
, puis cliquez sur la case "Suppression Ligne"
</td>
</tr>
<br>
<tr>
<td align=center><br>
<input type="Submit" value="Suppression Ligne">
</td>
</tr>
</table>
</form>
<?PHP
for ($i=0; $i<count($liste); $i++)
{
$NumLigne = $liste[$i];
}
echo "Numéro de ligne est: ".$NumLigne;
$requeteBISBIS="delete from TESTNOMEMAIL where ID='$NumLigne'";
$resultatSUPRLIGNE = mssql_query($requeteBISBIS) or die ("===>>> Erreur SQL" );
$resultat_ligne = mssql_query("select * from TESTNOMEMAIL " ) or die ("===>>> Erreur SQL" );
$totalFilm = mssql_num_rows($resultat_ligne);
mssql_close();
echo "<p align=center><u><i><font color=white><b> Nombre d'adresses E-Mail: $totalFilm</b></font></i></u></p>";
echo "</body></html>";
//phpinfo();
?>
Merci d'avance
Bien toi
Marsh Posté le 19-07-2006 à 14:56:04
nan nan nan il faut que tu ecrive:
[cpépé] ... ton code au milieu ...[/cpépé] ( avec p à la place de "pé" => cpp)
Maintenant comme te l'a dit Omega2 ( bon j'avais espéré que cela était assez clair dans mon message, apparement non):
Citation : Si tu veux que la supression soit visible dans le tableau, alors il faut faire la supression avant de récupérer les données du tableau. |
Il faut donc faire ton delete AVANT ton select
Marsh Posté le 19-07-2006 à 15:41:16
Tu effectues le traitement de ton formulaire dans une autre page (mettons traitement.php) et tu renvoies dans la page de ton tableau avec un header.
Dans le pire des cas, tu fais un :
Code :
|
dans ta fonction d'effacement.
(Ca actualise la page tout seul comme un grand, pas besoin d'appuyer sur F5)
Mais bon... c'est barbare.
Marsh Posté le 19-07-2006 à 13:43:36
Bonjour à tous,
Coucou à Berceker United
CONFIG:
*Serveur A: Intranet
OS Win 2000 serveur SP4
Mysql/Apache/Php via EasyPhp
*Serveur B: MSSQL Serv 2000
OS Win 2000 serveur SP4
ETAPE TEST SUR PAGE PHP:
1)-Connexion sur Basedonnee - OK
2)-Via Formulaire: écriture dans table base donnee - OK
3)-Affichage dans tableau sur page php des infos saisie dans base donnee - OK
4)-Ajout sur Page PHP, une liste déroulante contenant les IDs des infos saisies dans base donnee - OK
5)-Sélection via liste, num ID, afin de supprimer dans la base donnee, les infos de la ligne - OK
6)-Simultanément de la suppression dans base de donnee, sur page Php, je voudrais que la ligne - ER
du tableau soit supprimée. Je le vois que si j'actualise page PHP.
Sinon si je rappelle l'affichage de mon tableau après avoir fait un DELETE FROM c'est OK
QUESTION:
Comment dois-je procéder pour que sur ma page PHP, dans l'affichage de mon tableau après avoir
fait mon DELETE FROM, la ligne de mon tableau ne s'affiche plus ?
CODE: sur page PHP
===>>>J'AI ENLEVER LES BORNES HTML ET PHP
######################
##### DEB CODE #######
######################
DEB BornePHP
$server="xx.xx.xx.xx";
$username="xx";
$password="xx";
$connect = mssql_connect ("$server","$username","$password" ) || die ("===>>> Connexion impossible au serveur" );
mssql_select_db("NOMEMAIL" ) || die ("===>>> Connexion impossible à la base de données" );
$ID="";
if(!empty($_POST["ID"]))
$ID=$_POST["ID"];
$nom="";
if(!empty($_POST["nom"]))
$nom=addslashes($_POST["nom"]);
$email="";
if(!empty($_POST["email"]))
$email=$_POST["email"];
$message="";
if($email)
{
$table="TESTNOMEMAIL";
$query = "INSERT INTO $table(ID,nom,email)";
$query .= " VALUES('$ID','$nom','$email')";
$result = mssql_query($query);
}
FIN BornePHP
DEB Borne HTML
HEAD
TITLEExempleTITLE
script language="JavaScript"
function verif(email)
{
var arobase = email.indexOf("@" )
var point = email.lastIndexOf("." )
if((arobase < 3) || (point + 2 > email.length) || (point < arobase+3))
return false
return true
}
function test(ID,nom,mail)
{
if(ID.value=="" ) { alert('ID requis !')
ID.focus();return false }
if(nom.value=="" ) { alert('Nom requis !')
nom.focus();return false }
if(!verif(mail.value)) { alert('Email invalide !')
mail.focus();return false }
return true
}
script
HEAD
BODY bgcolor="#0066FF"
<p align="center"><b><font color="#CCFF33" size="5">Liste Nom / Adreese E-Mail: </font></b></p>
<center>
DEB BornePHP
echo $message;
FIN BornePHP
<form method="post" action="<? echo $URL; ?>" onSubmit="return test(this.ID,this.nom,this.email)">
<table BORDER=1>
<tr>
<td>ID</td>
<td><input type="text" name="ID"></td>
<td>Nom</td>
<td><input type="text" name="nom"></td>
<td>E-mail</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<th colspan=6>
<input type="Submit" value="Ajouter"></th>
</tr>
</table>
</form>
<table ALIGN=CENTER BORDER=3 CELLSPACING=2 CELLPADDING=1 width="605" height="146">
<TR>
<TH ALIGN=CENTER>ID:</TH>
<TH ALIGN=CENTER>NOM:</TH>
<TH ALIGN=CENTER>EMAIL:</TH>
</TR>
DEB BornePHP
$requete="select ID, nom, email from TESTNOMEMAIL where ID between 1 and 100";
$resultat = mssql_query($requete) or die ("===>>> Erreur SQL" );
while ( list( $ID, $nom, $email ) = mssql_fetch_row($resultat))
{
$bgcolor="bgcolor=#cccccc";
print ("<tr>\n".
" <td $bgcolor ALIGN=CENTER>$ID</td>\n".
" <td $bgcolor ALIGN=CENTER>$nom</td>\n".
" <td $bgcolor ALIGN=CENTER>$email</td>\n".
"</tr>\n" );
}
echo "</table>";
$resultat_ligne = mssql_query("select * from TESTNOMEMAIL " ) or die ("===>>> Erreur SQL" );
$totalFilm = mssql_num_rows($resultat_ligne);
FIN BornePHP
<form name="myform" method="post" action="<? echo $URL; ?>">
<table>
<tr>
<td align=center>
SUPPRESSION DE LIGNE:
</td>
</tr>
<tr>
<td align=center>
Veuillez sélectionner un nom afin de supprimer une ligne:
<select name="liste[]">
<option selected>-- Veuillez choisir --</option>
DEB BornePHP
while ($val = mssql_fetch_array($resultat_ligne))
{
FIN BornePHP
<option>
DEB BornePHP
echo $val["ID"];
FIN BornePHP
</option>
DEB BornePHP $Flag=1;
}
FIN BornePHP
</select>
, puis cliquez sur la case "Suppression Ligne"
</td>
</tr>
<br>
<tr>
<td align=center><br>
<input type="Submit" value="Suppression Ligne">
</td>
</tr>
</table>
</form>
DEB BornePHP
for ($i=0; $i<count($liste); $i++)
{
$NumLigne = $liste[$i];
}
echo "Numéro de ligne est: ".$NumLigne;
$requeteBISBIS="delete from TESTNOMEMAIL where ID='$NumLigne'";
$resultatSUPRLIGNE = mssql_query($requeteBISBIS) or die ("===>>> Erreur SQL" );
$resultat_ligne = mssql_query("select * from TESTNOMEMAIL " ) or die ("===>>> Erreur SQL" );
$totalFilm = mssql_num_rows($resultat_ligne);
mssql_close();
echo "<p align=center><u><i><font color=white><b> Nombre d'adresses E-Mail: $totalFilm</b></font></i></u></p>";
echo "body html";
//phpinfo();
FIN BornePHP
######################
##### FIN CODE #######
######################
Merci d'avance
Au revoir et bonne journée
Bien à vous