-
Compteur de contenus
7 531 -
Inscrit(e) le
-
Dernière visite
Messages postés par captain_torche
-
-
Dans l'optique de la checkbox "j'ai lu et accepte les CGV", le formulaire ne peut s'envoyer, si la case n'a pas été cochée (dans le traitement, si la case n'est pas cochée, on ne traite pas le contenu du formulaire, et on affiche un message d'erreur).
Dans ces conditions, il n'est pas nécessaire d'enregistrer en base, le fait d'avoir coché la case, vu qu'à partir du moment où il existe une entrée dans la bdd, c'est que la case a été cochée.
-
Mais, ce que je ne comprends pas, c'est que le sujet du dernier message, comporte le numéro 001.
Ca implique qu'à chaque message posté, on modifie cette valeur dans tous les autres ?
Ou bien je n'ai rien compris ?
-
L'erreur de 'duplicate entry', survient lorsqu'un nouvel enregistrement prend la même valeur qu'un ancien, dans un champ spécifié unique.
-
Requête incomplète
dans SQL
0, parce qu'on prend à partir du premier caractère (noté 0), et 4, parce qu'on prend une longueur de 4 caractères.
-
Requête incomplète
dans SQL
if(substr($kkchose, 0, 4) == 'SJ-A')
-
Juste pour savoir : tu as posté tout ton code HTML dans le premier post ? Ou tu as volontairement omis les balises de fermeture </body> et </html> ?
-
Vu comment tu le présentes (un modèle de page fixe, avec différents contenus), je te conseillerai l'option langage dynamique (donc PHP).
Pour ce qui est de l'apprentissage, je te conseille de te concentrer au départ, sur le dialogue avec les bases de données.
-
Wondercolchette : faire un site sans menu, c'est comme faire une autoroute sans panneau. Il faut que depuis chaque page de ton site, le visiteur puisse accéder au moins aux catégories les plus importantes, sans quoi tu risques de le perdre.
-
C'est tout simplement parce que ton DIV est vide: n'ayant pas de contenu, il n'a pas de hauteur.
Il suffit juste que tu lui spécifies une hauteur (avec le paramètre height), pour que ton image apparaisse en entier.
-
Arguments imbriqués
dans PHP
Et sinon, pour le pourquoi du comment ça merde, je pense que $mois["01"], est totalement différent de $mois[1].
Dans le premier cas, tu as un index 'textuel', alors que dans le second, tu as un index numérique).
-
Non, ça ne le gène pas; c'est ce que j'utilise.
Mais, tu avais largement le temps de tester par toi-même
-
Juste pour chipoter : La fonction "mise à jour du score", ne tient pas compte du meilleur score total, mais juste de celui de la session.
-
Nombre d'opérations par seconde : 116687
Score obtenu : 2216
Puissance CPU : Très bonne
Sur un Athlon XP 1800+ (donc, 1.5 GHz).
D'ailleurs, je suis ne train de me poser une question (je n'y connais rien en flash) : la carte graphique n'est pas sollicitée, pour les gros effets d'affichage ? Tout se passe sur le processeur ?
-
Bon, pour ceux que ça intéresse, je poste l'intégralité de mon petit code, qui gère l'ajout de rubrique, la modification, la suppression et bien sûr, la réorganisation de l'ordre des rubriques.
Prérequis :
Avoir installé les fichiers js disponibles sur le site de script.aculo.us, dans le même répertoire que la page (index.php).
Avoir créé dans sa base de données, une table 'rubriques', contenant les champs 'id', 'numero', et 'nom'.
CREATE TABLE `rubriques` (
`id` tinyint(4) NOT NULL auto_increment,
`numero` tinyint(4) NOT NULL default '0',
`nom` varchar(30) character set latin1 collate latin1_bin NOT NULL default '',
PRIMARY KEY (`id`),
KEY `numero` (`numero`)
)La page doit s'appeler 'index.php' (mais comme tout le reste, c'est modifiable).
<?php
// Connexion à la base
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('Tests',$db);
// Ajout d'une rubrique dans la base
if(isset($_POST['ajout']) && !empty($_POST['nom'])) {
$sql_max_rubrique = "SELECT MAX(numero) FROM rubriques";
$req_max_rubrique = mysql_query($sql_max_rubrique);
$max_rubrique = mysql_result($req_max_rubrique, 0);
$rubrique = $max_rubrique+1;
foreach($_POST as $cle => $valeur)
$$cle = mysql_real_escape_string($valeur);
$sql_rubrique = "INSERT INTO rubriques VALUES ('', '$rubrique', '$nom')";
mysql_query($sql_rubrique);
header('location: index.php');
}
// Mise à jour de l'ordre des rubriques
if(isset($_GET['new_order'])) {
$id = array();
$sql_ids = "SELECT * FROM rubriques";
$req_ids = mysql_query($sql_ids) or die(mysql_error());
while($ids = mysql_fetch_assoc($req_ids))
$id[$ids['numero']] = $ids['id'];
$tab = explode(',',$_GET['new_order']);
$numero = 1;
foreach($tab as $valeur) {
$sql_tab = "UPDATE rubriques SET numero = $numero WHERE id = ".$id[$valeur];
mysql_query($sql_tab) or die(mysql_error());
$numero++;
}
header('location: index.php');
}
// Suppression d'une rubrique, mise à jour des numéros des rubriques supérieures
elseif(isset($_GET['suppr'])) {
$sql_suppr = "DELETE FROM rubriques WHERE numero = ".$_GET['suppr'];
mysql_query($sql_suppr);
$sql_update = "UPDATE rubriques SET numero = numero-1 WHERE numero > ".$_GET['suppr'];
mysql_query($sql_update);
header('location: index.php');
}
if(!isset($_GET['modif'])) {
$nom_modif = '';
$bouton = array('Ajouter', 'ajout', 'Ajout');
}
// Affichage des infos d'une rubrique pour modification
else {
$sql_modif = "SELECT * FROM rubriques WHERE numero = ".$_GET['modif'];
$req_modif = mysql_query($sql_modif);
$nom_modif = mysql_result($req_modif, 0, 'nom');
$id_modif = mysql_result($req_modif, 0, 'id');
$bouton = array('Modifier', 'modif', 'Modification');
}
// modification du nom d'une rubrique
if(isset($_POST['modif']) && !empty($_POST['nom'])) {
foreach($_POST as $cle => $valeur)
$$cle = mysql_real_escape_string($valeur);
$sql_modif = "UPDATE rubriques SET nom = '$nom' WHERE id = $id";
mysql_query($sql_modif);
header('location: index.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Test scriptaculous</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>
<script type="text/javascript">
function go(expr) {
var reg = new RegExp("(&)", "g");
var reg2 = new RegExp("[^0-9,]", "g");
var liste1 = expr.replace(reg, ",");
var liste = liste1.replace(reg2, "");
document.location = ('index.php?new_order='+liste);
}
</script>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
body {
font-family: Tahoma;
}
body > a {
display: block;
text-align: center;
width: 150px;
margin-left: 50px;
padding: 5px;
border: 1px solid #DDD;
text-decoration: none;
color: #7A0C00;
font-weight: bold;
background-color: #EFEFEF;
font-size: 11px;
}
form {
margin: 20px;
}
.dragdrop {
width: 150px;
list-style-type: none;
margin: 20px 50px;
}
.dragdrop li {
border: 1px solid #DDD;
color: #AAA;
background-color: #EFEFEF;
margin: 2px;
padding: 2px;
padding-left: 10px;
font-weight: bold;
cursor: move;
clear: both;
font-size: 11px;
}
.dragdrop li .liens {
display: block;
position: absolute;
top: 0px;
right: 0px;
}
.dragdrop li .liens a {
text-decoration: none;
color: #7A0C00;
font-size: xx-small;
padding-left: 2px;
}
fieldset {
width: 250px;
border: 1px solid #AAA;
background-color: #EFEFEF;
padding: 10px;
}
legend {
color: #7A0C00;
font-size: 11px;
font-weight: bold;
padding: 2px 10px;
border: 1px solid #AAA;
background-color: #EFEFEF;
}
input {
border: 1px solid #7A0C00;
color: #7A0C00;
}
</style>
</head>
<body>
<ul class="dragdrop" id="dragdrop">
<?php
$sql_liste = "SELECT * FROM rubriques ORDER BY numero ASC";
$req_liste = mysql_query($sql_liste);
while($liste = mysql_fetch_assoc($req_liste)) {
?>
<li id="menu_<?=$liste['numero']?>">
<?=$liste['nom']?>
<span class="liens">
<a href="index.php?modif=<?=$liste['numero']?>" title="Modifier">
[M]
</a>
<a href="#" title="Supprimer" onclick="if(confirm('Êtes-vous sûr de vouloir supprimer <?=$liste['nom']?> ?')) { window.location = 'index.php?suppr=<?=$liste['numero']?>'; }">
[X]
</a>
</span>
</li>
<?php
}
?>
</ul>
<a href="#" onClick="go(Sortable.serialize('dragdrop'))">Valider le nouvel ordre</a>
<script type="text/javascript" language="javascript">
Sortable.create('dragdrop');
</script>
<form name="test_insert" action="index.php" method="post">
<fieldset>
<legend><?=$bouton[2]?> d'une rubrique</legend>
<input type="text" name="nom" value="<?=$nom_modif?>" />
<?php
if(isset($_GET['modif']))
echo '<input type="hidden" name="id" value="'.$id_modif.'" />';
?>
<input type="submit" name="<?=$bouton[1]?>" value="<?=$bouton[0]?>" />
</fieldset>
</form>
</body>
</html>Amusez-vous bien !
-
Je pense qu'avant d'aller plus loin, il va te falloir des notions de base en PHP.
Tu peux trouver des tutos très bien faits sur le site du Zéro, ou bien, tout aussi efficaces, mais présentés d'une manière bien plus austère, sur phpdebutant.
-
Et sinon, heu ...
C'est quoi la chromie ?
-
Pour le footer en bas de page, ça peut être arrangé en CSS :
#footer {
position: absolute;
bottom: 0px;
} -
Tant qu'à faire, tu peux expliquer tes parades, ça permettra à quelqu'un dans le même cas que toi, de trouver la réponse plus vite.
-
Bon, j'ai réussi à m'en sortir :
Donc, après avoir copié les fichiers disponibles sur le site de script.aculo.us, et les avoir appelés dans ma page :
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>J'ai créé ma liste, de façon très simple :
<ul class="dragdrop" id="dragdrop">
<li id="menu_1">Element 1</li>
<li id="menu_2">Element 2</li>
<li id="menu_3">Element 3</li>
<li id="menu_4">Element 4</li>
<li id="menu_5">Element 5</li>
</ul>Petites explications, à ce stade :
L'id de la liste, servira à l'identifier pour l'initialisation du comportement.
Les id des éléments de liste sont indispensables, et doivent être de la forme toto_x, où toto est le texte qu'on veut, et x est incrémenté à chaque élément.
Ensuite, il suffit d'initialiser le comportement sur la liste :
<script type="text/javascript" language="javascript">
Sortable.create('dragdrop');
</script>A ce stade, on a déjà une liste fonctionnelle (libre à vous de la styler), avec le comportement de base.
Ensuite, on crée le bouton/lien, qui permettra de récupérer le nouvel ordre de la liste :
<a href="#" onClick="go(Sortable.serialize('dragdrop'))">Valider</a>
On obtiendra, dans la fonction go (que je décris juste en-dessous), quelque chose du genre :
dragdrop[]=1&dragdrop[]=2&dragdrop[]=3&dragdrop[]=4&dragdrop[]=5
Avec l'ordre défini selon votre manipulation de la liste.
Il faut donc, dans la fonction go, supprimer ce qui nous est inutile (je pars dans l'optique que je veux récupérer quelque chose de ressemblant à '1,2,3,4,5')
J'ajoute donc dans le head de ma page, la fonction JavaScript suivante :
<script type="text/javascript">
function go(expr) {
var reg = new RegExp("(&)", "g");
var reg2 = new RegExp("[^0-9,]", "g");
var liste1 = expr.replace(reg, ",");
var liste = liste1.replace(reg2, "");
document.location = ('index.php?new_order='+liste);
}
</script>La première variable (reg), est une expression régulière qui recherche tous les caractères amperstand (&).
La seconde (reg2), est également une expression régulière qui recherchera toutes les chaînes de caractères n'étant pas des chiffres, ou une virgule.
On remplace ensuite tous les amperstand par des virgules.
On remplace ensuite tous les caractères non-décimaux ni virgules, par une chaîne vide (on les efface).
On obtient donc la valeur recherchée (soit 1,2,3,4,5), qu'on passe en argument GET en appelant la page de traitement.
Ensuite, on pourra traiter la variable avec le langage désiré (PHP, par exemple).
-
Ben, ca serait pas du PHP, à la base.
Juste du javascript qui génèrerai un array, que je transmettrai à une page de traitement PHP.
-
Sinon, est-ce que le self.close(), ne permettrait pas de ne fermer que le document courant (plutôt que risquer de fermer la fenêtre entière) ?
-
Ben, en fait c'est pas très compliqué à mettre en oeuvre.
Je finis la sérialisation au changement d'ordre, et je te fais un petit tuto.
-
C'est juste le côté fonctionnel que je recherche (c'est pour une interface d'admin)
Donc, je bidouille un peu pour m'affranchir des effets visuels superflus.
-
C'est exactement ça (c'est fou !), mais je m'en sors pas avec l'ASP ...
[EDIT] : c'est bon, j'ai réussi à m'en sortir. Je regarderai pendant le week-end, comment récupérer le nouvel ordre.
Comptabilisation d'entrées difficile
dans SQL
Posté
Et en faisant un SELECT DISTINCT COUNT(*), ça marche ?