Rechercher : dans
Par :

Changer un bouton submit en lien en php

Dernière réponse le 17 sep 2008 à 16:32:57 mac_evel, le 17 sep 2008 à 09:41:04 
 Signaler ce message aux modérateurs

Bonjour à tous,
J'ai une question qui me torture l'esprit depuis hier:
Je suis en train de construire un forum en php sur lequel il y aurait plusieurs sujets. Ces mêmes sujets sont associés à un numéro et à plusieurs commentaires, tous enregistrés dans une base mysql.

Ce que j'aimerai faire, c'est que les sujets apparaissent à l'utilisateur comme des liens et que quand ils cliquent dessus, on récupère le numéro du sujet sur une autre page (afin de consulter les commentaires associés à ce sujet).

A priori, cela semble très simple à réaliser avec un formulaire php. Seulement je que je veux c'est que le sujet n'apparaisse pas en bouton submit mais en lien.

J'ai envisagé l'alternative Javascript, mais ça ne peut pas marcher car le nom du lien (donc du sujet) est extrait de la base et enregistré dans une variable php.

Voici mon code:

<?php	
	$id=connexion();	// fonction de connexion à la base mysql
	$requete= mysql_query("SELECT * FROM sujets") or die(mysql_error());
	while($donnees= mysql_fetch_array($requete))
	{
		$num = $donnees['id'];		// on récupère les numéros et
		$titre = $donnees['titre'];	// leurs sujets associés
						
		echo'<form method="POST" name ="formulaire" action="test.php">
			<input type="hidden" name="id_sujet" value="'.$num.'" />
		</form>
		<strong><a href="test.php">'.$titre.'</a></strong><br/>';
		
	// c'est grâce au lien ci dessus que je souhaite récupérer sur
	// la page test.php le numéro du sujet sur lequel l'utilisateur a cliqué
	}
	mysql_close($id);
?>


J'espère que j'aurai été assez clair. Merci
Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « changer un bouton submit en lien en php » dans :
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
PHP - Connexion à un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...

1

Silk, le 17 sep 2008 à 09:53:30

Salut

<strong><a href="#" onclick="javascript:document.formulaire.submit();">'.$titre.'</a></strong><br/>';

"document" est un terme spécifique, pas un nom. Il désigne justement la page sur laquelle tu es. Il ne faut pas changer ce terme.

"formulaire" est le nom de ton formulaire. Si ton formulaire s'appelle "toto" (name="toto"), tu remplaces "formulaire" par "toto" (document.toto.submit()).

Voilà.

Explication:
Le principe est de remplacer le bouton submit par un lien qui reproduit exactement un clic sur ce bouton. La commande javascript submit() a cette fonction.
Si vous refusez de sauter dans le vide, comment voulez-vous  apprendre à voler?
Visez la lune, au pire, vous atterrirez parmi les étoiles.

Vous êtes sur un forum, pas sur votre portable. Ici, on parle  un langage que les humains peuvent comprendre. Pour votre sanité et la mienne, tapez vos p****n de mots en entier!!

Répondre à Silk

2

mac_evel, le 17 sep 2008 à 10:09:07

Silk tu es vraiment super rapide et tu as l'air calé en php et js, mais je te jure que cette ligne de code ne fonctionne pas. A mon avis c'est qu'on ne peut pas bien mélanger les côtés serveur et client non? Ou alors c'est moi qui ne l'ai pas mise au bon endroit.

Voici comment je l'ai intégrée

<?php	
	$id=connexion();// fonction de connexion à la base
	$requete= mysql_query("SELECT * FROM sujets") or die(mysql_error());
	while($donnees= mysql_fetch_array($requete))
	{
		$num = $donnees['id'];// on récupère les numéros et
		$titre = $donnees['titre'];// leurs sujets associés
						
		echo'<form method="POST" name ="formulaire" action="test.php">
			<input type="hidden" name="id_sujet" value="'.$num.'" />
		</form>
		<strong><a href="#" onclick="javascript:document.formulaire.submit();">'.$titre.'</a></strong><br/>';
		// c'est grâce au lien ci dessus que je souhaite récupérer sur
		// une autre page le numéro du sujet sur lequel l'utilisateur a cliqué
		}
	mysql_close($id);
?>

Répondre à mac_evel

3

Silk, le 17 sep 2008 à 11:26:33
  • +1

A mon avis, le problème vient du fait que si tu as 15 sujets, il y a 15 formulaires qui portent le même nom et que tu coup, il ne sait pas lequel envoyer. Il faudrait peut-être passer un numero dans le nom du formulaire via une variable. Si vous refusez de sauter dans le vide, comment voulez-vous ­ apprendre à voler?
Visez la lune, au pire, vous atterrirez parmi les étoiles.

Vous êtes sur un forum, pas sur votre portable. Ici, on parl­e  un langage que les humains peuvent comprendre. Pour votre­ sanité et la mienne, tapez vos p****n de mots en entier!!

Répondre à Silk

4

mac_evel, le 17 sep 2008 à 12:49:09

Ok je vais faire ça et je reviens. Merci

Répondre à mac_evel

5

mac_evel, le 17 sep 2008 à 13:06:31

Yeah! ça marche!!!! Merci Silk tu as ma reconnaissance éternelle.

Voici le code qui marche:


<?php	
	$id=connexion();// fonction de connexion à la base
	$requete= mysql_query("SELECT * FROM sujets") or die(mysql_error());
	while($donnees= mysql_fetch_array($requete))
	{
		$num = $donnees['id'];// on récupère les numéros et
		$titre = $donnees['titre'];// leurs sujets associés
						
		echo'<form method="POST" name ="formulaire_'.$num.'" action="test.php">
			<input type="hidden" name="id_sujet" value="'.$num.'" />
		</form>
		<strong><a href="#" onclick="javascript:document.formulaire_'.$num.'.submit();">'.$titre.'</a></strong><br/>';
		}
	mysql_close($id);
?>

Répondre à mac_evel

6

 Silk, le 17 sep 2008 à 16:32:57

Mais de rien ^_^ Si vous refusez de sauter dans le vide, comment voulez-vous ­ apprendre à voler?
Visez la lune, au pire, vous atterrirez parmi les étoiles.

Vous êtes sur un forum, pas sur votre portable. Ici, on parl­e  un langage que les humains peuvent comprendre. Pour votre­ sanité et la mienne, tapez vos p****n de mots en entier!!

Répondre à Silk
Collection CommentÇaMarche.net