jackbocar

  • Site web
  • Nombre de sujets
    152
  • Nombre de messages
    456
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers sujets sur les forums

jackbocar
le 24/08/2008 à 18:44
Saut d'ID
Bonjour

Un problème que je n'avais jamais rencontré :

Lorsque j'envoie un enregistrement dans ma table, j'ai un saut sur les ID.
Je m'explique, si mon incrémentation est à 30, j'envoie un enregistrement qui doit avoir ID 31, j'ai bien cette ID, mais elle est vide de titre et de texte, seule la date apparait, par contre l'ID 32 elle est correctement enregistrée.

Si j'enlève les protections : mysql_escape_string() tout fonctionne bien ?

Mon code :

<?php
$hostname = 'localhost';
$username = 'jackbocar';
$password = 'XXXXXXXXX';
$dbname = 'XWXXXXXX';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

if (isset($_POST['titre']) && isset($_POST['news'])) {

$sql = 'INSERT INTO news (titre, news) VALUES (:titre, :news)';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':titre', mysql_escape_string($_POST['titre']));
$stmt->bindParam(':news', mysql_escape_string($_POST['news']));
$stmt->execute();
echo 'News Enregistrée.';
}

?>



Ma table :

DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int(11) unsigned NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`titre` varchar(255) NOT NULL,
`news` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;



Merci de votre aide

Jack Bocar
jackbocar
le 25/07/2008 à 17:14
Problème avec UPDATE
Bonjour,

Je n'arrive pas à trouver où il y a une erreur…

Mon code MODITICATION.PHP ET MODIFICATION_1.PHP fonctionnent tous deux parfaitement si je ne place pas dans MODIFICATION_1.PHP
<?php news="'.$_POST[ 'news'].'", ?>
.

Ce qui veut dire, je peux modifier tous les autres champs si je ne place pas dans mon code
<?php UPDATE SET news="'.$_POST[ 'news'].'", ?>


Merci de votre aide

Jack Bocar

Mon code MODIFICATION.php

<?php
include ('connexion.php');

if (isset($_GET['id']) && !isset($_GET['go'])) {
$sql = 'SELECT auteur, titre, type, menu, news, isbn FROM librairie WHERE id="'.$_GET['id'].'"';
$sth = $dbh->query($sql);
$result = $sth->fetchAll();
$row = $result[0];
$auteur=$row['auteur'];
$titre=$row['titre'];
$type=$row['type'];
$menu=$row['menu'];
$news=$row['news'];
$isbn=$row['isbn'];
}
?>
<form name="formulaire" method="post" action="MODIFICATION_1.php?go=ok">
Auteur :</span></td><td align="left"><input type="text" name="auteur" maxlength="150" size="80" value="<?php echo $auteur; ?>"><br />
Titre :</span></td><td align="left"><input type="text" name="titre" maxlength="150" size="80" value="<?php echo $titre; ?>"><br />
Type :</span></td><td align="left"><input type="text" name="type" maxlength="150" size="80" value="<?php echo $type; ?>"><br />
Menu :</span></td><td align="left"><input type="text" name="menu" maxlength="150" size="80" value="<?php echo $menu; ?>"><br />
<tr><td colspan="2" align="center"><textarea name="news" cols="50" rows="10"><?php echo $news; ?></textarea><br />
Isbn :</span></td><td align="left"><input type="text" name="isbn" maxlength="150" size="80" value="<?php echo $isbn; ?>"><br />
<input type="submit" value="Envoyer"><br />
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
</form>



Mon code MODIFICATION_1.php
<?php
include ('connexion.php');

if (isset($_GET['go'])) {
$dbh->exec('UPDATE librairie SET visible="0", auteur="'.$_POST['auteur'].'", titre="'.$_POST['titre'].'", type="'.$_POST['type'].'", menu="'.$_POST['menu'].'", news="'.$_POST['news'].'", isbn="'.$_POST['isbn'].'" WHERE id="'.$_POST['id'].'"');
header('Location: index.php');
exit();
}
?>



Ma table :

--
-- Structure de la table `librairie`
--

CREATE TABLE `librairie` (
`id` int(11) NOT NULL auto_increment,
`auteur` varchar(150) NOT NULL,
`titre` varchar(150) NOT NULL,
`type` varchar(50) NOT NULL,
`menu` varchar(100) NOT NULL,
`news` longtext NOT NULL,
`isbn` varchar(100) NOT NULL,
`visible` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
jackbocar
le 23/07/2008 à 19:29
Polices pour Windows et Ubuntu
Bonjour,

Pour les utilisateurs et fidèles de Linux et Ubuntu.

A votre avis, quelle est la police qui correspond le mieux au deux systèmes, et surtout qui est reconnue par ces même deux systèmes.

Merci

Jack Bocar
jackbocar
le 19/07/2008 à 16:11
Créer une fonction
Bonjour,

Je voudrais créer une fonction pour supprimer à la lecture des donnés les espaces (\r \n).

SIC : Cette fonction retourne la chaîne str, après avoir supprimé les caractères invisibles de début de chaîne. Si le second paramètre charlist a été omis, ltrim() supprimera les caractères suivants : (\r \n).

Il existe une fonction sur cette page :
http://fr.php.net/manual/fr/function.ltrim.php

Donc, si je veux que ça fonctionne directement sur :
$obj->news

Comment dois-je créer cette fonction. ?


J'ai fais des fonctions de ce genre :

<?php
function caracteres($chaine){
$chaine = str_replace
( array('à')
, array
( '&agrave;'
)
, $chaine
) ;

return $chaine;
}
?>


Mais, je ne vois pas comment faire celle avec ITRIM () ?

Merci de votre aide

Jack Bocar
jackbocar
le 16/07/2008 à 13:20
Problème de style sur les bordures d'un tableau
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tableau PDO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
BODY {background: #f1f1f1;}
IMG {float: left;}
BODY, P, IMG {font-family: Arial, Helvetica, sans-serif;font-size: 10pt;margin: 0.5em;text-align:justify;}
.red {color: red;}
.cellule {color: #0C034F;text-align: justify;border: solid 1px #a0522d;}
.cadre {border: solid 1px #a0522d;background-color:#ffffff;}
.Lnav {text-decoration: none;font-weight: bold;color:#23698B;font-size : 10pt;}
.Lnav:hover {text-decoration: underline;font-weight: bold;color:#990000;font-size : 10pt;}
</style>
</head>

<body>

Bonjour,

J'ai un tableau en PDO, il fonctionne parfaitement bien, mon seul problème est les STYLES du cadre et des cellules. Ils sont pour une part épais et pour une autre fin ?

Comment régler ce problème ?

Merci de votre aide

Jack Bocar


<?php

/*------------------------------------------------*/
/*
/* NE RIEN CHANGER ICI */
/*
/*------------------------------------------------*/
class Connexion extends PDO{
private $debug;
/*--- constructeur ne rien changer ----*/

function __construct($user,$mdp,$bdd,$host='localhost'){

$this->debug=false;
try{
parent::__construct('mysql:host='.$host.';dbname='.$bdd,$user,$mdp);
} catch(PDOEXCEPTION $e){
die ('Erreur : '.$e->getMessage() );
}
$this->exec('SET CHARACTER SET 8859-1');
}
function modeDebug(){
$this->debug=true;
}
/*--- execute une requete sql du type insert, delete ou update ---*/

function exec($requete){
$resultat=parent::exec($requete);
if($resultat===FALSE and $this->debug){
var_dump($resultat);
var_dump(parent::errorInfo());
}else{
return $resultat;
}
}
/*--- execute une requete du type select ---*/

function query($requete){
$resultat=parent::query($requete);
if($resultat===FALSE and $this->debug){
var_dump($this->errorInfo());
var_dump(parent::errorInfo());
$resultat->closeCursor();
}else{
return $resultat;
}
}
/*--- return : false si aucune valeur trouvee ----*/

function querySimple($select,$table,$where='',$groupBy='',$ordre='',$limit='',$defaut=false){
$requete='select '.$select.
' from '.$table;
if($where!=''){
$requete.=' where '.$where;
}
if($groupBy!=''){
$requete.=' group by '.$groupBy;
}

if($ordre!=''){
$requete.=' order by '.$ordre;
}
if($limit!=''){
$requete.=' limit '.$limit;
}
$resultat=$this->query($requete);
$resultat=$resultat->fetchAll(PDO::FETCH_BOTH);
if(isset($resultat[0][0])){
return $resultat[0][0];
}else{
return $defaut;
}
}
/*--- renvoie un tableau associatif contenant le résultat de la requete -----*/

function requete2tableau($requete){
$resultat=$this->query($requete);
if($resultat===false AND $this->debug){
echo $requete;
};
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
/*---renvoie un tableau html contenant le résultat de la requete---*/

/*----ON PEUT MODIFFIER LA TABLE SEULEMENT ----*/

function requete2html($requete,$border=0,$enteteColonne=true){
$resultat=$this->query($requete);
$texte='';
$texte.= '<center><table width="90%" cellpadding="0" cellspacing="0" border="'.$border.'" class="cadre">';
if($enteteColonne){
$texte.= '<tr valign="top">';
for($i=0;$i<$resultat->columnCount();$i++){
$col=$resultat->getColumnMeta($i);
$texte.= '<th class="red">'.$col['name'].'</th>';
}
$texte.= '</tr>';
}
$resultat->setFetchMode(PDO::FETCH_NUM);
foreach($resultat as $ligne){
$texte.= '<tr valign="top">';
foreach($ligne as $valeur){
$texte.= '<td class="cellule"><p>'.nl2br($valeur).'</p></td>';
}
$texte.= '</tr>';

/*-- espace vide entre chaque tableau ----*/

$texte.='<tr><td>&nbsp;</td></tr>';

/*---ON PEUT MODIFIER LES ARGUMENTS SELECT ---*/

}
$resultat->closeCursor();
$texte.='</table><br /><a href="#" class="Lnav">Top</a></center>';
return $texte;
}
}
$connexion=new Connexion('LOGIN','PASSWORD','BASE');
$connexion->modeDebug();
echo $connexion->requete2html('select id,Nouvelles as Nouvelles from tableau_1 ORDER BY id DESC',1);


/*-
ID, NEWS, INFO, OU TOUT AUTRE SUIVANT LA TABLE ON PEUT AUSSI AJOUTER DES ARGUMENTS
-*/
?>



<br />
<a href="tableau_2.php" class="Lnav">Tableau 2</a> &nbsp; <a href="tableau_3.php" class="Lnav">Tableau 3</a> &nbsp; <a href="tableau_4.php" class="Lnav">Tableau 4</a>
<br /><br />
</body>
</html>


--
-- Structure de la table `tableau_1`
--

CREATE TABLE `tableau_1` (
`id` int(11) NOT NULL auto_increment,
`Nouvelles` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
jackbocar
le 13/07/2008 à 11:13
Paramètres $stmp et UPDATE
Bonjour,

Peux-on utiliser ses paramètres pour faire un UPDATE table SET :
<?php
$stmt = mysqli_prepare($db, "UPDATE table SET
?>


Si c'est possible, merci de me faire un exemple, je n'y parviens pas.

Mon code :

<?php

if (isset($_POST['auteur']) && isset($_POST['categorie']) && isset($_POST['image']) && isset($_POST['titre']) && isset($_POST['menu']) && isset($_POST['news']) && isset($_POST['isbn']) && isset($_POST['visible']) && is_numeric($_POST['visible'])) {

if ($db = @mysqli_connect('localhost', 'jackbocar', 'password')) {
mysqli_select_db($db, 'php5');
$stmt = mysqli_prepare($db, "UPDATE table SET (auteur, categorie, image, titre, menu, news, isbn, visible) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");

$auteur = mysqli_real_escape_string($db, $_POST['auteur']);
$categorie = mysqli_real_escape_string($db, $_POST['categorie']);
$image = mysqli_real_escape_string($db, $_POST['image']);
$titre = mysqli_real_escape_string($db, $_POST['titre']);
$menu = mysqli_real_escape_string($db, $_POST['menu']);
$news = mysqli_real_escape_string($db, $_POST['news']);
$isbn = mysqli_real_escape_string($db, $_POST['isbn']);
$visible = intval($db, $_POST['visible']);

mysqli_stmt_bind_param($stmt, 'sssssssi', $auteur, $categorie, $image, $titre, $menu, $news, $isbn, $visible);
if (mysqli_stmt_execute($stmt)) {
echo 'Ouvrage sauvé.';
} else {
echo 'Erreur lors de l\'écriture du livre.';
}
mysqli_close($db);
} else {
echo 'Connection failed.';
}
}
?>


Merci

Jack Bocar
jackbocar
le 07/04/2008 à 15:46
Problème de chaine de caractères
Ce que j'envoi dans la base :

Livre II.

Lorsque les crois&eacute;s eurent pass&eacute; le d&eacute;troit du Bosphore, ils ne s'occup&egrave;rent plus que de faire la guerre.


Mon code PHP pour poster les infos :
<?php
$info = mysqli_real_escape_string($conn, $_POST['info']);
?>


Le formulaire pour envoyer les infos :
Info : <input type="text" maxlength="255" size="110" name="info" value="<?php if (isset($_POST['info'])) echo stripslashes(htmlentities(trim($_POST['info']))); ?>">


Dans la base voici comment ça arrive :
Livre II.\r\n\r\nLorsque les crois&eacute;s eurent pass&eacute; le d&eacute;troit du Bosphore, ils ne s\'occup&egrave;rent plus que de faire la guerre.


Un bout de code pour la lecture des infos :
nl2br(stripslashes($obj->info))


Voilà comment il apparait à l'écran :
Livre II.rnrnLorsque les croisés eurent passé le détroit du Bosphore, ils ne s'occupèrent plus que de faire la guerre.

Comment éviter les (rnrn) qui restent dans ce texte et avoir des vrais retours à la ligne.

Merci de votre réponse

Jack Bocar
jackbocar
le 29/01/2008 à 11:45
Affichage de données
Peut-on faire comme ceci ?

Je voudrais pourvoir contrôler toutes mes entrées dans une table, et avoir le choix de les afficher soit par département, soit par région. Ca, je sais le faire, mais, là, où j'ai besoin de votre aide, c'est pour l'affichage.

Mes pages pour le moment sont architecturées comme ceci :

<h3>Le nom de la commanderie (département)</h3>
<a href="#Paris" class="nenuNav">Paris</a> ; <br />
<a href="#Lyon" class="nenuNav">Lyon</a> ; <br />
<a href="#Toulouse" class="nenuNav">Toulouse</a> ; <br />
<a href="#Bordeaux" class="nenuNav">Bordeaux</a> ; <br />

Pour certaines pages le menu peut atteindre 30 lignes.


<a name="Paris"></a><br /><br /><a href="#" class="haut">Top</a>
<h2>Paris (département)</h2>
Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte,
<a name="Lyons"></a><br /><br /><a href="#" class="haut">Top</a>


<h2>Lyon (département)</h2>
Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte,
<a name="Toulouse"></a><br /><br /><a href="#" class="haut">Top</a>

<h2>Toulouse (département)</h2>
Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte, Le texte,
<a name=""></a><br /><br /><a href="#" class="haut">Top</a>



Alors, est ce que je peux sans avoir d'erreurs faire ceci :


<?php
$result = $conn->query('SELECT id, aname, nom, dep, region, texte FROM comm_region ORDER BY nom DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page);
while ($obj = $result->fetch_object()) {


// nom commanderie + département
printf ('<h3>%s (%s)</h3>',stripslashes(trim($obj->nom)), stripslashes(trim($obj->dep)));

// menu lien aname
printf ('<a href="#%s" class="nenuNav">%s</a> ; <br /><a href="#%s" class="nenuNav">%s</a> ; <br /><a href="#%s" class="nenuNav">%s</a> ; <br /><a href="#%s" class="nenuNav">%s</a> ; <br /><a href="#%s" class="nenuNav">%s</a> ; <br />',stripslashes(trim($obj->aname)), stripslashes(trim($obj->nom)));

// affichage de la totalité
printf ('<a name="%s"></a><br /><br /><a href="#" class="haut">Top</a>',stripslashes(trim($obj->aname)));
printf ('<div class="cadre-com"><h3 class="com-titre">Nom %s Departement (%s) Region %s</h3><div class="texte">%s</div></div><a href="#" class="menuNav">Top</a><br /><br />',stripslashes(trim($obj->nom)), stripslashes(trim($obj->dep)), stripslashes(trim($obj->region)), nl2br(stripslashes(trim($obj->news))));
?>



Merci de vos conseils

Jack Bocar
jackbocar
le 23/01/2008 à 16:08
tableau 100%
Bonjour,

Je ne vois pas comment faire pour que mes tableaux soient toujours de la même tailles et quelque soit la taille du navigateur : 1024X728 ou 1024X758 ect...

Mon problème est que je travail avec des codes PHP orientés Objet du genre :

printf ("%s (%s)\n", $row[0], $row[1]);

Ce qui veux dire que <table width="100%"> est exclu, car interprété comme un argument de : printf

Merci de vos conseils

Jack Bocar
LoadingChargement en cours