Page 1 sur 1

probleme de submit ... plusieur submit sur la meme page ...

Posté : 09 févr. 2006, 15:04
par Invité
Bonjour,

Voila c'est une page de recherche et je voudrai qu'on puisse faire une recherche sur le nom ou sur la description, sur le numero d'intervention, voir meme sur le nom du pc, mais voila je sais pas comment faire pour que ca marche.

Voila mon code si vous pouvez m'aider ce serai genial merci d'avance



<table><form method="post" >
	
	<tr>
		
<td>
		    <b> N° d'intervention </b> :
		</td>
		<td>
			<input type="text" name="inter" maxlength="32"/>
		</td>
		<td>
    <input name="inter" type="submit" value="Rechercher"/>
</td>
<td></td>	
		<td>
		    <b> Nom PC </b> :
		</td>
		<td>
			<input type="text" name="nompc" maxlength="32"/>
		</td>
<td>
    <input name="nompc" type="submit" value="Rechercher"/>
</td>
<td></td>	
	</tr><tr>
		<td>
		    <b> Description Machine </b> :
		</td>
		<td>
			<input type="text" name="descr" maxlength="32"/>
		</td>
		
		
		<td>
    <input name="desc" type="submit" value="Rechercher"/>
	</td>
		<td></td>
		
		<td>
		    <b> Nom Client </b> :
		</td>
		<td>
			<input type="text" name="nom" maxlength="32"/>
		</td>
		
	<td>
    <input  type="submit" value="Rechercher"/>
	</td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
    </form>
	</table>
	
	<? if ((isset($_POST['nom']))&&(isset($_POST['submit']))) {
	recherche($_POST['nom']);
	}
	
	if ((isset($_POST['descr']))&&(isset($_POST['submit']))){
	recherche($_POST['descr']);
	}
	
	if ((isset($_POST['inter']))&&(isset($_POST['submit']))) {
	recherche($_POST['inter']);
	}

	if ((isset($_POST['nompc']))&&(isset($_POST['submit']))) {
	recherche($_POST['nompc']);
	}
	
	
	
	?>
	
encore MERCI

Posté : 09 févr. 2006, 15:17
par Ryle
Utilise un seul bouton submit qui enverra tout le formulaire, c'est le plus simple :)

Il te suffit ensuite de tester quels sont les champs rempli et d'effectuer ta requête en fonction de ceux qui ne sont pas vide
if($_POST['champ1']!='') requete($_POST['champ1']);
elseif($_POST['champ2']!='') requete($_POST['champ2']);
elseif($_POST['champ3']!='') requete($_POST['champ3']);
...
Une autre solution, si la recherche ne doit se faire que sur un seul critère, peut également être de garder un seul champ de saisie et d'ajouter un bouton radio pour permettre de choisir le type de recherche :

Code : Tout sélectionner

<br><input type="radio" name="type" value="champ1"> Recherche sur champ 1 <br><input type="radio" name="type" value="champ2"> Recherche sur champ 2 <br><input type="radio" name="type" value="champ3"> Recherche sur champ 3 <br>... <br><input type="text" name="recherche"> <br><input type="submit">
$_POST['type'] te donne alors le champ sur lequel a lieu la recherche
$_POST['recherche'] te donne la chaine recherchée

Tout dépend ensuite du fonctionnement de ta méthode de recherche :)

Posté : 09 févr. 2006, 15:21
par Invité
Tout dépend ensuite du fonctionnement de ta méthode de recherche :)
Est - ce possible ta seconde solution avec cette methode de recherche???
voici ma methode recherche :

<?function recherche($nom){
    mysql_connect("localhost", "root", ""); 
	mysql_select_db("dit"); 
	
	if($nom=='') {$requete="SELECT idclient, nom, telephone, gsm  FROM clienti ORDER BY idclient";} 
	else{
		if($nom!='')
		{ 
			$reqlogin=" nom='$nom' ";
		}
		else 
		$reqlogin='';
	
		$requete="SELECT idclient, nom, telephone, gsm FROM clienti WHERE nom LIKE '%$nom%' ORDER BY idclient";
	//WHERE $reqlogin  ORDER BY idclient
	
	}
	$sql = mysql_query($requete) or die('Erreur SQL');
 
	echo "<table width="100%" >";
	echo("<tr><td>ID</td> <td> Client </td>  <td>Tel / GSM </td>  <td>Suppression</td> </tr> ");
	while(list($idclient,$nom,  $telephone, $gsm  ) = mysql_fetch_array($sql)) {
		?>  <form method="post" name="supprimer" id="supprimer" action="supprimer.php?variable=<?echo $nom ?>">
		
		<?php
	//$resolution = str_replace('<br />','\r\n',$resolution); 
		echo "<td>$idclient</td>".
		 "<td><a href="machineclient.php?var=$idclient">$nom</a></td>";
		 if ($telephone!="") 
		 {
		 echo "<td>$telephone  /  ";
		 }
		 else 
		 {
		 	echo "<td>";
		 }
		  if ($gsm!="") 
		 {
		 echo "$gsm</td>";
		 }
		
		 //"<td><textarea disabled="disabled" size="45">$resolution</textarea></td>".
		
?>		
        <td><input name="submit" type="submit" class="champ" value="Supprimer">
        <td><?echo "<a href="modifier.php?var=$idclient">Modifier</a></td>"; ?>
        </form>
		<? echo "<tr><td></td></tr><tr><td></td></tr>"; 
		 }
	 echo "</table>";		 
?>
<table>
<?
echo "<tr><td>";
echo "<a href="clientbase.php">Ajouter d'un client(juste donnée de base : nom, adresse, mail, tel )</a>	";


}

Posté : 09 févr. 2006, 16:00
par Ryle
Faut un peu la modifier, mais c'est tout à fait possible.

Je remet ci-dessous ta fonction (j'en ai profité pour faire un peu de nettoyage au niveau du code php et html pour la rendre plus lisible) avec la modif au niveau de la requête pour lui passer le nom du champ et le texte de recherche

J'ai également remplacé le formulaire de suppression par une action javascript sur le bouton. Je trouve ça plus clair, mais libre à toi de ne prendre que les morceaux qui te conviennent :)
<?

function recherche($champRecherche, $texteRecherhe){
    mysql_connect("localhost", "root", "");
    mysql_select_db("dit");

    $requete = "SELECT idclient, nom, telephone, gsm";
    $requete.= " FROM clienti";
    
    if($champRecherche!='' && $texteRecherhe!='') // sinon on a pas de clause where
    	$requete.= " WHERE $champRecherche LIKE '%$texteRecherhe%'";
    
    $requete.= " ORDER BY idclient"; 

    $sql = mysql_query($requete) or die('Erreur SQL');

    echo "<table width=\"100%\" >";
    echo "<tr><td>ID</td><td>Client</td><td>Tel / GSM</td><td>Suppr.</td><td>Modif.</td></tr>";
    while(list($idclient,$nom,  $telephone, $gsm  ) = mysql_fetch_array($sql)) {

		echo "<td>$idclient</td>";
		echo "<td><a href=\"machineclient.php?var=$idclient\">$nom</a></td>";
		
		echo "<td>";
		if ($telephone!="")
			echo "$telephone  /  ";
		if ($gsm!="")
			echo "$gsm";
		echo </td>";
		?>

		<td><input name="submit" type="button" class="champ" value="Supprimer" 
			onClick="document.location='supprimer.php?variable=<?echo $nom ?>'"></td>
		<td><a href="modifier.php?var=<?php echo $idclient?>">Modifier</a></td>
		<tr><td></td></tr><tr><td></td></tr>

	<? } // fin du while ?>
	
	</table>

	<table>
		<tr><td>
			<a href="clientbase.php">Ajouter d'un client(juste donnée de base : nom, adresse, mail, tel )</a>
		</td></tr>
	</table>
	
	<?
} // fin de la fonction recherche
?>
Il te suffit donc de donner le nom du champ en base en valeur de chacun de tes boutons radios et d'appeler la fonction recherche en passant les deux paramètres : recherche($_POST['type'], $_POST['recherche']);

Voilà, j'espère avoir compris ce que tu voulais faire :)

Posté : 09 févr. 2006, 18:03
par Spols
Salut

Moi aussi j'ai plusieurs bouton envoyer sur ma page et s'il ont des noms différent on peu commencer le code par
if ($_POST['Submit'] == "Le nom du bouton1")
{action;}
elseif ($_POST['Submit2'] == "Le nom du bouton2")
avec bien sur en formulaire
<input type='submit' name='Submit' value='Le nom du bouton1'><input type='submit' name='Submit2' value='Le nom du bouton2'>
Spols

Posté : 09 févr. 2006, 18:28
par Ryle
C'est une solution également en effet, mais ce que j'aime pas dans le fait d'avoir plusieurs boutons submit qui envoient le même formulaire, c'est que je peux remplir le premier champ et cliquer sur le deuxième bouton submit, ou le contraire (ouais, je sais, je suis du genre ch**** quand je suis utilisateur ;)).

Du coup ça t'oblige a rajouter quelques tests (javascript ou php) pour vérifier que le submit a envoyé les champs que tu attendais et pas ceux de l'autre bouton...

Bon après ça reste qu'une appréciation personnelle, mais je pense qu'un submit par formulaire, c'est bien suffisant :)

Posté : 09 févr. 2006, 18:50
par Spols
Exemple d'utilisation de plusieurs boutons submit judicieux

http://lori.sylves.be/autre/Sudoku.php

Spols