Prb incrémentation php et recuperer 2 tables dans 1 page

Résolu
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005
-
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
Bonjour ,j ai un gros soucis dans une incrémentation, enfin je pense que c'est le plus interressant pour ce dont je veux faire:

explications:

j ai réalisé une page de news , commentaires et dans celui ci je souhaiterais que chaque commentaires ait un numéro dans l'ordre.

Ayant 1 table news et 1 commentaires, tous les commentaires ont leur ID mais ne sont pas dans l'ordre suivant les news postés (ce qui est logique)

Pour exemple plus concret, la page commentaire se presente ainsi:
news blablabla lol
commentaires:
#1 fefe
blablabla
#2 fefe2
blablabla
etc...

J'ai mis ceci mais le prb qui que çà incrémente de 1 pour tous donc tous à #1
<?$a=0; ++$a; echo"$a" ; ?>

Help je galère trop.

PS: Peux t'on allez chercher le contenu de 2 tables dans une page avec les informations mélangers , style table news et table membres car j ai réalisés 2 sql_query l'un en dessous de l'autre puis un mysql_fetch_object pour les 2 mais je trouve celà trop lourd.

Merçi d'avance des réponses

19 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
$a = 0;
while($row_comment = mysql_fetch_object($comments_result)) {
?>
&nbsp;&nbsp;#<?php echo $a;?>
&nbsp;&nbsp;m.member_ID?>"><?=$row_comment->c_username?>&nbsp;&nbsp;<?=$row_comment->c_date?> - <?=$row_comment->c_time?>,

----

&nbsp;&nbsp;<?=ubb(nl2br(htmlentities($row_comment->c_body)))?>




<?php
$a ++;
}
Messages postés
63
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
30 avril 2006

pour les numeros : tu creer une clé : int valeur 11 extra:auto increment et primaire(phpmyadmin) et l'autre je pense que non


---------------------------------------------------------------

FloThePro38
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

hum ,le problème est que j ai déjà créer un id commentaire

news
<!--c1-->
CODE,
----

<!--ec1-->
CREATE TABLE `news` (
`news_ID` smallint(6) NOT NULL auto_increment,
`categorie_ID` smallint(6) NOT NULL default '0',
`flag` varchar(50) NOT NULL default '',
`title` varchar(50) NOT NULL default '',
`postdate` varchar(10) NOT NULL default '',
`posttime` varchar(5) NOT NULL default '',
`body` text NOT NULL,
`link1` varchar(100) NOT NULL default '',
`username` varchar(50) NOT NULL default '',
KEY `news_ID` (`news_ID`)
) ENGINE= MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;
<!--c2-->
commentaires
<!--c1-->
<TABLE cellSpacing=1 cellPadding=3 width="95%" align=center border=0>

----, CODE </TD>
----

<!--ec1-->
CREATE TABLE `newscomments` (
`comment_ID` smallint(6) NOT NULL auto_increment,
`news_ID` smallint(6) NOT NULL default '0',
`postdate` varchar(10) NOT NULL default '',
`posttime` varchar(5) NOT NULL default '',
`body` text NOT NULL,
`username` varchar(50) NOT NULL default '',
KEY `comment_ID` (`comment_ID`)
) ENGINE =MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6

ca serait pour une incrementation mais tous mes commentairezs sont stoker dans une table commentaires, c la le prb</TD></TR></TBODY></TABLE>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Hello,



heu...il est ou ton probleme ?Elle est correcte pour ton utilisation, la structure de ta base.

Tu as ta primary key sur chaque table (id_news et id_commentaire), et
une foreign key dans la table commentaires, pointant sur la news dont
il depend. Tout va bien!

Ensuite, tu vas chercher tes news...et pour chaque news, tu vas
chercher les commentaires qui y sont associes. L'ordre, tu l'as
facilement avec un order by. Tu veux un chiffre devant ? Ben
l'increment devrait fonctionner...

Tu initialises a 1 avant la boucle pour recuperer les
commentaires pour chaque news, tu incrementes en fin de boucle. Et tu
affiches entre temps evidemment.



On peut aller chercher le contenu de 2 tables, oui, mais ca depend de
ce que tu veux faire exactement. 2 query completement distinctes, non.
Et puis ce serait un peu le bordel...si ces 2 tables ont une relation (
ou plusieurs), oui, evidemment.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Quoique si, tu peux voir avec UNION.

Heu...





...



http://dev.mysql.com/doc/mysql/en/union.html



vla.
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

Salut,



tu as mis <?$a=0; ++$a; echo"$a" ; ?> ( viendrais tu du monde C/C++ pour faire un incrément avant )



fais plutoto



$a++

"They are 10 sorts of persons whose understand binary and whose not"
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Ca change pas grandchose dans ce cas-ci.
Ca change si on reassigne la variable, oui, mais la...
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

Rebonjour, çà n'est pas tout à fait ce dont je cherchais, le problème est que tous les commentaires sont tous enregistrer dans la même table en incrementation, et que chaque news a ses commentaires mais incrementer au fur et a mesure de leur ajout.
Ce dont je voyais était d'y placer une incrementation sur la page de commentaire du chiffre 1 en créer tout d'abord une variable $a = 1 , de la pré-incrementer ++$a puis afficher l'incrémentation du chiffre par un echo variable , sans à avoir besoin de la BDD. J'avais trouvé sur le net en surfant le même principe en plus simple avec variable puis c'était $a+= ou autre que = et ca incrementer sur la page commentaire, quelqu'un a une idée (voir url pour ex)

Pour récupérer 2 tables, j'ai trouvé en fouillant un peu les valeurs LEFT JOIN et INNER JOIN pour ajout un contenu venant d'une 2eme table, efficace ??http://oufefe.free.fr/Image.jpg
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

j'ai valide un peu trop vite ma réponse, mais je m'etais apercus de sa non pertinence. Mais la flemme de re poster derriere

j'ai aussi l'impression qu'il initialise a chaque fois sa variable $a
donc il a toujours #1, si j'ai bien compris que son probleme était la





Cela dit le UNION ne marche qu'a partir de la version 4 de mysql je crois


"They are 10 sorts of persons whose understand binary and whose not"
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Fais voir ton code, on y verra plus clair je pense :-)

Possible pour le Union oui, tu as quelle version...?
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

DTBFEFE a écrit:
Rebonjour, çà n'est pas tout à fait ce dont je cherchais, le problème est que tous les commentaires sont tous enregistrer dans la même table en incrementation, et que chaque news a ses commentaires mais incrementer au fur et a mesure de leur ajout.
Ce dont je voyais était d'y placer une incrementation sur la page de commentaire du chiffre 1 en créer tout d'abord une variable $a = 1 , de la pré-incrementer ++$a puis afficher l'incrémentation du chiffre par un echo variable , sans à avoir besoin de la BDD. J'avais trouvé sur le net en surfant le même principe en plus simple avec variable puis c'était $a+= ou autre que = et ca incrementer sur la page commentaire, quelqu'un a une idée (voir url pour ex)

Pour récupérer 2 tables, j'ai trouvé en fouillant un peu les valeurs LEFT JOIN et INNER JOIN pour ajout un contenu venant d'une 2eme table, efficace ??http://oufefe.free.fr/Image.jpg

SUITE:
En fait cela n'a rien à voir avec mon code , ce dont je souhaite et de pouvoir incrémenter en php la valeur 1 , qu'il s'incremente a chaque commentaire ajouter sans passer par la base de donnée , juste avoir ++1 .
Prenons une page vierge en affichant 1 dans un tableau et que dans le 2eme tableau il affiche 2 ainsi de suite , çà me semble simple mais je n'y arrives pas , help
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

Pour http://dev.mysql.com/doc/mysql/fr/union.html je viens de regarder, vu que j'utilise easyphp 1.8 en local , je vais tester mais le principe semble être le même que LEFT JOIN et INNER JOIN qui permettent aussi de récuperer du contenu dans une autre table , maintenant çà fait longtemps que j'ai pas utilisé LEFT et INNEr , faut que je regarde s'ils sont encore valide
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Rien a voir avec ton code ?
Concernant l'incrementation, c'est du tres basique...en effet. Donc si tu ne t'en sors pas, c'est soit que tu shematises mal, soit que ton script est foireux. Donc, montre ton code, parce que la, c'est vraiment trop vague.
Sans code, perso, je te redonne la reponse que je t'ai deja donnee. Parce que la solution, vu tes explications, est la.
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

Ceci est le code news_comments.php
ligne 108 , l'incrémentation , à disponibilité plus haut la table commentaires,
merçi d'avance.

<?php


include("functions/db_connect.php");
include("functions/tables.php");


$sql_news_query = "SELECT n.news_ID AS n_id,
n.flag AS n_flag,
n.title AS n_title,
n.postdate AS n_date,
n.posttime AS n_time,
n.body AS n_body,
n.link1 AS n_link1,
n.username AS n_username,
cat.categorie_ID AS c_id,
cat.name AS c_name,
cat.logo AS c_logo

FROM $tblNews n


INNER JOIN $tblNewsCategories cat
ON cat.categorie_ID = n.categorie_ID

WHERE n.news_ID ='" . (int)$_GET['nid'] . "'";
$sql_users_query = "SELECT * FROM $tblUsers ";


$news_result = mysql_query($sql_news_query) or die(mysql_error());


while($row_news = mysql_fetch_object($news_result)) {
?>



&nbsp;&nbsp;n_flag?>"> <?=$row_news->n_title?>,

----

&nbsp;Par&nbsp;m.member_ID?>"><?=$row_news->n_username?> Posté le: <?=$row_news->n_date?> - <?=$row_news->n_time?>,

----

c_logo?>" width="150" height="80" alt="<?=$row_news->c_name?>" align="top">,
&nbsp;<?=ubb(nl2br($row_news->n_body))?>,

----

<?phpif($row_news->n_link1 "" || $row_news->n_link1 "http://") {
echo "";
} else {
echo "----
";
echo ", &nbsp;Source:

&nbsp;n_link1 . \"' target=\\"_blank\\">\" . $row_news->n_link1 .\"\";
}

echo \"\";
echo "
";
}



if(isset($_POST['post_comment'])) {
$insert_sql = "INSERT INTO $tblNewsComments (news_ID, postdate, posttime, body, username) VALUES (
'" . $_GET['nid'] . "',
'" . $_POST['postdate'] . "',
'" . $_POST['posttime'] . "',
'" . $_POST['body'] . "',
'" . $_POST['username'] . "')";
$insert_query = mysql_query($insert_sql) or die(mysql_error());
include("news_comments_redirect.php");
} else {



$sql_comments_query = "SELECT c.news_ID AS c_news_id,
c.comment_ID AS c_comment_id,
c.postdate AS c_date,
c.posttime AS c_time,
c.body AS c_body,
c.username AS c_username

FROM $tblNewsComments c

WHERE c.news_ID ='" . (int)$_GET['nid'] . "'

ORDER BY c.comment_ID";
$sql_users_query = "SELECT * FROM $tblUsers m ";


$comments_result = mysql_query($sql_comments_query) or die(mysql_error());


echo "
";
echo " &nbsp;Commentaires:
";



if(mysql_num_rows($comments_result) == "0") {
echo "Pas de commentaires...

";
} else {



while($row_comment = mysql_fetch_object($comments_result)) {
?>


&nbsp;&nbsp;#<?$a=0; ++$a; echo"$a" ;?>
&nbsp;&nbsp;m.member_ID?>"><?=$row_comment->c_username?>&nbsp;&nbsp;<?=$row_comment->c_date?> - <?=$row_comment->c_time?>,

----

&nbsp;&nbsp;<?=ubb(nl2br(htmlentities($row_comment->c_body)))?>




<?php
}
}



if(isset($_SESSION['login']) == "1") {



?>
<form action="" method="post" name="commentform">

,

----

BBCode est ON
HTML est OFF,
<textarea name="body" cols="30" rows="5" class="include"></textarea>,

----

" >
" >
" >,

----

,

</form>


<?php
} else {


echo "Vous devez être logué pour poster un commentaire!";
}


}
?>
Messages postés
12
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
4 juin 2005

Bon ben merçi beaucoup , çà marche impeccable, l'incrémentation fonctionne parfaiement et je vois ce que tu as fait,

initialisation variable $a a 0

echo $a ; à l'endroit ou l'incrémentation est effectué.

$a ++; incrémentation

Si j'ai bien compris .

je te remercie énormément .
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Oui :-)
en fait :
$a = 0 avant ta boucle while qui va chercher tes resultats
echo $a la ou il le faut
$a ++ on incremente juste avant la fin de chaque iteration de ta boucle.

Je t'en prie :-)
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

C'est bien ce que je disais, mais bon c'est pas grave, le principal c'est que ca marche.



Mea culpa, j'aurais peut etre du mettre.



tu as mis <?$a=0; ++$a; echo"$a" ; ?> ( viendrais tu du monde C/C++ pour faire un incrément avant )



fais plutot



<?php echo $a++?> au lieu de $a++



Sinon, maintenant que je vois ton code, il est pas aux normes ( utilise
les
au lieu des
, de meme pour tes autres balise
non fermé genre input)

sinon mets un <?php a la place de <?, c'est plus portable



Sinon, c'est rare de voir des selects aussi propre



Bonne continuation


"They are 10 sorts of persons whose understand binary and whose not"
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Garfield => lol, non, si j'avais mis ++ $a ca n'aurait rien change. J'ai mis $a++ par habitude, c'est tout.


Cela change quelquechose uniquement dans certains cas :


$a = 0;


$b = $a ++;


// $b 0...$a 1


$a =0;


$b = ++ $a;


// $b 1...$a 1

Dans notre cas, ca ne change rien. Il incremente $a dans tous les cas.
Pour le reste, c'est clair qu'il y aurait du menage a faire ;-)
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

malalam =>



ce que je voulais dire n'est pas au niveau du ++$a ou $a++ (je connais
la différence, je ne savais pas que ca marchait avec PHP )



c 'est au niveau de l'initialisation qui été faite a chaque fois.



Mais on va pas pourrir le thread pour si peu

"They are 10 sorts of persons whose understand binary and whose not"