PHP Fonction Split()

Résolu
dubuducu Messages postés 395 Statut Membre -  
JB_A Messages postés 307 Statut Membre -
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

7 réponses

  1. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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
  2. dubuducu Messages postés 395 Statut Membre 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
  3. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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
  4. dubuducu Messages postés 395 Statut Membre 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
    1. JB_A Messages postés 307 Statut Membre 5
       
      Salut,

      Pourquoi tu ne fais pas

      $list='$numeros';

      et dans ta clause where tu ajoutes

      Where nomcolonne IN ('$list')

      @ +
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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
  7. dubuducu Messages postés 395 Statut Membre 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
    1. JB_A Messages postés 307 Statut Membre 5
       
      Cela va te faire WHERE ID IN (Numéro1,Numéro2,Numéro3...)

      Ce sont les virgules qui vont faire séparateur.

      @+
      0
  8. dubuducu Messages postés 395 Statut Membre 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
    1. JB_A Messages postés 307 Statut Membre 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