2013-03-07 5 views
0

J'ai une table avec des champs comme id, nom et des valeurs comme (1, "sony, nokia, htc"), (2, "sony") (3, "Samsung"). les dossiers, mais ma logique va plus que mes expection.I veulent exlode nom si elle contient « » chercher résultat records.My unique, ressembleraOptimiser la requête pour mysql et php

Name array will be { 0 =>"sony",1=>"HTC",2=>"Nokia"}.My dummy logic is here (This is incomplete not working properly.) 
<?php 
$row = array("sony,htc,nokia","htc","sony"); 
    foreach ($row as $key => $valuek) { 
       if(strpos($valuek['value'], ",") !== false) 
       { 
        $str[] = explode(",",$valuek['value']) 
        ?> 
        <option value="<?php echo $valuek['value']?>"><?php echo $valuek['value']?></option> 
        <?php 
       } 

      ?> 
     <option value="<?php echo $valuek['value']?>"><?php echo $valuek['value']?></option> 
     <?php } $i++;}?> 

Répondre

0

n `Vous devez faire exploser que

au début où vous obtenez toutes vos données et stockées dans le tableau, vous pouvez simplement utiliser array_unique()

$row = array("sony,htc,nokia","htc","sony"); // all fetch data from db. 


$row = implode(',',$row); // first convert the array -> strings 
$row = explode(',',$row); // then return back to array and you can now use array_unique 
$row = array_unique($row); // this will filter all data with uniqueness and drop some data that have same value 

alors vous pouvez l'utiliser pour boucler les données.

for($i=0;$i<count($row)){ 
    echo '<option value="'.$row[$i].'">'.$row[$i].'</option>'; 
} 

cela va raccourcir votre code et facile à gérer ..

+0

Merci mais pour ma connaissance array_unique ne fonctionne pas dans ce condition.I pense que je dois exploser elements.Check votre code tableau. –

+0

pourquoi dites-vous que ça ne fonctionne pas? –

+0

Il affiche les résultats dans ce formate: Array ([0] => sony, htc, nokia [1] => htc [2] => sony) –

Questions connexes