Vous n'êtes pas identifié(e).
Bonjour,
J'ai un programme php qui lit le contenu de ma base généalogique. Je veux sortir tous les individus sous forme d'arbre. Donc je lis le 1° individu (le plus (ancien), puis je cherche ses conjoints que j'affiche, puis je cherche ses enfants que j'affiche, puis pour chaque enfant, je veux chercher ses conjoints, puis leurs enfants ..............
//$row1 est le 1° individu - $row1['num_cj_1'] = numéro du conjoint = numéro de l'individu
$select11 = 'SELECT * FROM individus WHERE num_indiv LIKE "'.$row1['num_cj_1'].'"';
$result11 = mysql_query($select11,$link) or die ('Erreur : '.mysql_error() );
//***** rech des cjts ******
while ($row11 = mysql_fetch_array($result11))
{
echo '<tr><td....................
echo '</td></tr>';
//*****rech enf******
$select2 = 'SELECT * FROM individus WHERE num_pere = "'.$row1['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
while ($row2 = mysql_fetch_array($result2))
{
echo '<tr><td....................
echo '</td></tr>';
$select11 = 'SELECT * FROM individus WHERE num_indiv LIKE "'.$row2['num_cj_1'].'"';
$result11 = mysql_query($select11,$link) or die ('Erreur : '.mysql_error() );
$gen=$gen+0.1;
}
}
Là, j'affiche mon premier individu, ses conjoints, les enfants, et après plus rien ! La boucle ne se fait pas !
Pourquoi ?
Bonjour,
A partir du moment où tes ids sont numériques, remplace tes LIKE par = dans tes requêtes. Et on évite les SELECT * (la fameuse guerre des étoiles).
++
Bonjour,
Mes ids sont numériques, num_pere et num_indiv déclarés en "decimal" dans la base. J'ai remplacé les LIKE par =, et les * des requêtes par id, num_indiv, nom, prenom, num_pere.
Je fait également afficher les ids, et je me suis rendu compte que j'affiche presque toute la base de id=1 à id=344(en sautant quelques id (le 3, le 4, le 6, du 14 au 19 inclus, ..............! Pourquoi, je ne sais pas ?). Et l'affichage (1 à 344) recommence .........
Mais aucun lien avec les num_pere et num_indiv.
Par exemple, le premier enregistrement qui s'affiche (issu du 2° while, avec id=1), ne comporte pas de num_pere et ne devrait donc pas s'afficher !??
Ouuups ! J'ai été voir ton lien sur les arbres par représentation intervallaire, et cela m'a l'air ardu .......... !!!!!
Par contre, je ne comprends pas pourqoui ce code ne fonctionne pas :
$select1 = 'SELECT * FROM individus WHERE id LIKE "168"';
$result1 = mysql_query($select1,$link) or die ('Erreur : '.mysql_error() );
$row1 = mysql_fetch_array($result1);
echo '<table>';
echo '<tr><td>';
echo ''.$row1['nom'].' '.$row1['prenom'].'<br>';
echo '</td></tr>';
$select = 'SELECT * FROM individus' ;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
while ($row = mysql_fetch_array($result))
{
$select2 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row1['num_indiv'].'"';
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
while ($row2 = mysql_fetch_array($result2))
{
echo '<tr><td>';
echo ''.$row2['nom'].' '.$row2['prenom'].'<br> né : '.$row2['date_naissance'].'';
echo '</td></tr>';
}
$row1['num_indiv'] = $row2['num_indiv'];
}
?>
C'est une simple boucle ! Ou il y a des erreurs ..... ???
Bonjour,
Je n'arrive pas à executer une boucle while comme je veux.
Dans ma base, un enregistrement comporte notamment l'id, un num_indiv, un num_pere, .....
Tous les num_pere se retrouve en num_indiv.
En partant d'un enregistrement A, je veux afficher tous ceux qui y sont liés, soit ses fils.
Je doit donc rechercher tous les enregistrements (B) qui ont un num_pere égal au num_indiv A.
Une fois trouvé, je recherche tous les enregistrements ayant B ayant un num_pere égal au num_indiv de B
.............etc
Et là je bloque ................ je n'arrive pas à boucler pour lire toute la base !!!
<?php
$select1 = 'SELECT * FROM individus WHERE id LIKE "168"';
$result1 = mysql_query($select1,$link) or die ('Erreur : '.mysql_error() );
$row1 = mysql_fetch_array($result1);
echo ''.$row1['nom'].' '.$row1['prenom'].'<br>';
$select2 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row1['num_indiv'].'"';
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
while ($row2 = mysql_fetch_array($result2))
{
echo ''.$row2['nom'].' '.$row2['prenom'].'<br> né : '.$row2['date_naissance'].''; }
if (!empty($row2['date_dc']))
{ echo '<br> dcd : '.$row2['date_dc'].''; }
$select3 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row2['num_indiv'].'"';
$result3 = mysql_query($select3,$link) or die ('Erreur : '.mysql_error() );
while ($row3 = mysql_fetch_array($result3))
{
if ($row3['num_pere'] = $row2['num_indiv'])
{
echo ''.$row3['nom'].' '.$row3['prenom'].'<br> né : '.$row3['date_naissance'].''; }
if (!empty($row3['date_dc']))
{ echo '<br> dcd : '.$row3['date_dc'].''; }
echo '</td></tr>';
}
}
}
?>
Je pourrais continuer les WHILE jusqu'à balayer toiute la base, mais il doit y avoir moyen de jouer avec une ou deux boucle WHILE !!!!
Merci de me donner un coup de main.
Bonjour,
Dans ma base, un enregistrement comporte le nom, la date de naissance (sous forme jj.mm.aaaa, ou aaaa, ou >aaaa, ou ~aaaa, .......).
Je veux afficher les noms commençant par "A". S'il y a plusieurs fois le même nom, je n'en affiche qu'un. Je veux également afficher le nombre de nom identique, et la date de naissance minimum en me basant sur l'année. C'est sur ce dernier critère que je pêche !!!!
Comme le fiormat des dates est différent, je pense que le mieux est de se baser sur l'année (aaaa), soit les 4 derniers caractères du champs. Mais ce que j'ai fait me sort la première année lue du premier enregistrement du nom similaire, et non la plus petite année.
Merci de m'aider à trouver mon erreur ...........
J'ai enlevé les espaces autour du &, posé une condition, et ça fonctionne .....:D
A +++:P
Désolé moogli, mais ça ne fonctionne pas .....
et il est ou le problème ?
a++
Dans mon CSS j'ai ceci :
Quand j'affiche le texte correspondant au bouton (onglet du menu) dans une div centrale, je souhaiterais que ce bouton prenne la class "bouton:active", tant que la page reste affichée.
Je suis arrivé là, mais ça ne fonctionne pas ......
$select = 'SELECT * FROM menu';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
if(isset($_GET['texte']))
{
$inc = $_GET['texte'];
$active = $_GET['nom'];
}
else
{
$inc = 'accueil.htm';
$active = 'accueil';
}
echo '<div class="menu">';
while($row = mysql_fetch_array($result))
{
echo '<a href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>';
}
echo '</div>';
echo '<div class="frame">';
include($inc);
echo '</div>';
exit;
?>
Bonjour,
Je cherche à rendre actif un onglet de menu dont le nom et le texte correspondant sont issus d'une base de donnée.
Affichage du menu :
echo '<div class="menu">';
while($row = mysql_fetch_array($result))
{
echo '<a href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>';
}
echo '</div>';
Merci
Saluton,
Quel rapport entre une donnée dans une table de base de données et $_GET ?
Actuellement, en écrivant echo '<div class="frame">'; echo $_GET['texte']; , je récupère l'enregistrement "texte" qui est lu, et je l'affiche dans la div.
Mais si l'enregistrement texte contient uniquement une adresse http, je voudrais que ce qu'il y a au bout de http s'affiche dans la div.
Si je fais echo '<div class="frame">'; inculde ($_GET['texte']); , j'affiche ce qu'il y a au bout de http, donc c'est ok pour l'adresse, mais ça fonctionne pas si l'enregistrement est uniquement un texte !
Bonjour,
J'ai un enregistrement dans ma base mysql qui contient uniquement un lien http.
Je souhaiterais afficher la page qui y fait référence dès que l'enregistreemnt est lu par le script php :
echo $_GET['texte'];
Est-ce possible ?
Merci
Ce que j'avais pensé aussi faire :
Dans la fenêtre où je saisis mon texte (textarea), je met un bouton, pour insérer une image, qui m’ouvre une fenêtre (pop-pup) en html (ou php) avec laquelle je vais récupérer mon image (<input type="file" name="monfichier" size="xx" />)
Ensuite, il faudrait qu’en fermant ce « pop-pup » je transmette le lien sélectionné à la fenêtre précédente qui serais ma première fenêtre, avec le texte et maintenant le lien.
Donc, il faudrait que je rafraichisse la première fenêtre (où j’ai saisis mon texte, textarea), et que je réaffiche le texte déjà saisi au début, en y rajoutant le lien ………
Mais comment garder le texte en mémoire jusqu’à la phase finale (de la première fenêtre, en passant par la pop-pup, et retour à la première fenêtre) ? Avec des sessions peut-être ?
Une fois le texte enregistré dans la bd, quand il sera ressorti, comment identifier l'endroit ou doit être affiché l'image ? En faisant du lien dans le texte ?
Sinon, je vais tenter d'utiliser Tiny-MCE .....
Dois-tu l'uploader ou non ?
Si non, il suffit d'une simple reconnaissance du texte à remplacer.
Ici le code est [ img]url image[/ img], grâce à ces deux balises on repère le début et la fin de l'url.
Ensuite il n'y a plus qu'à rechercher des occurence de ce type et les remplacer par <img src="url image" /> via les fonctions de remplacement des expressions régulières.
Oui, je veux aussi uploader l'image, et enregistrer le lien en bd.
Avec un javascript, je donne des formes à mon texte : <a href="#" onclick="TAinsert('<b>','</b>');OpenPreview();" style="text-decoration: none"><b>Gras</b>, et autre ..... Puis j'upload une image : <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="monfichier" size="51" />
Je voudrais y rajouter un bouton qui permettrait d'uploader une image à un endroit désigné du texte.
Donc, avoir un pop-pup qui s'ouvre en cliquant sur le bouton au moment désiré où insérer l'image. Dans le pop-pup pouvoir parcourir son pc pour y récupérer l'image ( <input type="file" name="monfichier" size="51" /> ). Là où ça coince, c'est de récupérer le lien de l'image, l'afficher dans le texte à l'endroit voulu, et l'enregistrer en bd.
Bonjour,
J'ai un formulaire où la saisie du texte se passe via un "textarea".
Le texte est ensuite enregistré dans une bd.
Ce que je recherche, c'est une méthode pour saisir un texte dans un formulaire, ajouter un image à la suite (son chemin d'accès), et continuer le texte ...... .
En fait, ajouter un lien, ou URL dans un textarea !!!! Genre ici quand tu veux insérer une image .......
Merci
Tu n'as pas tout à fait tord, Maljuna Kris !
Mais si je fais ça, ou plutôt si j'essaye, c'est pour rendre le menu gérable par pages interposées. C'est à dire, pouvoir modifier le menu et rajouter des onglets à la demande. Car ce genre de site va obligatoirement évoluer avec les années ! Et je ne serais peut-être pas toujours là pour le maintenir.
Et c'est aussi par curiosité ......
Bonjour,
J'ai un site qui affiche des bouton pour le menu.
Quand j'affiche une page, je souhaiterais que le bouton du menu correspondant prenne un autre aspect parrapport aux autres boutons.
Si je défini les boutons et les pages en php dans un tableau, ça fonctionne :
if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages)){
$inc = $pages[$_GET['page']];
$active = $_GET['page'];
}
else{
$inc = 'accueil.htm';
$active = 'accueil';
}
echo '<div class="menu"><ul>
<a class="bouton'.($active == 'accueil' ? 'active' : '').'" href="index.php?page=accueil.htm">Accueil</a><p>
<a class="bouton'.($active == 'humanitaire' ? 'active' : '').'" href="index.php?page=humanitaire">L\'action humanitaire</a><p>...........
echo '<div class="frame">';
include($inc);
echo '</div>';
Mais si les les boutons et les pages sont issuent d'une base de donnée, j'y arrive pas :
echo '<div class="menu">';
while($row = mysql_fetch_array($result))
{
echo '<a class="bouton'.($active == $row['nom'] ? 'active' : '').'" href="menu.php?lien='.$row['lien'].'">'.$row['nom'].'</a><p>';
}
echo '</div>';
echo '<div class="frame">';
include($inc);
echo '</div>';
Les liens fonctionnent, mais les boputons menu ne changent pas d'aspect lors de l'affichage de la page qui va avec !
Merci d'avance pour l'aide que vous pourrez m'apporter.
Exact, il faut répéter deux fois $row['photo'] puisqu'il y a 2 %s ou bien remplacer chaque %s par %1s
Salut Maljuna Kris ! J'ai remplacé les %s pas %1s, et c'est pariel ! pffffffffffff ..........
=> Warning: sprintf() [function.sprintf]: Too few arguments
Jc, qu'entends tyu par "j'ai vu dans le sprintf des propriétés non échappées" ??
Désolé mais j'ai piqué une crise de rire !
En fait Kris n'a pas fait de faute (tout du moins celle que tu as cité), c'est le fonctionnement correct de sprintf().
A voir la coloration je dirai que la syntaxe de Kris est tout ce qu'il y a de plus juste (d'autant plus qu'il se trompe rarement sur ce point ayant tout un tas de bonnes astuces, le cas du sprintf). Testes là sans rien modifier. ^_-
Si je met tel que =>
J'ai comme message d'erreur : Warning: sprintf() [function.sprintf]: Too few arguments pour cette ligne !
Ca marche pas !
J'avais auusi fait une erreur au départ pour le 2° src=.
J'ai corrigé, et voici ta ligne :
A la fin, tu avais mis .........></td>",$row['photo']);
j'ai corrigé en .........></td>".$row['photo']);
Mais ça fonctionne toujours pô !
J'ai : Parse error: syntax error, unexpected '.'
et ça ne provient pas du $str. (pareil si j'enlève le point).
Mais dès le début, pour <div class='info'>, le <div est en noir, et la suite en bleu ! Là, y'a déjà un truc ???
Bonjour,
J'ai cette ligne en php, qui est censé afficher une image, et l'agrandir à côté au passage de la souris. Mais j'ai des erreurs dans la ligne dû aux ' et " :
Pouvez-vous me corriger cette ligne ?
Merci.
Merci Alnos de m'aider !
Donc, voilà où j'en suis :
Je cherche à afficher des données issues d'une base avec cette mise forme :
- affichage du titre (pupitre_FR)
- sur 1 ligne, affichage des enregistrements appartenant au pupitre_FR concerné. Mais si arrivé en bout de ligne (après 5 enregistrements), retour à la ligne pour afficher les autres enregistrements.
- Il y a 4 type de pupitre_FR (Chef de coeur, Ténors1, Ténors2, Baryton).
Et là, je n'arrive pas à aller à la ligne après les 5 premiers enregistrements pour afficher le reste. J'ai essayé avec un tableau et ses cellues limitées (width), j'ai essayé avec des div, mais rien à faire .....
Voilà mon code actuel :
$tabPupitre = array(); // tableau qui contiendra les différents pupitres et les noms associés
while($row = mysql_fetch_array($result)) {
// pour chaque enregistrement retourné, on prépare la chaine qui sera affichée
$str = '<td width="200px">';
$str.= ''.$row['nom'].' '.$row['prenom'].' <br>';
$str.= '<img border=0 height="50" src="../images/choristes/' . $row['photo'] . '"><br>';
$str.= '<div class="chor_leg">'.$row['legende_FR'].'</div>';
$str.= '</td>';
// puis on ajoute cette chaine dans le tableau, à la suite, pour le pupitre correspondant
$tabPupitre[$row['pupitre_FR']] .= $str;
}
mysql_free_result($result);
// il ne reste plus qu'à afficher le contenu de chaque champ du tableau php au bon endroit dans le tableau html :
?>
<center>
<table>
<tr><u><h2>Chef(s) de cœur</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Chef de cœur']; ?></tr>
</table><p></p>
<table>
<tr><u><h2>Ténors1</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Ténor1']; ?></tr>
</table><p></p>
<table>
<tr><u><h2>Ténors2</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Ténor2']; ?></tr>
</table><p></p>
<table >
<tr><u><h2>Basses</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Basse']; ?></tr>
</table><p></p>
<table>
<tr><u><h2>Barytons</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Baryton']; ?></tr>
</table></center>
Je ne sais plus quoi et comment faire ....
Bonjour,
Je cherche à afficher des enregistrements issus d'une BD dans un tableau. Mais si le nombre d'enregistrement à afficher est supérieur à la largeur, je voudrais afficher la suite à la ligne suivante.
<center>
<div class="choristes">
<table>
<tr><u><h2>Chef(s) de cœur</h2></u></tr><p></p>
<tr><?php echo $tabPupitre['Chef de cœur']; ?></tr>
</table></div></center>
Mais là, les enregistrements qui dépassent les 1000px de "choristes" ne sont pas affichés. Et moi, je voudrais les afficher à la ligne ....
Meerci
OK ! J'ai pris exemple, mais ça marche pô ....:(
Faut dire qu'il y a certaines choses que je n'ai pas vraiment compris, et j'ai fait cela pour tester :
$tabFlagTitre = array();
while( $item = mysql_fetch_array($result) )
{
//Si la rubrique n'a jamais été affichée on l'affiche et on passe le flag à 1
if( !isset($tabFlagTitre[$item['infos.titre']]) )
{
$tabFlagTitre[$item['infos.titre']] = 1;
echo $item['infos.titre'];
}
echo '<tr>';
echo '<td>'.$row['jour'].'/'.$row['mois'].'/'.$row['an'].'</td>';
echo '<td>'.$row['titre'].'</td>';
echo '<td>'.$row['texte'].'</td>';
echo '<td>'.$row['nom'].' '.$row['prenom'].'</td>';
echo '</tr>';
Sinon, comment récupérer la valeur de $row['titre'] ? Suffirait de la mettre dans une variable, et de la tester à chaque passage.
Si elle ne change pas, je boucle sur "echo '<td>'.$row['nom'].' '.$row['prenom'].'</td>';" , sinon j'affiche le titre suivant.
Ce sujet aborde le même problème. J'y propose une solution : http://forum.phpdebutant.org/viewtopic.php?id=5242
Merci xTG, mais je ne vois pas trop le rapport avec mon souci, ni comment m'en servir !
Je pensais plutôt à une boucle, dans la boucle déjà existante !!!!
Bonjour,
Pour rester sur le même script, celui-ci lit la base de données (3 tables en jointure ) et affiche le résultat dans un tableau (table infos réunis les infos ou sorties, table membres réunis les membres, inscr_sortie sert à liéer les infos aux membres avec les inscriptions):
Pour l'affichage du même "titre" et "texte", je peux avoir plusieurs "nom,prenom".
Là, si j'ai un deuxième "nom,prenom" pour le même "titre" et "texte", je réaffiche les titre et texte une deuxième fois.
Je voudrais que tous les "nom,prenom" pour le même titre et texte s'affiche dans le même <td>.
Comment faire ?
Merci