Envoyer vers un lien contenu dans une BDD

Envoyer vers un lien contenu dans une BDD - PHP - Programmation

Marsh Posté le 12-03-2008 à 14:08:00    

Bonjour à tous,
 
je vous explique dans ma BDD j'ai une table avec un identifiant du matériel (idMAT) et dans cette même table le lien pour y accéder (disque dur IP, caméra IP). Lorsqu'il arrive sur une page l'utilisateur choisi par l'intermédiaire d'un menu déroulant le matériel qu'il veut et je souhaiterais que lorsqu'il clique sur valider ça envoie vers le lien qui correspond (et qui est contenu dans la BDD)
 
voilà mon script si qqun peut me dire ce qu'il faut modifier pour réaliser ce que je souhaite :  
 

Code :
  1. $requete = "SELECT idMAT FROM admin, materiel";
  2. $requete.=" WHERE admin.idADMIN=materiel.idADMIN";
  3. $requete.=" AND admin.idADMIN='".$login."'";
  4. $resultat = mysql_query($requete)
  5. or die ("Exécution de la requête impossible" );
  6. echo"<b>Choisissez un materiel</b>\n";
  7. echo"<br><br>";
  8. echo "<form action='acces.php' method='post'><select name='nom'>\n";
  9. while ($liste=mysql_fetch_array($resultat))
  10. {
  11. extract($liste);
  12. echo "<option value='$idMAT'>$idMAT\n";
  13. }
  14. echo " </select>\n";
  15. echo " <BR><BR><BR><BR>";
  16. echo "<input type='submit'"."value='Validez votre choix'></form>\n"; 
  17. }//Fin de condition d'authentification
  18. }else{//Ici toutes les données n'ont pas été envoyées
  19.  echo "Il n'y a pas de login et/ou de mot de passe";
  20. }//Fin de condition de présence des données

Reply

Marsh Posté le 12-03-2008 à 14:08:00   

Reply

Marsh Posté le 12-03-2008 à 14:12:39    

extract(), Oh My God...
Non mais sérieusement, revois ton code, HTML et PHP.
Et puis quel est ton problème aussi? Qu'est ce qui ne va pas, ne fonctionne pas?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 15:11:34    

bah ce que je demande c'est écrit au dessus dans mon post relie bien

Reply

Marsh Posté le 12-03-2008 à 15:43:04    

Non mais sérieusement, met toi à la place des gens qui te lisent...
On a un bout de code, on sait juste qu'il faut le modifier.. Euh ok mais là par exemple tu envoies ton formulaire vers acces.php? Et tu y fais quoi dans ce script?? Et puis on va faire le boulot à ta place, donc précise ta demande!!!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 15:43:42    

Si je puis me permettre, je vais faire quelques remarques :

  • le extract() est pas beau du tout, il faut lui préférer un $liste['idMAT']
  • utilise des INNER JOIN en SQL, c'est beaucoup plus propre (pour le moteur SQL)
  • ton utilisation des simples quotes et doubles quotes et l'inverse de ce que je fait généralement. La raison est que en html, on préfère la double quote, donc j'utilise la simple pour délimiter le texte en php


Pour ton lien, il faut utiliser la value de la liste déroulante. Avant cela, il va falloir rajouter le lien dans le SQL... On obtiendra :

Code :
  1. $requete = 'SELECT idMAT, lien FROM admin INNER JOIN materiel
  2.  ON admin.idADMIN=materiel.idADMIN
  3.  WHERE admin.idADMIN="'.$login.'"';
  4. $resultat = mysql_query($requete) or die ('Exécution de la requête impossible');
  5. print '<b>Choisissez un materiel</b>\n
  6.  <br><br>
  7.  <form action="acces.php" method="post">
  8.   <select name="lien">\n';
  9. while ($liste=mysql_fetch_array($resultat))
  10. {
  11.  print '<option value="'.$liste['lien'].'">'.$liste['idMAT'].'\n';
  12. }
  13. echo '</select>\n
  14.  <BR><BR><BR><BR>
  15.  <input type="submit" value="Validez votre choix"></form>\n';
  16. }//Fin de condition d'authentification
  17. }else{//Ici toutes les données n'ont pas été envoyées
  18. print "Il n'y a pas de login et/ou de mot de passe";
  19. }//Fin de condition de présence des données


et tu récupères ton lien dans la page acces.php en faisant un $_POST['lien']


Message édité par babasss le 12-03-2008 à 15:44:30

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 12-03-2008 à 16:04:19    

merci babass j'ai repris ton script (en enlevant quelques \n parce que ça m'en affichait partout)
et j'ai suivi ce que tu m'as dis mais sans succès peux tu me dire ce que tu penses de mon script de ma page acces.php :
 

Code :
  1. $liste = $_POST['lien'];
  2. $rq="SELECT lien FROM materiel";
  3. $rq.="WHERE materiel.idMAT='".$idMAT."'";
  4. $url = mysql_query($rq)
  5. or die ("Exécution de la requête impossible" );
  6. header('Location: $url');


Message édité par boss183 le 12-03-2008 à 16:36:13
Reply

Marsh Posté le 12-03-2008 à 16:38:43    

Est ce que tu as compris ce que je t'ai mis dans mon post précédent ? Parce que là, ca n'a pas l'air du tout  [:grise mine]
Va regarder le code source de ta page une fois celle-ci chargée pour voirce qu'il y a comme value dans les balises option ... tu as déjà les liens. Quand tu cliques sur le bouton submit, ca envoie en $_POST le lien, donc tu n'as pas besoin de refaire du SQL sur ta page acces.php

 

Note : Je dirais même que avec un peu de programmation en plus tu n'as pas besoin de page acces.php et qu'avec une petite dose de javascript tu peux t'en sortir...


Message édité par babasss le 12-03-2008 à 16:39:21

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 12-03-2008 à 16:52:42    

tu dis que je n'ai pas besoin de SQL pour faire la redirection sur mon lien ce qui veut dire que :
 
$lien = $_POST['lien'];
header('Location: $lien');
 
ça suffirait. Désolé babass mais je débute en prog

Reply

Marsh Posté le 12-03-2008 à 16:54:50    

Tout dépend de ce que tu as dans $_POST['lien'] comme valeur, mais c'est à cela que je pensais...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 12-03-2008 à 17:21:04    

ouai mais il me redirige ver sune page qui me met :
Not Found
The requested URL /test/$lien was not found on this server.

Reply

Marsh Posté le 12-03-2008 à 17:21:04   

Reply

Marsh Posté le 12-03-2008 à 17:36:28    

header('Location: $lien');  
C'est normal, entre simple quote les variables ne sont pas remplacées par leur valeurs. Essais donc avec des doubles quote " ou alors une concaténation.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 17:42:15    

c bon ça marche

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed