PHP Fonction Split()

Résolu
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -  
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

7 réponses

Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   2 331
 
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
6
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   4
 
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
1
Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   2 331
 
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";
1
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   4
 
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 ?
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Salut,

Pourquoi tu ne fais pas

$list='$numeros';

et dans ta clause where tu ajoutes

Where nomcolonne IN ('$list')

@ +
0

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

Posez votre question
Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   2 331
 
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 https://www.commentcamarche.net/contents/493-formulaires-html-cours-et-exemples 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 ...
0
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   4
 
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 .. ?
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Cela va te faire WHERE ID IN (Numéro1,Numéro2,Numéro3...)

Ce sont les virgules qui vont faire séparateur.

@+
0
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   4
 
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
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
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 : https://www.w3schools.com/sql/sql_in.asp

@ +
0