A voir également:
- Boucle PHP
- Easy php - Télécharger - Divers Web & Internet
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mon ordinateur s'allume et s'eteint en boucle ✓ - Forum Matériel & Système
- Php natif - Forum PHP
6 réponses
rescue
Messages postés
1039
Date d'inscription
vendredi 16 novembre 2007
Statut
Contributeur
Dernière intervention
27 mars 2019
136
4 janv. 2010 à 14:59
4 janv. 2010 à 14:59
Bonjour,
Faire la boucle c'est pas forcément le problème.
Car des usines à gaz en php on y arrive facilement. Ce qu'il faut c'est réfléchir pour ne pas en faire.
Ce sont tes tables de ta base de données que je voudrais bien voir comment tu les as fait.
Donne seulement le nom des tables et les champs et je te dirais si c'est possible ou pas de faire ta boucle.
@+
Faire la boucle c'est pas forcément le problème.
Car des usines à gaz en php on y arrive facilement. Ce qu'il faut c'est réfléchir pour ne pas en faire.
Ce sont tes tables de ta base de données que je voudrais bien voir comment tu les as fait.
Donne seulement le nom des tables et les champs et je te dirais si c'est possible ou pas de faire ta boucle.
@+
Bonjour et merci pour votre réponse
Dans ma base MySQL, j'ai une table "switch" qui contient les champs "nom,id et id_parent".
J'ai beau tourner le pb dans tous les sens, je pas moyen d'y arriver.
Merci
Dans ma base MySQL, j'ai une table "switch" qui contient les champs "nom,id et id_parent".
J'ai beau tourner le pb dans tous les sens, je pas moyen d'y arriver.
Merci
rescue
Messages postés
1039
Date d'inscription
vendredi 16 novembre 2007
Statut
Contributeur
Dernière intervention
27 mars 2019
136
4 janv. 2010 à 15:41
4 janv. 2010 à 15:41
Re,
Les champs de la table me semble tout à fait correcte.
Voici une idée de boucle à vérifier et à modifier selon votre configuration.
<?php
function rechercher_switch($id)
{
//recupere le nombre de ligne dans la table
$conn = db_connect();
$query = "select * from switch where id = '$id'";
$resultat = @mysql_query($query, $conn);
$nbr_ligne = mysql_num_rows($resultat);
$cpt = 0;
while ($cpt < $nbr_ligne) {
$sql = "select * from switch where id = '$id'";
$result = mysql_query($sql, $conn);
while ($sql = mysql_fetch_array($result))
{
$query_sr = "select * from switch where id_parent = '$sql[id]'";
$result1 = mysql_query($query_sr, $conn);
return $sql[nom];
}
$cpt = cpt + 1;
}
}
?>
Ensuite tu appelles ta fonction avec :
<?php
$nom_switch = rechercher_switch(1);
echo $nom_switch;
?>
il va te lister les noms de tous les switchs qui appartient à l'id = 1.
Après il faut que toi tu récupères les variables $id avec un GET ou un POST.
pour que le script ci-dessus devient du genre à toi d'adapter :
<?php
$id = $_GET[id];
$nom_switch = rechercher_switch($id);
echo $nom_switch;
?>
ATTENTION il faut que tous les champs des id_parents père ont comme valeur 0.
id id_parent nom
1 0 switch1
2 1 switch1_enfant1
3 1 switch1_enfant2
4 0 switch2
5 4 switch2_enfant1
etc....
Les champs de la table me semble tout à fait correcte.
Voici une idée de boucle à vérifier et à modifier selon votre configuration.
<?php
function rechercher_switch($id)
{
//recupere le nombre de ligne dans la table
$conn = db_connect();
$query = "select * from switch where id = '$id'";
$resultat = @mysql_query($query, $conn);
$nbr_ligne = mysql_num_rows($resultat);
$cpt = 0;
while ($cpt < $nbr_ligne) {
$sql = "select * from switch where id = '$id'";
$result = mysql_query($sql, $conn);
while ($sql = mysql_fetch_array($result))
{
$query_sr = "select * from switch where id_parent = '$sql[id]'";
$result1 = mysql_query($query_sr, $conn);
return $sql[nom];
}
$cpt = cpt + 1;
}
}
?>
Ensuite tu appelles ta fonction avec :
<?php
$nom_switch = rechercher_switch(1);
echo $nom_switch;
?>
il va te lister les noms de tous les switchs qui appartient à l'id = 1.
Après il faut que toi tu récupères les variables $id avec un GET ou un POST.
pour que le script ci-dessus devient du genre à toi d'adapter :
<?php
$id = $_GET[id];
$nom_switch = rechercher_switch($id);
echo $nom_switch;
?>
ATTENTION il faut que tous les champs des id_parents père ont comme valeur 0.
id id_parent nom
1 0 switch1
2 1 switch1_enfant1
3 1 switch1_enfant2
4 0 switch2
5 4 switch2_enfant1
etc....
Si j'ai bien compris la boucle, elle ne me permet pas d'avoir le résultat que je souhaite.
Voila un exemple de se que peut contenir ma table SQL
ID | NOM | ID_PARENT
======================
12 | HP23 | 45
15 | HP24 | 12
17 | HP25 | 15
19 | HP26 | 17
....
Ainsi on peut voir que
HP24 est parent de HP 25 et que HP25 est parent d HP26.
Mais aussi que HP23 est parent de HP24 et que HP23 n'a pas de parents.
Voila un exemple de se que peut contenir ma table SQL
ID | NOM | ID_PARENT
======================
12 | HP23 | 45
15 | HP24 | 12
17 | HP25 | 15
19 | HP26 | 17
....
Ainsi on peut voir que
HP24 est parent de HP 25 et que HP25 est parent d HP26.
Mais aussi que HP23 est parent de HP24 et que HP23 n'a pas de parents.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 janv. 2010 à 18:19
4 janv. 2010 à 18:19
et en cherchant du coté des requettes sql ?
SELECT NOM FROM switch WHERE ID_PARENT=ID
SELECT NOM FROM switch WHERE ID_PARENT=ID
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
rescue
Messages postés
1039
Date d'inscription
vendredi 16 novembre 2007
Statut
Contributeur
Dernière intervention
27 mars 2019
136
4 janv. 2010 à 20:51
4 janv. 2010 à 20:51
Bonsoir,
Effectivement après vérification c'est pas vraiment ce qu'il fallait faire.
Je vais chercher du coté sql comme préconise Alain_42.
Le challenge m'intéresse je me penche dessus Adrienb4.
Mais si entre temps tu as la solution merci de poster quand même.
@+
Effectivement après vérification c'est pas vraiment ce qu'il fallait faire.
Je vais chercher du coté sql comme préconise Alain_42.
Le challenge m'intéresse je me penche dessus Adrienb4.
Mais si entre temps tu as la solution merci de poster quand même.
@+
Bonsoir
J'ai pas la solution, mais une idée. Je vais créer un tableau php qui pour chaque switch va associer les switch "fils". Après avec une commande (je ne sais plus la quelle), je vais parcourir ce tableau pour "reconstituer" toute la parenté. Je bosse demain sur sa et tien au courant
Bonne soirée
J'ai pas la solution, mais une idée. Je vais créer un tableau php qui pour chaque switch va associer les switch "fils". Après avec une commande (je ne sais plus la quelle), je vais parcourir ce tableau pour "reconstituer" toute la parenté. Je bosse demain sur sa et tien au courant
Bonne soirée
rescue
Messages postés
1039
Date d'inscription
vendredi 16 novembre 2007
Statut
Contributeur
Dernière intervention
27 mars 2019
136
4 janv. 2010 à 22:08
4 janv. 2010 à 22:08
Bonsoir,
Envoi ton idée quand même.
Sinon j'ai trouvé ça :
Je n'étais pas loin avec mon précédent script mais celui là à l'air pas mal plus légers et je l'ai testé en même temps avec tes données.
<?php
$conn = db_connect(); // connexion a la base de donnee
$sql = "SELECT* FROM switch";
$resultat = @mysql_query($sql, $conn);
while ($query = mysql_fetch_array($resultat)) {
$sql_r = "SELECT* FROM switch where id_parent = $query[id]";
$result = @mysql_query($sql_r, $conn);
while($query_r = mysql_fetch_array($result)) {
echo $query_r[nom]." Je suis l'enfant de : ".$query[nom]."<br>";
}
}
?>
J'espère que c'est la bonne solution.
Bonne soirée
Envoi ton idée quand même.
Sinon j'ai trouvé ça :
Je n'étais pas loin avec mon précédent script mais celui là à l'air pas mal plus légers et je l'ai testé en même temps avec tes données.
<?php
$conn = db_connect(); // connexion a la base de donnee
$sql = "SELECT* FROM switch";
$resultat = @mysql_query($sql, $conn);
while ($query = mysql_fetch_array($resultat)) {
$sql_r = "SELECT* FROM switch where id_parent = $query[id]";
$result = @mysql_query($sql_r, $conn);
while($query_r = mysql_fetch_array($result)) {
echo $query_r[nom]." Je suis l'enfant de : ".$query[nom]."<br>";
}
}
?>
J'espère que c'est la bonne solution.
Bonne soirée
Bonjour
Comme promis, voila la solution à mon problème. Depuis lundi je cherche à faire trop compliqué alors que sa marche en qqe lignes.
$id='156'; //Id du switch
$id_origine=$id;
echo $id_origine;
echo '<br>';
while (true) {
$requete1 = 'SELECT id_parent FROM switches WHERE id=\''.$id.'\';';
$resultat1 = mysql_query($requete1);
while ($query1 = mysql_fetch_row($resultat1)) {
if ($query1[0]=='0') {
break 2; // Quitte les deux boucles while
}
else {
echo $query1[0];
$id=$query1[0];
echo '<br>';
}
}
}
Ce qui donne comme résultat d'afficher les uns en dessous des autres les switchs en fonction de leur parenté.
Je remercie ttes les personne qui se sont penchées sur le problème :)
Comme promis, voila la solution à mon problème. Depuis lundi je cherche à faire trop compliqué alors que sa marche en qqe lignes.
$id='156'; //Id du switch
$id_origine=$id;
echo $id_origine;
echo '<br>';
while (true) {
$requete1 = 'SELECT id_parent FROM switches WHERE id=\''.$id.'\';';
$resultat1 = mysql_query($requete1);
while ($query1 = mysql_fetch_row($resultat1)) {
if ($query1[0]=='0') {
break 2; // Quitte les deux boucles while
}
else {
echo $query1[0];
$id=$query1[0];
echo '<br>';
}
}
}
Ce qui donne comme résultat d'afficher les uns en dessous des autres les switchs en fonction de leur parenté.
Je remercie ttes les personne qui se sont penchées sur le problème :)