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
    6
    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
      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
        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 ?
          0
          1. Salut,

            Pourquoi tu ne fais pas

            $list='$numeros';

            et dans ta clause where tu ajoutes

            Where nomcolonne IN ('$list')

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

              Ce sont les virgules qui vont faire séparateur.

              @+
              0
          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
            0
            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

              @ +
              0