Problème de selection dans un tableau (php)

Résolu
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010 - 5 janv. 2010 à 10:29
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010 - 8 janv. 2010 à 09:59
Bonjour à tous!! Voila j'ai un petit souci.J'ai construis un tableau et donc a chaque bout de colonne j'ai inclu un checkbox.En dehors de mon tableau j'ai 3 boutons qui permettent de modifier,supprimer et ajouter.
Mon problème c'est que je n'arrive pas à selectionner l'id choisi dans mon tableau pour ensuite cliquer sur l'action de mon choix.
Pouvez vous m'aider??? merci
Date installation |
Identifiant |
Nom PC |
Affectation |
Agence |
Users |
Mot_de_passe |
Adresse IP |
Raccordement domaine |
Création Users |
Base MP |
MP_Intranet |
MAJ_MP |
Office |
Symantec |
VNC |
Adobe Reader |
Config. Boîte email |
PDF Creator |

<?php
while ($tab = mysql_fetch_array($res))
{
?>
----

<?php echo $tab['date_installation'];?>,
<?php echo $tab['identifiant'];?>,
<?php echo $tab['nom_pc'];?>,
<?php echo $tab['affectation'];?>,
<?php echo $tab['agence'];?>,
<?php echo $tab['users'];?>,
<?php echo $tab['mot_de_passe'];?>,
<?php echo $tab['adresse_ip'];?>,
<?php echo $tab['raccordement_domaine'];?>,
<?php echo $tab['creation_users'];?>,
<?php echo $tab['base_mp'];?>,
<?php echo $tab['mp_intranet'];?>,
<?php echo $tab['maj_mp'];?>,
<?php echo $tab['office'];?>,
<?php echo $tab['symantec'];?>,
<?php echo $tab['vnc'];?>,
<?php echo $tab['adobe_reader'];?>,
<?php echo $tab['config_boite_mail'];?>,
<?php echo $tab['pdf_creator'];?>,
<form action="modifier.php" method="POST">
<?php echo " "?>
</form>,

<?php
}
?>

<center>

[ajout.php Ajouter] |
[modifier.php Modifier] |
[suppression.php Supprimer]

</center>


Voici mon code...
Merci beaucoup, bisou à tous.

71 réponses

tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
5 janv. 2010 à 17:23
Okey merci je vais l'étudier oui merci beaucoup de ton aide.
Passe une bonne soirée...
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 09:22
Bonjour!!
J'ai une petite question qui pourrait peut-être paraitre debile mais le javascript c'est obligé qu'il soit dans la partie <head></head>??parce que je vois dans le script que tu ma conseillée d'étudier, le javascript n'ai pas dans la partie <head></head>...
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 09:39
J'ai donc étudiée ton idée, et le fait de tout faire sur une seule et même page, n'est pas mal , mais j'ai un tout petit problème que je n'ai pas compris (désolé je ne suis pas trés professionnel, et j'ai beaucoup de mal), on ma trouvée une faute sur ma requête :
$sql="SELECT * FROM  WHERE identifiant=$_GET['id']";

Ma faute parait-il c'est : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\Gestion_dun_parc_informatique\index.php on line 125
Donc ma requête =/
Merci de ton aide
Bisou
0
Utilisateur anonyme
6 janv. 2010 à 10:53
Salut

Essaye ça :
    $id = $_GET['id'];
    $sql "SELECT * FROM [NOM_TABLE] WHERE identifiant ".$id.";


Pour le javascript dans le header c'est une convention mais des fois tu es obligé de le mettre ailleurs. Ca fonctionne aussi bien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 10:54
Pas de réponse
0
Utilisateur anonyme
6 janv. 2010 à 10:54
Désolé je continue en mode boulet
$id = $_GET['id'];
    $sql "SELECT * FROM [NOM_TABLE] WHERE identifiant ".$id;
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 10:55
Oups désoler je n'avais pas vu que tu m'avais répondu
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 11:08
Oui ça marche la requête sql a été acceptée! j'ai refait les requêtes selon ce que tu vien de poster et ça marche!! Merci beaucoup!
Mais maintenant mon problème vient du while =/ pourtant j'ai bien remis les variables pour executer ma requête =S .
Et sinon pour les liens j'ai pas vraiment compris comment tu as fait tu pourrais m'expliquer? parce que t'as fait un premier lien ajouter avec le lien <href="mapage.php?action=add">, Okey bon la j'ai compris Aprés ta fait le lien supprimer, et c'est la que j'ai pas vraiment compris.A quoi il sert le if??
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
6 janv. 2010 à 11:10
J'ai une petite question qui pourrait peut-être paraitre debile mais le javascript c'est obligé qu'il soit dans la partie <head></head>??parce que je vois dans le script que tu ma conseillée d'étudier, le javascript n'ai pas dans la partie <head></head>...

Aucune question n'est debile... Ou presque...

Le JavaScript, tu peux le mettre ou tu veux. Cependant il est conseillé de rassembler tout le JavaScript dans les mêmes balises pour gagner du temps de chargement de page je crois...
Voici les conseils tirés du plugin firefox YSlow :
http://developer.yahoo.com/performance/rules.html#external
http://developer.yahoo.com/performance/rules.html#js_bottom
http://developer.yahoo.com/performance/rules.html#minify
http://developer.yahoo.com/performance/rules.html#js_dupes
Voila :D

on ma trouvée une faute sur ma requête :
Code PHP :
$sql="SELECT * FROM WHERE identifiant=$_GET['id']";

Ma faute parait-il c'est : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\Gestion_dun_parc_informatique\index.php on line 125

Alors je t'avais mis en commentaire que des idées. Le code que tu as entré n'est pas tout à fais bon :
Le guillemet double permet en effet d'interpréter les variables simples :

<?php $toto = "moto";
$sql="SELECT * FROM  WHERE identifiant=$toto";
echo $sql;
// Donne
// SELECT * FROM  WHERE identifiant=moto
?>

Ce n'est pas le cas pour les tableaux. Il faut utiliser la concaténation
<?php
$toto['hello'] = "moto";
$sql="SELECT * FROM  WHERE identifiant=".$toto['hello'];
echo $sql;
// Donne
// SELECT * FROM  WHERE identifiant=moto
?>

Il reste encore des erreurs de sécurité. Etant donné qu'on ne fais jamais confiance à une variable qui vient du client, je te conseil de sécuriser tout les $_GET et $_POST dont tu te sert dans tes requêtes SQL :
<?php
$sql='SELECT * FROM  WHERE identifiant="'.mysql_real_escape_string($toto['hello']).'"';
echo $sql;
// Donne
// SELECT * FROM  WHERE identifiant="moto"
// Avec moto sécurisé... Pour plus de details cf lien "mysql_real_escape_string" ci dessous
?>

Plus de détails ici par exemple :
Site du zero : éviter les injections SQL
mysql_real_escape_string

_________________________________
Min iPomme
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 11:11
Moi aussi je suis en mode boulette ^^
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
6 janv. 2010 à 11:11
Ah je me suis fais devancé le temps d'écrire mon message

_________________________________
Min iPomme
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 11:25
C'est pas grave merci beaucoup de l'attention que tu porte à mon problème =)
0
Utilisateur anonyme
6 janv. 2010 à 11:59
Pour ton message concernant les if dans le code de Tonio_35
<?php
// Si on appel mapage.php pour ajouter un element
// avec la variable d'url action et la valeur add
// mapage.php?action= add
if(isset($_GET['action']) and $_GET['action'] == 'add')
{
?>
<!-- Créer formulaire d ajout -->
<?php
}
// Si on appel mapage.php pour éditer un element
// avec la variable d'url action et la valeur edit
// mapage.php?action=edit&id=NUM
elseif(isset($_GET['action']) and $_GET['action'] == 'edit')
{
// SELECT * FROM table WHERE identifiant=$_GET['id']
?>
<!-- Créer formulaire de modification -->
<?php
}
// Si on appel mapage.php pour supp un element
// avec la variable d'url action et la valeur del
// mapage.php?action=del&id=NUM
// ou
// mapage.php?action=del avec la var post choix
elseif(isset($_GET['action']) and $_GET['action'] == 'del')
{
// Si l user clique sur un lien supprimé, il charge cette page avec l'information de suppression dans la variable d url id
if(isset($_GET['id']))
{
// DELETE WHERE identifiant=$_GET['id']
}
// Si il clique en soumettant le formulaire (Bouton supprimer) c'est alors la variable POST choix qui contiendras un tableau des ID cochées
elseif(isset($_POST['choix']))
{
// Pour chaque choix dans le tableau $_POST['choix']
// DELETE WHERE identifiant=valeur choix
}
// Redirection vers mapage.php
}
else
{
// Si on appel mapage.php sans variables
?>
<form id="Formulaire" name="Formulaire" method="post" action="mapage.php?action=del">
   |
Date installation |
Identifiant |
Nom PC |
Affectation |
Agence |
Users |
Mot_de_passe |
Adresse IP |
Raccordement domaine |
Création Users |
Base MP |
MP_Intranet |
MAJ_MP |
Office |
Symantec |
VNC |
Adobe Reader |
Config. Boîte email |
PDF Creator |

<?php
while ($tab  = mysql_fetch_array($res))
{
?>
----

">,
<?php echo $tab['date_installation'];?>,
<?php echo $tab['identifiant'];?>,
<?php echo $tab['nom_pc'];?>,
<?php echo $tab['affectation'];?>,
<?php echo $tab['agence'];?>,
<?php echo $tab['users'];?>,
<?php echo $tab['mot_de_passe'];?>,
<?php echo $tab['adresse_ip'];?>,
<?php echo $tab['raccordement_domaine'];?>,
<?php echo $tab['creation_users'];?>,
<?php echo $tab['base_mp'];?>,
<?php echo $tab['mp_intranet'];?>,
<?php echo $tab['maj_mp'];?>,
<?php echo $tab['office'];?>,
<?php echo $tab['symantec'];?>,
<?php echo $tab['vnc'];?>,
<?php echo $tab['adobe_reader'];?>,
<?php echo $tab['config_boite_mail'];?>,
<?php echo $tab['pdf_creator'];?>,

----

[mapage.php?action=add Ajouter] | [javascript:; Supprimer]




</center>
</form>
<script type="text/javascript">
<!--// J Ai pas vérifier si ca marche... :-D
function checkUcheckAll(toCheck)
{
var mesCheck = document.Formulaire.choix;
if(toCheck)
{
for (var i=0; i<mesCheck.length; i++)
{
  mesCheck[i].checked = 'checked';
}
}
else
{
for (var i=0; i<mesCheck.length; i++)
{
  mesCheck[i].checked = '';
}
}
}
// -->
</script>
<?php
}
?>


le if dans le lien supprimer permet d'afficher une boite de dialogue qui te demandera si tu es d'accord pour supprimer les enregistrements que tu as cochés. Si tu cliques sur "annuler" dans la boite de dialogue, rien ne se passera, tu annuleras l'action. Dans le cas contraire si tu cliques sur "ok" tu vas valider le formulaire, et être redirigée sur la page qui est inscrite dans l'attribut action de la balise form.

<form id="Formulaire" name="Formulaire" method="post" action="mapage.php?action=del">


Dans le cas présent Tonio_35 a choisi que l'action par défaut du formaulaire soit la commande "del". Donc tu seras redirigée vers la page mapage.php?action=del et tu exécuteras le code compris dans la section ... if(isset($_GET['action']) && $_GET['action'] == 'del'.
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 14:26
Ok merci =) Mais dit moi es ce normal que mon while ne marche pas, sachant que les variables sont bien définient?
$id = $_GET['id'];
          $sql "SELECT * FROM ordinateur WHERE identifiant ".$id;
  $res = mysql_query($sql) or die ();
          $total = mysql_num_rows($res);


Mais entre la déclaration des variables et l'utilisation du while, il y a tout ça :
<!-- Formulaire de modification -->
  <table>
         <tr>
 <th colspan="2">MODIFICATION FICHE INSTALLATION ORDINATEUR<th>
</tr>
<tr>
<td>Date installation :</td>
<td></td>
</tr>
<tr>
                <td>Identifiant :</td>
<td ></td>
        </tr>
<tr>
                <td>Nom PC :</td>
<td></td>
</tr>
<tr>
                <td>Affectation :</td>
<td></td>
</tr>
<tr>
<td>Agence :</td>
<td></td>
</tr>
<tr>
<td>Users :</td>
<td></td>
        </tr>
<tr>
<td>Mot de passe :</td>
<td></td>
        </tr>
<tr> 
<td>Adresse IP :</td>
<td></td>
</tr>
        <?php
                }
                // Si on appel mapage.php pour supprimer un element avec la variable d'url action et la valeur del mapage.php?action=del&id=NUM ou mapage.php?action=del avec la var post choix
               elseif(isset($_GET['action']) and $_GET['action'] == 'del')
               {
       // Si l user clique sur un lien supprimé, il charge cette page avec l'information de suppression dans la variable d url id
       if(isset($_GET['id']))
       {
       $sql2="DELETE WHERE identifiant= ".$id;	
       }
      // Si il clique en soumettant le formulaire (Bouton supprimer) c'est alors la variable POST choix qui contiendras un tableau des ID cochées
elseif(isset($_POST['choix']))
       {
     // Pour chaque choix dans le tableau $_POST['choix']
$sql3=" DELETE WHERE identifiant=valeur choix";
       }
    // Redirection vers mapage.php
               }
               else
               {
            // Si on appel mapage.php sans variables
               ?>
              <form id="Formulaire" name="Formulaire" method="post" action="mapage.php?action=del">
             <table border="1">
        <tr>
<th></th>
<th>Date installation</th>
<th>Identifiant</th>
<th>Nom PC</th>
<th>Affectation</th>
<th>Agence</th>
<th>Users</th>
<th>Mot_de_passe</th>
<th>Adresse IP</th>
<th>Raccordement domaine</th>
<th>Création Users</th>
<th>Base MP</th>
<th>MP_Intranet</th>
<th>MAJ_MP</th>
<th>Office</th>
<th>Symantec</th>
<th>VNC</th>
<th>Adobe Reader</th>
<th>Config. Boîte email</th>
<th>PDF Creator</th>
</tr>
<?php
while ($tab = mysql_fetch_array($res))
{
?>


Es que le fait qu'il y ai d'autre déclaration de variable, ou d'autre opération gêne pour l'utilisation du while?
J'ai aussi essayée de copier ces variables juste au dessu du while mais la faute reste la même...
Bisou
0
Utilisateur anonyme
6 janv. 2010 à 14:31
Tu peux me montrer ton bout de code qui va à l'intérieur du while(){ ... } stp
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
6 janv. 2010 à 14:56
Il faut faire le select au bon endroit... Si tu le fais dans un if() il seras pas accessible dans un else...


_________________________________
Min iPomme
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 15:21
Voila mon code :
<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1">
<title>Gestion parc informatique - Ajouter</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>






<hr>


<?php
// Si on appel mapage.php pour modifier un element avec la variable d'url action et la valeur edit mapage.php?action=edit&id=NUM
elseif(isset($_GET['action']) and $_GET['action'] == 'edit')
{
$id = $_GET['id'];
$sql "SELECT * FROM ordinateur WHERE identifiant ".$id;
$res = mysql_query($sql) or die ();
$total = mysql_num_rows($res);
?>
<!-- Formulaire de modification -->
 MODIFICATION FICHE INSTALLATION ORDINATEUR  |

----

Date installation :,
,

----

Identifiant :,
,

----

Nom PC :,
,

----

Affectation :,
,

----

Agence :,
,

----

Users :,
,

----

Mot de passe :,
,

----

Adresse IP :,
,

<?php
}
// Si on appel mapage.php pour supprimer un element avec la variable d'url action et la valeur del mapage.php?action =del&id= NUM ou mapage.php?action=del avec la var post choix
elseif(isset($_GET['action']) and $_GET['action'] == 'del')
{
// Si l user clique sur un lien supprimé, il charge cette page avec l'information de suppression dans la variable d url id
if(isset($_GET['id']))
{
$sql2=\"DELETE WHERE identifiant= \".$id;
}
// Si il clique en soumettant le formulaire (Bouton supprimer) c'est alors la variable POST choix qui contiendras un tableau des ID cochées
elseif(isset($_POST['choix']))
{
// Pour chaque choix dans le tableau $_POST['choix']
$sql3=\" DELETE WHERE identifiant=valeur choix\";
}
// Redirection vers mapage.php
}
else
{
// Si on appel mapage.php sans variables
?>
<form id=\"Formulaire\" name=\"Formulaire\" method=\"post\" action=\"mapage.php?action=del\">
<table border=\"1\">
----

   |
Date installation |
Identifiant |
Nom PC |
Affectation |
Agence |
Users |
Mot_de_passe |
Adresse IP |
Raccordement domaine |
Création Users |
Base MP |
MP_Intranet |
MAJ_MP |
Office |
Symantec |
VNC |
Adobe Reader |
Config. Boîte email |
PDF Creator |

<?php
while ($tab  = mysql_fetch_array($res))
{
?>
----

">,
<?php echo $tab['date_installation'];?>,
<?php echo $tab['identifiant'];?>,
<?php echo $tab['nom_pc'];?>,
<?php echo $tab['affectation'];?>,
<?php echo $tab['agence'];?>,
<?php echo $tab['users'];?>,
<?php echo $tab['mot_de_passe'];?>,
<?php echo $tab['adresse_ip'];?>,
<?php echo $tab['raccordement_domaine'];?>,
<?php echo $tab['creation_users'];?>,
<?php echo $tab['base_mp'];?>,
<?php echo $tab['mp_intranet'];?>,
<?php echo $tab['maj_mp'];?>,
<?php echo $tab['office'];?>,
<?php echo $tab['symantec'];?>,
<?php echo $tab['vnc'];?>,
<?php echo $tab['adobe_reader'];?>,
<?php echo $tab['config_boite_mail'];?>,
<?php echo $tab['pdf_creator'];?>,

----

[ajout.php Ajouter] | 
[javascript:; Supprimer]




</center>
</form>
<script type="text/javascript">
<!--// J Ai pas vérifier si ca marche... :-D
function checkUcheckAll(toCheck)
{
var mesCheck = document.Formulaire.choix;
if(toCheck)
{
for (var i=0; i<mesCheck.length; i++)
{
  mesCheck[i].checked = 'checked';
}
}
else
{
for (var i=0; i<mesCheck.length; i++)
{
  mesCheck[i].checked = '';
}
}
}
// -->
</script>
        <?php
            }
        ?>
            

        

    
</html>
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
6 janv. 2010 à 15:49
1 - Je te conseil de bien sécuriser ton code en relisantce message...

2 - Tu n'as plus de select avant ton while ($tab = mysql_fetch_array($res))... Du coup ca va pas...
Essai de coriger, je vais te faire en parallèle encore une fois un bout de code plus commenté...



_________________________________
Min iPomme
0
tagadax Messages postés 97 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 27 mars 2010
6 janv. 2010 à 15:58
J'ai essayée de mettre SELECT avant le while avec
$res = mysql_query($sql) or die ();
$total = mysql_num_rows($res);

mais cela ne donne rien =/.
Et je ne comprend pas a quoi servirai de sécurisé mon code.pourtant je ne suis pas blonde
0
Utilisateur anonyme
6 janv. 2010 à 15:58
Ton code contient quelques petits problèmes. J'ai pas le temps pour l'instant mais ce soir je te posterai la solution et je te l'expliquerais.
0
Rejoignez-nous