Rechercher : dans
Par :

PHP Fonction Split()

Dernière réponse le 30 jun 2008 à 18:47:20 dubuducu, le 30 jun 2008 à 17:22:01 
 Signaler ce message aux modérateurs

Bonjour,
je souhaiterai savoir s'il est possible de faire ceci :

je voudrais, pour des raisons diverses, recuperer les infos de formulaires de ma base sql a l'aide d'une interface ou l'utilisateur entre par exemple l'id :

EX: Devis n° : 29,25,16,34

Submit


Ces données sont separées par des virgules et je souhaiterai savoir quelle genre de requete je devrai faire .
Merci !

Dois-je utiliser la fonction explode ou split ?
De plus je ne sais pas comment les utiliser ... et oui je suis nul :)


Merci de votre aide qui me sera tres precieuse

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « PHP Fonction Split() » dans :
[PHP] Fonction mail() Voir La fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
Javascript - split() Voir La fonction split() permet de scinder une chaîne de caractère et de retourner les résultats dans un tableau, grâce à une chaîne définie comme séparateur. Dans l'exemple ci-dessous, la fonction split() permet de découper la date selon le caractère...
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en php...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...

1

Yoan, le 30 jun 2008 à 17:26:11

Avec explode oui. Tu récupères ensuite un tableau.
un exemple :

<?php
$numero="12,23,34,45";
$array=explode(",",$numero);
echo $array[0]; //affiche 12
echo $array[1]; //affiche 23
echo $array[2]; //affiche 34
echo $array[3]; //affiche 45
?>


Plus d'infos sur explode : http://www.manuelphp.com/php/function.explode.php L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Répondre à Yoan

2

dubuducu, le 30 jun 2008 à 17:28:28

Merci beaucoup
je ne comprends pas tout : a quoi correspond cette ligne ?

$numero="12,23,34,45";

je souhaiterai que ce soit des nombres aléatoires que l'utilisateur a envi de rentrer ... le 48 ou le 22 si cela lui fait plaisir

Merci

Répondre à dubuducu

3

Yoan, le 30 jun 2008 à 17:33:25

Bah c'est ton numéro de devis. Je suppose qu'il est attribué automatiquement par le reste du script php.
Si tu veux que l'on reprenne exactement ton exemple ça donne : $numero="29,25,16,34"; L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Répondre à Yoan

4

dubuducu, le 30 jun 2008 à 17:39:34

Je ne pense pas avoir eté clair ou alors c'est moi qui suis débile ...
mes devis rentrent d'eux meme dans la base et vont du devis n°1 a 800 par exemple aujourdui
je souhaiterai afficher le 18,24,32 pour les consulter.et demain le 34 et 56!
aparament ici :

$numero="12,23,34,45";
est fixe !!

je te passe un bout de mon code :
dans admin.phpje souhaiterai avoir la zone de texte qui me permet de rentrer les devis
et voici liste.php qui me les affiche.

Merci
<?php
session_start();
include('bdd.php');
	
	$b = $_POST['thematique_projet'];	
	$_SESSION['b'] = $b;
	$k = $_SESSION['k'];
	
		 
if ( ($a == 'null'))
{
	if ($b == 'null')
	{
	 $sql = "SELECT * FROM devis_table  WHERE sous_categorie = '" . $k . "' ORDER BY '" . $a ."' "; 
	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
	
	}
	else
	$sql = "SELECT * FROM devis_table  WHERE thematique_projet = '" . $b . "' ORDER BY '" . $a ."' "; 
	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
}
else
{
$sql = "SELECT * FROM devis_table  WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "' ORDER BY '" . $a ."' "; 
$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
}
	
	
if ( $thematique_projet == 'null')

{		
echo"<b><center>Votre Recherche porte sur <br> $k / Toutes les Thematiques <br><br><br></center></b>\n";
}
else
{		
echo"<b><center>Votre Recherche porte sur <br> $k / $thematique_projet <br><br><br></center></b>\n";
}


if($result) { 
// debut du tableau 
echo '<form action="confirmation.php" method="post">';
 echo '<font size="2" face="Arial" >';
 
echo '<table bgcolor="#FFFFFF" border="0" align="center">'."\n"; 
// première ligne on affiche les titres dans 4 colonnes 
echo '<tr>'; 
echo '<td width="80" bgcolor="#3366ff"><b><u><font color="#FFFFFF">Devis n° :</font></u></b></td>'; 
echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Département </font></u></b></td>­'; 
echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Commentaires</font></u></b></td>'; 
echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Clics Restants</font></u></b></td>'; 
echo '<td bgcolor="#3366ff"><b><u></u></b></td>'; 
echo '</tr>'."\n"; 
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne. 

$i=0; 
$timeout = 604800;
$heure = time();

while($row = mysql_fetch_array($result)) 
{ 
	if ( ( $heure < ($row['time'] + $timeout )) || ( $row['time'] == "0" ))
		
		
		if ( $row['clic'] != "0" )
		
			
			{

				{
				echo '<tr>'; 
				echo '<td width="80" bgcolor="#e8e2e2">'.$row[id].'</td>'; 
				echo '<td bgcolor="#e8e2e2">'.$row[departement].'</td>'; 
				echo '<td bgcolor="#e8e2e2">'.$row[commentaires].'</td>'; 
				echo '<td bgcolor="#e8e2e2">'.$row[clic].'</td>';			
				echo '<td><input type="checkbox" name="option'.$i.'" value="'.$row[id].'">acheter</td>';
				echo '</tr>'; 
				$i = $i+1; 
								
				echo '<tr>';
				echo '<td></td>';
				echo '<td bgcolor="#e8e2e2"><h5><i>Ajouté le :<br> </h5></i></td>';
				echo '<td bgcolor="#e8e2e2"><h5><i>'.$row[Date].'</h5></i></td>';
	echo '<td bgcolor="#e8e2e2"><h5><i>'.$row[objet_message2].'</h5></i></td>';
				echo '<td></td>';
				echo '</tr>';	
				
				echo '<input type="hidden" name="variable" value="'.$i.'">'; 
				
			
	
				}	
			}
			
		
} 

echo '</table>'."\n"; 

echo "<input type='submit' value='Commander Devis' /></form>"; 

 echo '</font>';
// fin du tableau. 
} 
else 
{
echo 'Pas d\'enregistrements dans cette table...'; 
}

?>



Pour le moment mes requetes font un affchage en fonction de deux parametres.je les changerai par la suite pour mettre en fonction de l'id saisi par l'utilisateur voyez vous ?

Répondre à dubuducu

6

JB_A, le 30 jun 2008 à 17:59:48

Salut,

Pourquoi tu ne fais pas

$list='$numeros';

et dans ta clause where tu ajoutes

Where nomcolonne IN ('$list')

@ +

Répondre à JB_A

5

Yoan, le 30 jun 2008 à 17:59:41

C'est difficile de voir comment marche le bin's avec un unique bout de script. Mais je comprends pas vraiment :
L'utilisateur rentre dans un formulaire les numéros des devis à afficher par exemple 12,45,78,65 c'est ça ? (voir http://www.commentcamarche.net/html/htmlform.php3 pour ce faire)
Et ensuite, ce qu'on souhaite c'est les afficher ?
Dans ce cas, récupère les numéros de chaque devis à afficher avec une variable par numéro (comme ci-dessus, mais avec une boucle for() ou while() pour que ça marche quel que soit le nombre de devis à afficher), et ensuite connecte-toi à la base pour demander les devis en question. Pour cela il faut que tu comprennes exactement ce qu'effectue liste.php sinon ce n'est même pas pensable. Il faut savoir à quoi correspondent $a, $b, $k ... L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Répondre à Yoan

7

dubuducu, le 30 jun 2008 à 18:05:55

JB_A, tu me dis de recuperer les numeros mais ceux ci sont séparés par des virgules ... si je met where ID = ($list) cela va me poser une probleme si je veux recuperer 4 devis avec les id separés par les virgules .. ?

Répondre à dubuducu

8

JB_A, le 30 jun 2008 à 18:15:56

Cela va te faire WHERE ID IN (Numéro1,Numéro2,Numéro3...)

Ce sont les virgules qui vont faire séparateur.

@+

Répondre à JB_A

9

dubuducu, le 30 jun 2008 à 18:32:09

Alors voici :
dans index2.php:

<?
session_start();
include('bdd.php');

echo '<form action="liste2.php" method="post">';

echo '<tr>'; 
echo '<td>'; 
echo '<font color="#FFFFFF" size="3" face="Century Gothic">'; 
echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Numeros</font></u></b></td>'; 
echo '<input name="saisie"  style="width:203; font-weight:700; height:22" size="25"></font>'; 
echo '</td>'; 
echo '</tr>'."\n"; 

$decoupe = explode(",",$saisie);

echo "<input type='submit' value='afficher devis' /></form>"; 

?>



dans liste2.php:
<?php
session_start();
include('bdd.php');
$tre = $_POST['saisie'];
echo "$tre";

$sql = "SELECT clic FROM devis_table  WHERE id IN ('$tre') "; 
$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
		
	if($result) { 
 echo '<table>'; 

echo '<tr>'; 
echo '<td width="80" bgcolor="#3366ff"><b><u><font color="#FFFFFF">Devis n° :</font></u></b></td>'; 
echo '</tr>'."\n"; 
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne. 

while($row = mysql_fetch_array($result)) 
{ 	
				echo '<tr>'; 
				echo '<td width="80" bgcolor="#e8e2e2">'.$row[clic].'</td>'; 
echo '</tr>'; 				
} 

} 
else 
{
echo 'Pas d\'enregistrements dans cette table...'; 
}
 echo '</table>'; 
?>


Voici, il m'affiche 12,25 si je tape 12,25 mais la requete ne fonctionne pas

Répondre à dubuducu

10

 JB_A, le 30 jun 2008 à 18:47:20

Il ne faut pas mettre de guillemet à $tre.

Chez moi, le SQL me renvoie bien 3 enregistrements :

SELECT fjs_ticket_id, fjs_categoryticket_libelle, fjs_state_libelle, fjs_ticket_date_created, fjs_inus_prenom, fjs_inus_nom, fjs_ticket_userid, fjs_ticket_comment, fjs_ticket_contournement, fjs_ticket_soluce
FROM tjs_ticket, tjs_state, tjs_category_ticket, tjs_internal_user
WHERE fjs_ticket_userid = fjs_inus_id
AND fjs_ticket_stateid = fjs_state_id
AND fjs_ticket_categorid = fjs_categoryticket_id
AND fjs_ticket_id IN ( 2, 3, 5 ) 


Pour info : http://www.w3schools.com/sql/sql_in.asp

@ +

Répondre à JB_A
Collection CommentÇaMarche.net