2012-10-16 4 views
0

J'ai une petite tâche où j'ai une table mysql "boutiques" .Il contient une colonne "catégories". Chaque champ de catégories contient des valeurs différentes comme "22,44,33,55,24,33,22" Maintenant, en prenant chaque valeur de ce champ, j'ai besoin d'obtenir la valeur d'une colonne "parent" dans une autre table. (lien avec les identifiants) Je sélectionne toute la chaîne, mais je veux sélectionner chaque numéro. S'il vous plait, j'ai besoin de votre aide avec ceci.exploser et sélectionner chaque élément du tableau

$db_selected = mysql_select_db("",$con); 
$sql = "SELECT categories from shops"; 
$array = mysql_query($sql,$con); 
while($row=mysql_fetch_array($array)){ 
foreach($row as $value){ 
    $result= explode(" ", $value); 
    foreach($result as $newvalue){ 
    $query="SELECT parent FROM categories where categories.id=$newvalue<br/>"; 
    echo $query; 
    } 
    } 
    } 
mysql_close($con); 
?> 
+3

Et c'est pourquoi vous normaliser votre base de données avec une table 'shops_categories' distincte pour enregistrer cette relation au lieu de bourrer des nombres séparés par des virgules dans le même champ. – deceze

+0

je suis désolé, je ne peux pas normaliser ma base de données, mais besoin d'une solution pour cela ... – user1694724

+0

vérifier la fonction MySQL ['find_in_set'] (http://dev.mysql.com/doc/refman/5.0/fr/string-functions. html # function_find-in-set) – air4x

Répondre

1

Vous explosez en fonction d'un espace mais votre valeur doit être éclatée sur la base de ,. Essayez donc cela

$result= explode(",", $value); 
foreach($result as $newvalue){ 

    $query="SELECT parent FROM categories where categories.id='$newvalue'"; 
                  //^Quotes the Value 
                  // Remove the <br /> 

    echo $query."<br />"; //Instead add it here and avoid the bug if you decide the run the query 

    // This example is showing mysql_* library but it is deprecated 

    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 
    $parent = $row['parent']; //Now you can something like this 


} 
$result= explode(",", $value); 
foreach($result as $newvalue){ 

    $query="SELECT parent FROM categories where categories.id='$newvalue'"; 
                  //^Quotes the Value 
                  // Remove the <br /> 

    echo $query."<br />"; //Instead add it here and avoid the bug if you decide the run the query 

    // This example is showing mysql_* library but it is deprecated 

    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 
    $parent = $row['parent']; //Now you can something like this 


} 
+0

merci, comment puis-je imprimer la valeur de parent? – user1694724

+0

@ user1694724, Ajout d'un exemple – Starx

+0

mysql_fetch_assoc() s'attend à ce que le paramètre 1 soit ressource, booléen donné ... a eu une erreur – user1694724

0

Si vos catégories colonne contient « 22,44,33,55,24,33,22 » alors sûrement votre exploser devrait être

$result= explode(",", $value); 

par exemple sur la virgule exploser dans la chaîne pour donner vous 22, 44, 33 ...

+0

merci, comment puis-je imprimer la valeur de parent? – user1694724

+0

Si vous avez mis à jour votre code avec le changement que nous vous avons tous suggéré, vous devriez le voir imprimer vos requêtes comme vous le demandiez. – BugFinder

0

Je pense que le problème est ici $result= explode(" ", $value); Il devrait être $result= explode(",", $value);

+0

merci, comment puis-je imprimer la valeur de parent? – user1694724

+0

faites une autre requête en utilisant les valeurs extraites de $ result. – Amirshk

0
$result= explode(",", $value); 

Étant donné que le format de la chaîne est séparé par une virgule, vous devez la remplacer par une virgule.

+0

merci, comment puis-je imprimer la valeur de parent? – user1694724

0

Les valeurs sont-elles séparées par des virgules?

Même si votre problème concerne la conception d'une base de données, explode(',', $value) devrait vous fournir les ID.

+0

merci, comment puis-je imprimer la valeur de parent? – user1694724

+0

Eh bien, vous avez déjà les identifiants de catégorie auxquels cette catégorie est associée, avec cet id vous pouvez interroger la même table, mais, comme je l'ai dit, un meilleur design de table doit être une meilleure approche. –

Questions connexes