CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème Variable sur même page PHP

RockStarGame6
RockStarGame6
Niveau 7
25 mars 2016 à 09:47:13

Bonjour, j'ai un souci avec mon code PHP j'ai crée un système d'actualité ou il est possible de commentez pour les membres du site, mon interface est comme ça :
https://image.noelshack.com/fichiers/2016/12/1458895101-capture.png
Mon problème est que je n'arrive pas a récupéré la variable du message sur la même page afin de pouvoir modifier le message.
je voudrais le modifier sous cette interface qui est sur la même page comment je pourrais récupérer la variable Message afin de le modifier directement ici ?
https://image.noelshack.com/fichiers/2016/12/1458895365-capture.png

Mon code pour les messages :



		$comactu=$bdd->prepare('SELECT *
		FROM com_actu
		WHERE id_actu = :id_actu
		ORDER BY ID ASC');
		$comactu->bindValue(':id_actu',$idactu,PDO::PARAM_INT);
		$comactu->execute(); 		
		
		echo'<ul class="titre">
			<li class="NomExpediteur"><a class="NomSujet"><p class="TitreForumT" >Auteurs</p></a></li>
			<li class="Message"><a class="NomSujet"><p class="TitreForumT" >Commantaires</p></a></li>            
		</ul>';	
		while ($actucom=$comactu->fetch())
		{
		
			$auteur=$bdd->prepare('SELECT ImgPhoto, Admin, ID
			FROM compte
			WHERE Surnom = :Surnom');
			$auteur->bindValue(':Surnom',$actucom['Auteur'],PDO::PARAM_INT);
			$auteur->execute(); 
			
			while($auteur1=$auteur->fetch())
			{	
			echo'<ul>
				<li class="NomExpediteur">';
				if(empty($auteur1['ImgPhoto']))
					{
						echo'<p><img src="Img/Membre/anonyme.png" width="50px; height="50px"/></a></p>';
					}
					else
					{
						$imgphoto=$auteur1['ImgPhoto'];
						$imgnum = array('imgphoto'=>$imgphoto);
						$sqlavatar = 'SELECT * FROM photo WHERE NumPhoto = :imgphoto';
						$sqlavatar2 = $bdd->prepare($sqlavatar);
						$sqlavatar2->execute($imgnum);
							
						while ($donneesAvatar = $sqlavatar2->fetch())
						{
							echo'<p><img src='.$donneesAvatar['URL'].$donneesAvatar['Nom'].' width="100px; height="80px"/></a></p>';
						}
					}	
			
				echo'<a class="NomSujet"><p class="TitreForumT" >';
				if ($auteur1['Admin'] > 0)
				{
					echo'<p><a class="NomExpediteurA" href="./index.php?id=profil&amp;idprofil='.$auteur1['ID'].'">'.stripslashes(htmlspecialchars($actucom['Auteur'])).'</p>';
				}
				else
				{
					echo'<p><a class="NomExpediteur" href="./index.php?id=profil&amp;idprofil='.$auteur1['ID'].'">'.stripslashes(htmlspecialchars($actucom['Auteur'])).'</p>';
				}
				echo '</a></li>
				<li class="Message">';
				if(!empty($_SESSION["Surnom"]))
				{
				if($actucom['Auteur'] == $_SESSION["Surnom"])
					{
						echo'<a style="float:right;" href="#idmpmodif='.$actucom['Message'].'" onclick="javascript:TotalPagem();modifactu();">Modifier</a>';
					}
				}
				echo'<a id="modif" class="NomSujet"><p>Posté le '.strftime("%d/%m/%Y  à %H h %M",strtotime($actucom['Date'])).'</p><p class="TitreForumT" >'.code(nl2br(stripslashes(htmlspecialchars($actucom['Message'])))).'</p></a></li>            
			</ul>';
			}
		}

Mon code pour la div ou on modifie le message :



  echo'<div id="TotalPagem" style="display:none;" onclick="javascript:TotalPagem();modifactu();">
		</div>
		<div id="modifactu" style="display:none;">
			<ul class="smileyt">
				<h1 class="smiley">Changer son Message</h1>
				<a class="fermersmiley" href="javascript:TotalPagem();modifactu();"><span  class = "glyphicon glyphicon-remove"></span></a>
			</ul>
		   <form method="post" action="Script/EnvoiComActu.php?idactu='.$idactu.'" name="formulaire1">';
		   
		   $idmpmodif=$_GET['idmpmodif'];
		   
		echo'<p align="center">
			<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:caractere(\'[g]\', \'[/g]\');return(false)" />
			<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:caractere(\'[i]\', \'[/i]\');return(false)" />
			<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:caractere(\'[s]\', \'[/s]\');return(false)" />
			<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:caractere(\'[url]\', \'[/url]\');return(false)" />
			<input type="button" id="paragraphe" name="paragraphe" value="paragraphe" onClick="javascript:caractere(\'[p]\', \'[/p]\');return(false)" />
			<a href="javascript:menusmiley();TotalPages();">smiley</a>
		</p>
			<textarea id="modiactu" class="modifcomactu" name="message1">'.$idmpmodif.'</textarea>
		<br />
			<p align="center"><input type="submit" name="submit" value="Envoyer" />
			<input type="reset" name="Effacer" value="Effacer"/></p>
		</form>
	</div>';

On peut voir que j'ai essayer via la méthode get en renvoyant sur la meme page en cliquant sur modifier mais ça ne marche pas a tout les coups et je voudrais vraiment éviter de re-charger la page.
Merci de votre aide :ok:

yes-man
yes-man
Niveau 13
25 mars 2016 à 11:29:19

J'ai pas regardé ton code, mais si je comprend bien tu as ta page avec les commentaires, et le membre peut cliquer sur modifier, ce qui fait pop une modal pour le modifier.

Pas besoin de php pour ça, un simple coup de JS/jQuery suffit :ok:

Pseudo supprimé
Pseudo supprimé 25 mars 2016 à 16:04:01

Le 25 mars 2016 à 09:47:13 RockStarGame6 a écrit :


	
		while ($actucom=$comactu->fetch())
		{
		
			$auteur=$bdd->prepare('SELECT ImgPhoto, Admin, ID
			FROM compte
			WHERE Surnom = :Surnom');

Premier truc, l'intérêt d'utiliser des requêtes préparés est la réutilisation, on perd en performance si on l'initialise à chaque boucle. Place ton prepare avant le while. Ensuite dans le while tu bind tes values et tu execute; Aussi, tu pourrais t'éviter de placer des while dans des while si tu allais tout chercher dans une même requête avec des jointures SQL.

			$auteur->bindValue(':Surnom',$actucom['Auteur'],PDO::PARAM_INT);
			$auteur->execute(); 
			
			while($auteur1=$auteur->fetch())
			{	
			echo'<ul>
				<li class="NomExpediteur">';
				if(empty($auteur1['ImgPhoto']))
					{
						echo'<p><img src="Img/Membre/anonyme.png" width="50px; height="50px"/></a></p>';
					}
					else
					{
						$imgphoto=$auteur1['ImgPhoto'];
						$imgnum = array('imgphoto'=>$imgphoto);
						$sqlavatar = 'SELECT * FROM photo WHERE NumPhoto = :imgphoto';

						$sqlavatar2 = $bdd->prepare($sqlavatar);

Même chose ici, ta requête $sqlavatar et son prepare devrait se trouver avant le tout premier while.

---
Pour le reste, comme le dit VDD, tu prend jQuery ou js et tu saisis le message et le copie dans ton modal. Mais tu dois faire suivre une référence à ton message comme son ID auto de ta bdd, par exemple dans ton lien pour modifier.

Bref, ton lien pour modifier écrit le message dans le modal et ajoute le id du message dans un champ hidden de ton form.

ensuite lors du submit, tu envoie le contenu du message avec son numéro d'ID au serveur par ajax... (PAS la même page en GET... tu appelle un fichier .php dont l'unique but est de sauvegarder le message et son contenu)

utiliser ajax te permettra de rester sur la même page, le reste se fera en arrière plan. Une fois la réponse ajax obtenue, tu réécris le message modifié dans la page avec js, puis tu ferme le modal.

Message édité le 25 mars 2016 à 16:06:19 par Pseudo supprimé
RockStarGame6
RockStarGame6
Niveau 7
25 mars 2016 à 22:51:23

Merci de vos réponses , seulement pour les jointures j'ai fais une erreur a la création de la base de donnée j'ai mis des champs de meme nom dans des tables différentes es que je peuxles différencier dans les jointures ou il faut tout refaire ? Franchement pas envie de refaire la base de donnée maintenant :-(

RockStarGame6
RockStarGame6
Niveau 7
25 mars 2016 à 23:54:55

J'ai revu mais requêtes tout a l'air de fonctionner sous MYSQL avant d’insérer dans mon code PHP sauf au niveau de la jointure IMGphoto je m'en sors avec une erreur "#1054 - Unknown column 'NumPhoto.actu' in 'where clause'"
La requête sql :



SELECT Message, Auteur, DateMSG as Datemsg, ImgPhoto, Admin, NumPhoto, URL, NomPhoto, IDComActu 
FROM com_actu, compte, photo 
WHERE NumPhoto.actu=NumPhoto.photo
AND ImgPhoto.compte=NumPhoto.photo
AND id_actu = '19' 
AND Surnom = 'RockStarGame6' 
AND NumPhoto = '34' 
AND ImgPhoto.compte=NumPhoto.photo
AND NumPhoto.actu=NumPhoto.photo
ORDER BY IDComActu ASC

Merci de votre aide :)

Message édité le 25 mars 2016 à 23:55:59 par RockStarGame6
peredieuxnoel
peredieuxnoel
Niveau 11
26 mars 2016 à 01:09:12

T'as inversé les tables et les attributs dans la partie Where et and de ta requête ça devrait donner ça plutôt : Where actu.NumPhoto...

Diabolo09
Diabolo09
Niveau 10
29 mars 2016 à 14:13:52

Pour ta question sur les jointures avec des field de mêmes nom, cela ne pose aucun soucis, c'est même plutôt courant, sur une bdd de taille moyenne. (du moins, de ce que j'ai pu en voir).

En gros, imaginons t'as la table 'abcd' et la table 'defg' contenant chacun un field 'nom'.

Il te suffit de faire

Select a.nom as nom_prem, d.nom as nom_deux
From abcd as a
JOIN defg as d ON 'condition de jointure'

...

Tu récupéreras tes résultats via $resultats['nom_prem'] et $resultats['nom_deux'].

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment