PHP Fonction Split()

Résolu
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. Modérateur
    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
    1. 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. Modérateur
        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. 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 ?
          1. Salut,

            Pourquoi tu ne fais pas

            $list='$numeros';

            et dans ta clause where tu ajoutes

            Where nomcolonne IN ('$list')

            @ +
        2. Modérateur
          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 ...
          1. 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 .. ?
            1. Cela va te faire WHERE ID IN (Numéro1,Numéro2,Numéro3...)

              Ce sont les virgules qui vont faire séparateur.

              @+
          2. 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
            1. 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

              @ +