Changer un bouton submit en lien en php

Résolu/Fermé
mac_evel Messages postés 7 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 17 septembre 2008 - 17 sept. 2008 à 09:41
Silk Messages postés 1003 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 30 mars 2009 - 17 sept. 2008 à 16:32
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

4 réponses

Silk Messages postés 1003 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 30 mars 2009 610
17 sept. 2008 à 09:53
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.
1
mac_evel Messages postés 7 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 17 septembre 2008 4
17 sept. 2008 à 13:06
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);
?>

1
Silk Messages postés 1003 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 30 mars 2009 610
17 sept. 2008 à 16:32
Mais de rien ^_^
0
mac_evel Messages postés 7 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 17 septembre 2008 4
17 sept. 2008 à 10:09
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);
?>

0
Silk Messages postés 1003 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 30 mars 2009 610
17 sept. 2008 à 11:26
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.
0
mac_evel Messages postés 7 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 17 septembre 2008 4
17 sept. 2008 à 12:49
Ok je vais faire ça et je reviens. Merci
0