begin process at 2012 05 31 07:29:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Problème de variables en dehors d'une class


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de variables en dehors d'une class

vendredi 11 février 2011 à 16:11:22 | Problème de variables en dehors d'une class

yukimura27

Bonjour à tous,

J'ai un problème pour utiliser une variable en dehors de ma class.

Voici mon code:
class pouet
{
public function SelectAll ()
{
$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);
echo "<h1>{$data['titre']}</h1>";
echo "<p> {$data['contenu']} </p>";
echo "<p align\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id DESC";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
while($data2=$result->fetch(PDO::FETCH_ASSOC))
{
echo "-------------------------------<br/>";
echo $data2["pseudo"];
echo "<p>{$data2['contenu']}</p>";
echo "-------------------------------<br/>";
}

}

ensuite j'ai une autre page voir.php:

?php

require "config.php";
$app= new News();
$app->Connectauto();
$app->SelectAll();

?>

<form action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo" /><br/>
URL : <input type="text" name="url" /><br/>
Mail : <input type="text" name="mail" /><br/>
Contenu : <br/><textarea name="contenu" style="width:500px;height:200px;"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value=" <?php echo $data["id"]; ?>" />
</form>

mon probleme se situe au niveau du <?php echo $data["id"]; ?> en gras, il n'arrive pas a définir $data["id"];

Merci pour votre aide
vendredi 11 février 2011 à 17:38:28 | Re : Problème de variables en dehors d'une class

cod57

bonjour

class pouet
class News je suppose
sont elles liées
EXTEND ?

a++
vendredi 11 février 2011 à 18:09:08 | Re : Problème de variables en dehors d'une class

yukimura27

Re j'ai pas bien compris donc je vais donner tout le code ^^.

config.php:

class News
{
/* Attribut */
private $bdd;
private $perPage;

public function __construct()
{
$this->perPage = 4;
}

/* GETTER */
public function getPerPage()
{
return $this->perPage;
}

/* SETTER */
public function setPerPage($perPage)
{
$this->perPage = $perPage;
}

/* Méthodes */
public function Connectauto()
{
try
{
$this->bdd=new PDO("mysql:host=localhost;dbname=news", 'root', '');
}
catch (PDOException $e)
{
die( "Erreur : " . $e->getMessage() . "<br/>");
}
}

public function SelectAll ()
{
$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);
echo "<h1>{$data['titre']}</h1>";
echo "<p> {$data['contenu']} </p>";
echo "<p align\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id DESC";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
while($data2=$result->fetch(PDO::FETCH_ASSOC))
{
echo "-------------------------------<br/>";
echo $data2["pseudo"];
echo "<p>{$data2['contenu']}</p>";
echo "-------------------------------<br/>";
}


?>
<form action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo" /><br/>
URL : <input type="text" name="url" /><br/>
Mail : <input type="text" name="mail" /><br/>
Contenu : <br/><textarea name="contenu" style="width:500px;height:200px;"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value="<?php echo $data['id']; ?>" />
</form>
<?php
}

public function linkNewsAll ()
{
$sql = "SELECT COUNT(id) as nbNews FROM news";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);

$nbNews = $data['nbNews'];
$nbPage = ceil($nbNews/$this->getPerPage());

if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage)
{
$cPage = $_GET['p'];
}
else
{
$cPage = 1;
}

$firstPage = ($cPage-1)*$this->getPerPage();

$sql="SELECT titre, id FROM news ORDER BY date DESC LIMIT $firstPage,".($this->getPerPage())."";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );

while($data=$result->fetch(PDO::FETCH_ASSOC))
{
echo "<a href=\"voir.php?id={$data['id']}\">{$data['titre']}</a>";
$sql="SELECT id FROM comment WHERE news_id={$data['id']}";
$result2 = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
echo "(".$result2->rowCount().")<br/>";
}

for($i=1;$i<=$nbPage;$i++)
{
if($i==$cPage)
{
echo " $i /";
}
else
{
echo "<a href=\"index.php?p=$i\">$i</a> /";
}

}

}

public function SelectAllAdmin ()
{
$sql="SELECT * FROM news ORDER BY date DESC";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );

while($data=$result->fetch(PDO::FETCH_ASSOC))
{
echo "<p>{$data['titre']} -- ";
echo "<a href=\"edit.php?id={$data['id']}\">Modifier cette news</a>";
echo " -- <a href=\"suppr.php?id={$data['id']}\">x</a>";
echo "</p>";
}

}

public function Create()
{
extract($_POST);
$sql= "INSERT INTO news (titre, contenu) VALUES ('$titre' , '$contenu') ";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
header("Location: index.php");
}

public function Edit()
{
if(!empty($_POST))
{
extract($_POST);
$sql="UPDATE news SET titre='$titre', contenu='$contenu' WHERE id=$id";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
echo "New Modifiée";
$_GET["id"]=$id;
}

$sql= "SELECT * FROM news WHERE id={$_GET['id']}";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);

?>
<form method="post" action="edit.php" />
<input name="id" type="hidden" value=" <?php echo $data["id"]; ?>" />
Titre :<input type="text" name="titre" value= "<?php echo $data["titre"]; ?>" />
<br/>
Contenu :<br/>
<textarea name="contenu" style="with:100%;height:150px;"><?php echo $data["contenu"]; ?></textarea>
<input type="submit" value="C'est parti" >
<br/>
<a href="index.php">Redirection vers index</a>
</form>
<?php
}

public function Delete()
{
$sql= "DELETE FROM news WHERE id={$_GET['id']}";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
header("Location: index.php");
}

public function addCom ()
{
extract($_POST);
$sql= "INSERT INTO comment (pseudo, url, mail, contenu, news_id) VALUES ('$pseudo', '$url', '$mail', '$contenu', '$news_id') ";
$result = $this->bdd->query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error() );
header("Location: voir.php?id=$news_id");
}

}

et j'ai voir.php:

<?php

require "config.php";
$app= new News();
$app->Connectauto();
$app->SelectAll();

?>
<!--
<form action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo" /><br/>
URL : <input type="text" name="url" /><br/>
Mail : <input type="text" name="mail" /><br/>
Contenu : <br/><textarea name="contenu" style="width:500px;height:200px;"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value=" ?php echo $data["id"]; ?>" />
</form>
-->

et enfin edit.php:

<?php

require "../config.php";
$app= new News();
$app->Connectauto();
$app->Edit();

?>
<!--
<form method="post" action="edit.php" />
<input name="id" type="hidden" value=" ?php echo $data["id"]; ?>" />
Titre :<input type="text" name="titre" value= " ?php echo $data["titre"]; ?>" />
<br/>
Contenu :<br/>
<textarea name="contenu" style="with:100%;height:150px;">?php echo $data["contenu"]; ?></textarea>
<input type="submit" value="C'est parti" >
<br/>
<a href="index.php">Redirection vers index</a>
</form>
-->

voila donc mon problème est que j'aimerais utiliser le html dans edit.php et voir.php mais il ne me reconnait pas <?php echo $data['n'importe la quelle']; ?> donc je suis obligé de mettre le html dans mes class se qui n'est pas très propre comme code php OO.

Merci :)
vendredi 11 février 2011 à 18:11:57 | Re : Problème de variables en dehors d'une class

phpAnonyme

1.Tu fais de l'objet sans en faire
2.Il faut instancier ta classe poulet
3.Il faut éviter de faire de l'affichage(absolu) dans des méthodes
______________________________________________________________________
vendredi 11 février 2011 à 18:23:25 | Re : Problème de variables en dehors d'une class

yukimura27

Ok mais je débute donc je comprend pas bien ^^.

en gros je dois absolument tout faire en php OO sans mettre de echo ou autre ??

Mais le problème c'est que je ne vois pas trop comment faire ^^.
vendredi 11 février 2011 à 21:51:37 | Re : Problème de variables en dehors d'une class

phpAnonyme

Réponse acceptée !

je dois absolument tout faire en php OO sans mettre de echo ou autre ??

En gros OUI !

Bon, je vais gentil avec toi, et pour revenir à ton souci; selon les éléments du 1er message :
Code PHP :
<?php
class News 
{ 
	public function SelectAll($id)
	{
		$sql = "SELECT ne.id, ne.titre, ne.contenu, ne.date, co.pseudo, co.news_contenu, co.news_id 

				FROM news ne 
				INNER JOIN comment co 
				ON ne.id=co.news_id 
				WHERE ne.id='".intval($id)."' 
				ORDER BY id DESC";

		try {		
			if(!$result = $this->bdd->query($sql))
				throw new exception('Erreur SQL');	
			return $result->fetch(PDO::FETCH_ASSOC);	
		}
		catch(Exeption $e) {
			die($e->getMessage().'<pre>'.$e->getTrace().'</pre>');
		}
	
	}

}
?>

<?php 
$app= new News(); 
$display = $app->SelectAll($_GET['id']); 


/*
POUR AFFICHAGE
foreach($display as $values) 
{
	echo "<h1>{$display['titre']}</h1>"; 
	echo "<p> {$display['contenu']} </p>"; 
	echo "<p align\"right\">".date("j/n/Y G:i",strtotime($display["date"]))."</p>";
	echo "-------------------------------<br/>"; 
	echo $display["pseudo"]; 
	echo "<p>{$display['news_contenu']}</p>"; 
	echo "-------------------------------<br/>";
}
*/
?> 

<form action="addcom.php" method="post"> 
Pseudo : <input type="text" name="pseudo" /><br/> 
URL : <input type="text" name="url" /><br/> 
Mail : <input type="text" name="mail" /><br/> 
Contenu : <br/><textarea name="contenu" style="width:500px;height:200px;"></textarea> 
<input type="submit" value="Envoyer" /> 
<input type="hidden" name="news_id" value=" <?php echo $display["id"]; ?>" /> 
</form>


Bon c'est fait avec les éléments du bord, c'est donc théorique mais ça devrait le faire.

Remarque : tu cherchais à définir ton $data['id'] mais n'est-il as l'équivalent de $_GET['id'] ?? Si oui il suffisait de faire un "echo intval($_GET['id']);" à la place de $data['id']
______________________________________________________________________
vendredi 11 février 2011 à 23:37:40 | Re : Problème de variables en dehors d'une class

yukimura27

Ok je vois un peu mieux ce qu'il faut faire j'étais déjà entrain de refaire tout mon code dans ce sens.
Merci pour cette exemple, ça va bien m'aider.

++
samedi 12 février 2011 à 07:57:04 | Re : Problème de variables en dehors d'une class

syndrael

En tout cas, même s'il y a des erreurs, c'est sympa de voir quelqu'un qui progresse ainsi.
S.


Cette discussion est classée dans : sql, class, data, id, echo


Répondre à ce message

Sujets en rapport avec ce message

aaaahh ça m'enerve !! put*** de fonction [ par joebuz ] j'essaye de generer un arbre genealogique ascendant d'une personne $idcomment je pourrais faire pour faire la meme chose que le script d'en bas mais s effacer - modifier news [ par picogunsy ] Bonjour à tous, J'aimerai simplement savoir comment à partir de mon code ci-dessous faire un lien sur les deux mots en rouge dans mon code  pour sup Un tableau pas très sympa.... [ par ndsaerith ] Salut tout lemonde ! Ca faisait longtemps.... J'ai une petite question toute bête à vous poser, sur un de mes tableaux. C'est un tableau html à la bas Affichage de pièces sur un échiquier [ par Andjety ] Bonjour, on m'a bien aidé la dernière fois alors je reviens vers vous pour mon projet de jeu de bataille (échiquier en quelque sorte) et mes difficult Array SQL [ par OneHacker ] Bonjour, je sais pas comment afficher un tableau SQL :while($data = mysql_fetch_array($req))     {    // on affiche les informations de l'enregistreme Fonction récursive étrange [ par boulika ] Bonjour à tous,Voila j'ai un petit probleme , je viens de faire une boucle récursive qui va m'afficher sous forme d'esaclier des rubriques et des sous formulaire php et variable [ par Bulledanslair ] Bonjour à vous.Il me manque un quelquechose pour envoyer le variable $data['nFeuilDpAir'] dans la page feuille_de_palanquees.php pour son affichage.Da UPDATE de plusieurs enregistrements dans une boucle [ par kd ] Bonjour à tous, j'essaie depuis un bout de temps de modifier un ensemble d'enregistrement dans une base à l'intérieur d'une boucle mais j'ai une erreu MySQL id? [ par Linuss ] Bonjour à tous, Voilà, lorsque j'essaie de faire un lien qui contient l'id (qui existe au ca sou quelqu'un poserait la question :) d'un tuto, je n'y a get(id) from MySQL ? [ par Linuss ] Bonjour à tous, Lorsque j'essai d'afficher un tuto (bah oui dans ce cas là c'est un tutoriel :) la page n'afficher rien du tout. En fait pour afficher


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales