Envoyer vers un lien contenu dans une BDD

Résolu/Fermé
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 12 mars 2008 à 14:04
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 12 mars 2008 à 17:43
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 :

$requete = "SELECT idMAT FROM admin, materiel";
$requete.=" WHERE admin.idADMIN=materiel.idADMIN";
$requete.=" AND admin.idADMIN='".$login."'";
$resultat = mysql_query($requete)
or die ("Exécution de la requête impossible");

echo"<b>Choisissez un materiel</b>\n";
echo"<br><br>";
echo "<form action='acces.php' method='post'><select name='nom'>\n";
while ($liste=mysql_fetch_array($resultat))
{
extract($liste);
echo "<option value='$idMAT'>$idMAT\n";
}
echo " </select>\n";
echo " <BR><BR><BR><BR>";
echo "<input type='submit'"."value='Validez votre choix'></form>\n";

}//Fin de condition d'authentification
}else{//Ici toutes les données n'ont pas été envoyées
echo "Il n'y a pas de login et/ou de mot de passe";
}//Fin de condition de présence des données

8 réponses

Utilisateur anonyme
12 mars 2008 à 15:07
Dans ta page acces.php tu vas devoir faire 3 opérations :

- Récupérer la valeur que l'utilisateur a sélectionné dans la liste ($_POST['ID_LISTE'])
- Faire une requête pour récupérer ton lien dans la BD (SELECT URL FROM MA_TABLE WHERE ATTRIBUT = ID_LISTE)
- Faire un forward sur l'url que la requête t'a retournée. (header('Location: $URL') --> voir le sujet suivant : http://www.commentcamarche.net/faq/sujet 878 php rediriger sur une autre page redirection)

Bon courage
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
12 mars 2008 à 15:41
Marci tassin j'ai compris cependant comme je suis novice en prog je rencontre quelques difficultés voila mon script modifié:

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


tout d'abord ce que je dois récupérer avec le post c bien le nom de <select name=...> non ?

et puis j'ai un autre petit problème c lorsque je met header('Location: $url ') il ne reconnait pas la variable de quoi faut-il que j'entoure $url pour qu'il le prenne bien comme variable ?

Merci d'avance
0
Utilisateur anonyme
12 mars 2008 à 15:51
tout d'abord ce que je dois récupérer avec le post c bien le nom de <select name=...> non ?

Tout a fait : En supposant que tu ais
<select name="listeMateriel">
<option....
</select>

tu récupères alors $_POST['listeMateriel'];

Je pense par contre que tu ne récupères pas ton URL correctement. Tu devrais un mysql_fetch_array pour récupérer le premier enregistrement comme tu faisais dans ton premier script pour récupérer tous tes matériels.

$idMAT = $_POST['idMAT'];
$rq="SELECT lien FROM materiel";
$rq.="WHERE materiel.idMAT='".$idMAT."'";
$resultat = mysql_query($rq)
or die ("Exécution de la requête impossible");
$liste = mysql_fetch_array($resultat);
extract($liste);
header('Location: $lien ');
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
12 mars 2008 à 16:08
et sinon je ne comprends pas trop par contre parce que tu récupères dans la variable $liste avec mysql_fetch_array et tu redirige sur $lien ?
0
Utilisateur anonyme
12 mars 2008 à 16:09
J'ai fait l'extract() juste avant. J'ai juste repris ton code que tu avais fait pour la liste déroulante ;-)
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
12 mars 2008 à 16:18
d'accord mais ça ne résolue pas le problème de ma variable qui n'est pas reconnue dans header('Location: $lien ');

et puis j'ai fait quelques modifications de mon script dans mon ancienne page c'est peut être pour ça que ça ne marche pas désolé je débute :

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

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

Posez votre question
Utilisateur anonyme
12 mars 2008 à 16:59
$idMAT = $_POST['idMAT'];
$rq="SELECT lien FROM materiel";
$rq.="WHERE materiel.idMAT='".$idMAT."'"; 
$resultat = mysql_query($rq) or die ('Exécution de la requête impossible');
$list_enr=mysql_fetch_array($resultat)
$lien = $list_enr['lien'];
header("Location: $lien");


D'après le post ici : http://www.commentcamarche.net/forum/affich 3061396 php variable dans header ca devrait fonctionner.
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
12 mars 2008 à 17:28
non ça ne marche pas cette ligne ne va pas.

ça ne doit pas marche car j'ai changer mon autre page :

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


on m'a dit qu'avec ce code je n'aurais plus besoin de sql sur la page acces mais je suis septique qu'en penses-tu ?
0
Utilisateur anonyme
12 mars 2008 à 17:38
Je n'avais pas bien regardé désolé :
if(isset($_POST['lien'])){
   header("Location: $_POST['lien']");
}


Tu n'as pas besoin de faire une deuxième requête puisque tu récupères déjà le lien avec la première. Ça devrait mieux fonctionner maintenant ;-)
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
12 mars 2008 à 17:43
exact ça fonctionne la personne avait bien raison ça marche sans SQL
en tout cas merci pour tout
0